工作流引擎
出自 MBA智库百科(https://wiki.mbalib.com/)
工作流引擎(Workflow Engine )
目錄 |
工作流引擎是指workflow(工作流)作為應用系統的一部分,併為之提供對各應用系統有決定作用的根據角色、分工和條件的不同決定信息傳遞路由、內容等級等核心解決方案。
例如開發一個系統最關鍵的部分不是系統的界面,也不是和資料庫之間的信息交換,而是如何根據業務邏輯開發出符合實際需要的程式邏輯並確保其穩定性、易維護性(模塊化和結構化)和彈性(容易根據實際業務邏輯的變化作出程式上的變動,例如決策權的改變、組織結構的變動和由於業務方向的變化產生的全新業務邏輯等等)。 Workflow 引擎解決的就是這個問題:如果應用程式缺乏強大的邏輯層,勢必變得容易出錯(信息的路由錯誤、死迴圈等等)。
就好比一輛汽車,外表做得再漂亮,如果發動機有問題就只是一個擺設。應用系統的彈性就好比引擎轉速方面的性能,加速到100 公裡需要1 個小時(業務流程發生變動需要進行半年的程式修改)還能叫好車嗎?引擎動不動就熄火(程式因為邏輯的問題陷入死迴圈)的車還敢開嗎?
Workflow 關註的是如何縮短流程閑置時間,從而提高企業的業務處理能力並使企業能夠關註於真正對企業有意義的增值業務上。從建立企業神經系統的角度也許更能理解兩者的區別。傳統軟體不能解決工作流的問題,例如ERP關註的是企業的資源配置,但不可能解決資源傳輸過程中的損耗和降低傳輸(流程)的成本;同樣workflow也不能完全解決傳統管理軟體所能解決的問題,例如對生產管理的MRP 系統所能解決的生產過程式控制制通過workflow很難實現。但一個好的傳統軟體如果希望能自動化地在整個企業中應用起來,必須有一個強大的邏輯層,用以解決信息傳遞的邏輯判斷和自動流轉,這個時候就需要workflow的平臺。
今天的很多優秀的工作流解決方案集成了簡訊息、頁面服務、目標管理、文件管理和其他一些操作系統才提供的服務。
工作流參考模型確定了工作流管理系統的基本架構。該架構是開發工作流軟體時應當採納的系統模型,當然,一個工作流管理系統也可以不遵循這個模型標準,或只實現這個模型的一部分,但事實證明,這個模型結構是目前最為合理的。
系統的核心部分是工作流引擎,引擎是驅動流程流動的主要部件,它負責解釋工作流流程定義,創建並初始化流程實例,控制流程流動的路徑,記錄流程運行狀態,掛起或喚醒流程,終止正在運行的流程,與其他引擎之間通訊等等工作。WfMC沒有針對引擎的實現提供具體的標準,因為對引擎做過多的約束並沒有多大的現實意義。
一個工作流管理系統可以包含一個或多個引擎,並通過API向外部提供五個方面的功能服務,這些功能分別為:
- 介面1-流程定義的導入導出
- 介面2-同客戶端應用程式和工作列表處理程式之間的交互
- 介面3-軟體工具和應用程式的調用
- 介面4-不同工作流管理系統之間的協同工作
- 介面5-管理和監視功能
介面1-流程定義的導入導出
許多不同廠商提供的工具可以進行工作流流程的分析、建模、描述和歸檔等工作。這些工具需要識別公共的流程交換格式,以支持在這些不同的產品之間傳送工作流程流程定義。介面1便定義了這樣的交換格式。此外,介面1還定義了設計環境與運行環境之間交換的規範,以使不同的建模工具產生的流程定義可以輸入到不同的工作流產品的運行環境中。 為了提供一個訪問和描述工作流定義的公共方法,需要引入一個工作流元數據模型(meta-data Model),這個模型確定了流程定義中用到的一般的實體,這些實體都有不同的屬性,不同廠商開發的工具可以根據公共的交換形式向工作流運行環境傳送這些模型,傳送可以通過API實現,也可以通過批量(Batch)傳送實現。
元模型提供了流程定義交換中用到的基本的實體及其屬性,這些都是工作流流程的組成部分,這些實體包括:
- 工作流流程定義
- 工作流流程活動
- 過渡信息(Transition Information)
- 工作流參與者
- 組織模型
- 工作流應用程式
- 工作流相關類型
- 工作流相關數據
- 系統和環境數據
- 數據類型和表達式
流程定義的交換
在不同的系統之間傳遞流程定義數據可能需要不同的機制,但在所有的情況下,流程定義數據的表達必須是一致的,這些表達包括一些公共的對象、關係及其屬性。
介面2與介面3:
工作流管理系統必須提供同用戶之間交互的通道,以便用戶參與到系統的運行中。介面2主要完成這方面的功能。
WfMC在關於介面2 的規範中定義了工作流管理系統必須提供的類型、數據結構、API和錯誤代碼,並以C語言頭文件的形式提供。介面2所提供的功能大致可以分為一下五個方面:
* 1、 會話的建立和與撤銷;
- 2、 獲取工作流流程定義及狀態;
- 3、 工作流流程實例的操作,如創建、掛起、終止流程,獲取和設置流程屬性等;
- 4、 工作流活動實例的操作,如獲取和設置活動的屬性,改變活動的狀態等;
- 5、 工作列表(worklist)及工作項(workitem)的操作,如獲取工作列表,處理工作項等。
通過這些功能,用戶可以完成與工作流管理系統之間交互的所有任務:登錄系統、打開自己的工作列表、處理自己的工作任務、將完成的任務提交給系統、將自己的任務轉交給其他用戶等等。
工作流系統在運行過程中有時需要調用外部應用程式,以完成系統不能完成的工作(比如,發送Email或傳真,掃描文件等),或者與其他系統集成到一起。此時可以通過介面3來完成。
介面3的功能同介面2的功能大部分是相同的,因此,這兩個介面有融合的趨勢。介面3主要規定了調用外部應用程式的函數規範,以及外部應用程式返回數據的格式。
介面4-不同工作流管理系統之間的協同工作
在企業級的工作流系統中,流程往往需要跨越多個伺服器或系統,比如應用於跨國公司或大型集團公司的工作流系統經常會有這種的需求,此時就需要伺服器或系統之間進行通訊,交換流程控制信息和流程定義等數據,以實現流程跨地域運行。WfMC在規範中以C函數的形式提供了這些控制的定義,其中包括以下幾個方面的功能:
- 1、創建流程實例;
- 2、獲取流程實例狀態;
- 3、獲取和設置流程實例屬性;
- 4、啟動或終止流程實例;
- 5、改變流程實例的狀態;
- 6、改變流程實例的屬性;
- 7、更新流程實例。
伺服器或系統之間信息交換的格式有多種,例如:文件、資料庫表、E-mail或直接通過網路傳送的數據流等等。
介面5-管理和監視功能
此介面提供給用戶管理和監控系統的運行狀態、查看系統運行的歷史記錄的功能。WfMC在此介面的規範中定義了各種審計信息的數據格式,這些格式包括:
- 1. 流程實例(Process Instance)審計信息:包括創建、啟動流程實例和子流程實例的審計數據;流程實例狀態變化的審計數據;流程實例屬性變化的審計數據;
- 2. 活動實例(Activity Instance)審計信息:包括活動實例狀態變化的審計數據;活動實例屬性變化的審計數據;
- 3. 工作項(Workitem)審計信息:包括工作項狀態變化的審計數據;工作項分配合重新分配的審計數據;工作項屬性變化的審計數據;
- 4. 遠程操作審計信息:包括開始和停止會話(Session)的審計數據;遠程創建流程實例和遠程改變流程實例狀態的審計數據;遠程獲取和設置流程實例屬性的審計數據;會話管理的審計數據;
- 5. 流程定義審計信息;
- 6. 擴展的審計信息及專用的審計信息。
這些審計數據在系統運行時刻由系統自動記錄在資料庫或文件中,可通過系統提供的API進行統計和查詢,或者通過系統工具導出到系統外部。
另外,此介面還要提供系統管理與流程式控制制的功能,如:系統流程數據的備份和恢復,用戶管理,流程管理等等。
通過這五個介面,工作流管理系統可以同外部的軟體工具進行交互,這些工具可以由同一廠商提供,也可以由不同的廠商提供,但前提是這些工具都必須遵循WfMC的規範。用戶也可以有充分的選擇空間來決定哪一廠商的產品,或者自己開發屬於哪一個介面的工具。
這五個介面一般通過API的形式提供給用戶或軟體開發商,這些API稱為WAPI(Workflow API),也有廠商將API封裝成組件形式提供,以簡化開發難度、降低成本並提高效率。
可以用下麵的圖來表示這五個介面的作用:
工作流引擎主要功能之一幫助用戶適應流程多變性的需要的,給客戶帶來價值就是在於流程發生變化時的易維護性和低成本,工作流引擎就像是汽車的發動機,一個汽車即使再漂亮,沒有強勁的引擎支撐也能難成為一輛好車,工作流引擎的幾個關鍵因素如下:
- 1、 適合東方流程特性、易用的流程設計器
包括各種環節特性、路徑定義、時限定義、流程關聯、參與人員(主辦、協辦、閱知)、表單許可權、各種特殊許可權等等。各種流程特性可以用工具通過簡單易用的方式定義出來。
- 2、 高性能、高穩定性的流程引擎
如果工作流引擎只是用於少數人玩玩的情況,大可不必那麼嚴謹,工作流引擎對於大規模數據量、併發訪問、各種流程邏輯的支撐能力非常關鍵,因此高性能和高穩定性是非常關鍵的。E8.Net工作流引擎的高性能和高穩定性在大量實際的案例中得到了證實。
- 3、 工作流應用的快速開發架構
單純的工作流引擎對於用戶來說是沒有意義的,就像司機拿著發動機不知道要做什麼一樣,因此好的工作流引擎的關鍵因素之一是提供終端應用系統的快速開發能力,這樣對於軟體提供者和軟體應用者是雙贏的局面。
- 4、 強大的業務擴展能力
工作流引擎幫助應用軟體提供者很好的處理了流程邏輯的實現,可是如何支撐業務能力的擴展也是關鍵因素之一,比如:流程設計是由用戶通過流程設計器去定義的,那如何實現各種未知流程下的統計信息呢?比如E8.Net工作流曾經開發過的物流配送系統,用戶定義了各種未知流程同時又能統計各個配送點當月的配送量。
好的工作流引擎的關鍵因素遠不止這幾點,目前工作流引擎產品層出不窮,可是真正的區別是在於末端需求的實現能力和實現成本。
很明確的指出了工作流的相關點,受益頗多