面向OA系統的工作流引擎研發

2021-03-10 00:57:15 字數 4761 閱讀 2404

由於企業業務流程的頻繁變更,導致業務流程的管理和控制出現了兩個複雜化:一是業務流程處理複雜化;二是參與管理人員許可權複雜化。然而,傳統的辦公自動化(officeautomation,oa)系統不能適應靈活多變的業務流程處理方式、難以進行許可權控制,互動性、協作性明顯不足。

因此,需要建立乙個易於動態修改辦公業務流程的,便於許可權控制的、支援協同辦公的oa系統。

本文解決的核心問題是業務處理流程的可靈活定製性,以及操作許可權的繫結性。以工作流引擎為基礎,以xml語言描述的業務處理流程為依據,使流程的流動、互動、控制、管理成為機動可變的過程,並通過對各種角色的定義以及對各種角色許可權的定義,把許可權控制與辦公人員聯絡起來。

1 工作流引擎設計

工作流引擎主要解決複雜業務流程靈活定製和方便更改的問題。引擎的作用相當於乙個業務流程管理器,它以乙個軟體元件(或者構件)的形式執行在使用它的業務應用中。在oa系統中使用工作流引攀技術,可以實現業務流程與應用程式的分離。

oa系統通過工作流引擎集中管理業務流程包含的所有過程,引擎為業務流程提供執行環境,並馭動業務流程中各個過程的自動執行。所有的業務流程都在引擎的管理、監控卜執行。當業務流程變更時使用者不必修改應用程式,只修改業務流程模型就可以解決流程變更的問題,從而實現了業務流程的靈活定製。

1.1 引擎設計思路

工作流引擎的設計是從夠用、靈活和低成木的設計原則出發,不追求工作流引擎的功能的完備和複雜,只實現其中必不可少的功能和特徵。基於上述設計原則,引擎的設計主要從以下幾個方面考慮:

(1)引擎支援順序、分支、併發、迴圈、同步、非同步流程的流轉;在分支上可以定義條件,實現按條件自動流轉,條件轉移之間還可設定邏輯關係;在併發流轉中,多個活動節點可以同時啟用。

(2)使用者之間相互協作,交換資料,從而提高工作流引擎處理業務流程的靈活性和適用範圍。

(3)如果引擎狀態異常,可對引擎進行重新啟動,如果重新啟動幾次後仍然異常,發訊號給備份伺服器啟動引擎,載入原有引擎工作狀態,保證關鍵業務不被中斷。

1.2 引擎排程演算法

本文採用基於優先順序的排程演算法,優先順序分派策略作為乙個函式應用於工作流引擎中。任務的優先順序通常是由乙個或多個特徵引數來確定,特徵引數包括:任務提交時間、任務在最壞情況下無中斷執行所需的處理器時間、任務截止日期。

執行排程演算法函式後所有提交的任務組成乙個任務表佇列,在實施排程時,優先順序最高的任務在隊首,優先順序最低的任務在隊尾。採用優先排程優先順序最高的任務的演算法,能提供確定性的服務質量保證,使系統能夠在負載過重情況下保證優先等級高的任務優先排程。排程演算法的步驟如下:

(1)遍歷任務表佇列;

(2)計算任務的優先順序;

(3)確定任務的優先等級後,對任務表佇列重新排序;

(4)選擇優先順序最高的任務進行處理;

(5)任務處理完畢,提交;

(6)轉至步驟(1),迴圈執行該排程演算法。

1.3 引擎功能設計

工作流引擎作為oa系統的核心部件,其主要功能包含:解釋流程定義的業務模型;建立、解釋、執行和控制流程例項,管理其執行過程;根據流程定義和工作流相關資料為流程例項的執行進行導航;根據任務之間的關聯和任務的執行條件,決定並行或序列執行後續任務;確定任務專案,實現使用者意圖,提供介面,支援使用者互動;與外部資源互動,維護工作流控制資料和工作流相關資料;監控流程例項的運**況,對異常的流程進行處理。

引擎是流程處理的排程中心和資源分配中心。採用xml語言把實際業務流程描述成計算機可識別的工作流程,xml文件的內容包含預先定義好的任務,以及任務執行順序,執行規則,執行角色等資訊。控制中心負責接受使用者傳送的任務請求,根據任務型別、任務優先順序呼叫相應的處理模組完成與本次任務相關的操作並將結果返回;流程直譯器負責完成流程檔案的解析,然後把解析出來的資料儲存到資料庫中;任務管理負責與流程參與者互動,通過任務管理對任務表進行管理、控制、維護:

任務指派負責根據任務的型別確定執行此任務的群體;流轉控制負責讀取流程例項轉換的條件,確定流程例項的狀態;路由選扦負責辨別流程例項的狀態,選擇下乙個執行的任務;異常處理負責監控系統內流程例項的運**況,通過人工和白動處理相結合的方式,使工作流重新恢復到正常流程或預期狀態。

1.4 引擎功能實現

工作流引擎的功能實現採用物件導向的方法,將引擎具有的功能分成各個方面,進行開發。引擎主要包含:workflowcontainermanage類,workflowfunctionmanage類,workflowoperation類,workflowexceptionhandel類。

把這些類封裝成元件,相互配合實現工作流引擎的功能。

類的功能及其主要方法:

workflowcontainermanage類:完成控制中心的功能。負責接受外部介面傳送請求,根據請求的型別呼叫其它類中的方法完成與請求相關的操作,並返回結果。

startworkflowservice()啟動流程例項,並獲得例項資訊;

loadworkflowservice()載入己經存在的流程例項;

stopworkflowservice()終止流程例項;

disposeworkflowservice0釋放流程例項占用的資源;

extemaldataexchangeservice()外部資料互動;

workflowfunctionmanage類:完成任務管理、任務分配、流程控制、路由選擇的功能。負責流程例項建立,流程例項狀態轉換,流程例項相關資料維護,儲存系統所涉及的所有流程例項,管理流程例項。

流程例項狀態包含:start、suspend、wait、resume、abort、end。任務狀態包含:

run、lock、***mit、camplete。

creatworkflowlns()建立乙個流程例項,初始化所有資料;

appendworkflowlns()新增流程例項;

removeworkfiowlns()移除流程例項;

getworkflowlns0根據流程名稱獲取流程例項;

getinsstatelnfo()獲得流程例項的狀態資訊;

getaii workflowlns0得到所有工作流例項的集合;

starttask()根據任務的優先順序,啟動乙個任務;

***mittask()提交乙個任務;

gettaskpr1()獲取乙個任務優先順序;

taskstate()根據狀態,初始化任務的所有資料;

taskgetstate()根據狀態名和當前使用者角色獲取乙個任務狀態;

gettasktnextstate()根據任務當前狀態,獲取任務下乙個狀態;

i**atch()判斷當前角色是否與該狀態要求的角色匹配;

getusergrrolelnfo()獲取指定狀態的使用者或角色的資訊;

nexttaskname()根據當前的任務的狀態獲取下乙個任務名稱;

workflowooeration類:主要完成流程直譯器的功能,定義一些與使用者相關的操作。

getworkflowinfo()讀取工作流配置檔案,獲取流程繫結的頁面流資訊;

getinsinfo()獲取使用者指定流程狀態資訊;

getali***platetask()獲取所有已經完成的任務;

gmroleright()獲取角色的許可權;

workflowexceptionhandel類:主要完成異常處理功能;異常處理方式主要有掛起、終止等操作。

workflawlnsstatemonitor()流程例項執行狀態監控;

warkflowinsqperationmonitor()流程例項操作監控;

workflowin***ceptionhandel()流程異常處理;

以上是類的功能及其主要方法的簡要介紹。其中workflowcantainermanage類是引擎的核心,通過使用extemaldataexchangeservice方法與使用者進行互動。、,並返回執行結果。

2 基於工作流引擎的oa系統

一次業務流程的充成通常需要在乙個部門的多名使用者之間或多個部門的不同使用者之間協作互動進行,通過設定使用者的訪問與操作許可權,將需要協作互動完成的任務傳送到協作人的工作區,從而實現業務流程的協作互動處理。基於工作流引擎的oa系統的設計採用二層體系架構,元件化的思想。這二層分別是:

客戶層、業務處理層、資料層。系統架構。

oa系統通過呼叫工作流引擎對文件的流動、互動、控制、管理進行動態管理,並隨時跟蹤和監督文件處理過程,實現部門之間、人員之間的協作閣。工作流引擎的作用不僅僅是處理流程,使資訊從乙個地方流向另乙個地方,而且管理這些規則與流程的運作,工作組成員間依據一組己定義的規則及己制定的共同目標交換文件或與任務相關的資訊。

流程定義管理對業務流程進行集中管理,首先設計業務流程的數學模型,然後用xml語言進行描述,最後生成該業務流程的xml文件。本文採用xml語言定義了流程描述模式(schema)。在xml schema中,通過對元素的定義和元素關係的定義來實現對整個流程定義文件性質和內容的定義,流程定義每個步驟的描述只有符合xml schema的要求,才能被工作流引擎直譯器解析。

該模式描述了任務狀態名稱、任務名稱、執行任務的角色、任務的下乙個狀態名稱等資訊。使用者可以根據實際情況新增、修改、刪除、查詢描述某業務流程的xml文件,從而可以對業務流程進行靈活的定製,實現了業務過程邏輯與資訊支撐系統的分離。

傳統的許可權控制是土體與客體直接發生關係,主體能對客體直接訪問,但不能控制主體對客體的間接訪問。本文採用基於角色的許可權控制,引入中間介質角色,將角色作為使用者與許可權聯絡的中間橋梁,使用者通過被授予一定的兔色而獲得相應許可權,從而大大簡化許可權管理,客服了傳統許可權控制的不足,是一種高效靈活的許可權控制策略。系統將角色的許可權與辦公人員繫結,使用者登入後,依據角色的不同,系統所提供的功能也不相同。

流程處理中角色和工作流狀態接點繫結,通過工作流自身的邏輯對許可權驗證後,根據實際的流程繼續往下執行。

任務表:等待使用者處理的由仟務項組成的佇列。

系統應用元件:資訊的處理、儲存和檢索;系統管理、使用許可權設定等操作。

資料統計分析:對文件資料中心進行資料分析、統計彙總等操作。

工作流引擎

百科名片 所謂工作流引擎是指workflow作為應用系統的一部分,並為之提供對各應用系統有決定作用的根據角色 分工和條件的不同決定資訊傳遞路由 內容等級等核心解決方案。目錄簡介 1.工作流引擎 workflow engine 2.工作流解決方案與傳統管理軟體的關係 3.workflow的優勢 詳細介...

基於Web Service的工作流引擎的研究

近年來,由於資訊化的飛速發展,傳統的工作流技術在系統的整合性和復用性以及異構平台的通訊中都難以滿足企業資訊化的需求,web service技術的出現提供了解決這些問題的途徑。將web service技術與工作流技術相結合,可以解決傳統工作流系統中互操作性難的問題,同時推進了工作流技術的研究和實際的應...

優秀工作流引擎功能標準

工作流引擎 workflow engine 編輯 工作流引擎概述 工作流引擎是指workflow 工作流 作為應用系統的一部分,並為之提供對各應用系統有決定作用的根據角色 分工和條件的不同決定資訊傳遞路由 內容等級等核心解決方案。例如開發乙個系統最關鍵的部分不是系統的介面,也不是和資料庫之間的資訊交...