JBPM1-了解和認(rèn)識(shí)工作流系統(tǒng)

工作流概念

工作流管理聯(lián)盟(WfMC) 對(duì)于“工作流” 這個(gè)概念的經(jīng)典定義為: 全部或者部分由計(jì)算機(jī)支持或自動(dòng)處理的業(yè)務(wù)過(guò)程.

工作流管理系統(tǒng)(Workflow Management System, WFMS), 它通過(guò)執(zhí)行計(jì)算機(jī)的流程定義去支持一批專門設(shè)定的業(yè)務(wù). 它被用來(lái)支持、管理和執(zhí)行工作流程.

因此, 對(duì)于我們, 工作流管理系統(tǒng)的目標(biāo)是: 管理工作的流程以確保工作正確的時(shí)間被期望的人員所執(zhí)行——在自動(dòng)化進(jìn)行的業(yè)務(wù)過(guò)程中 "插入" 人工的執(zhí)行和干預(yù), 可以說(shuō)正是工作流管理系統(tǒng)的價(jià)值所在, 也是工作流系統(tǒng)開(kāi)發(fā)者的主要工作內(nèi)容.


如何從一個(gè)開(kāi)發(fā)者的角度看工作流技術(shù)

使用工作流技術(shù)體系開(kāi)發(fā)軟件系統(tǒng)對(duì)開(kāi)發(fā)者又有什么好處呢?

舉個(gè)例子說(shuō)明.

現(xiàn)在我們來(lái)看一個(gè)簡(jiǎn)單的業(yè)務(wù)——訂貨流程:

  1. 客戶提交采購(gòu)訂單
  2. 業(yè)務(wù)員執(zhí)行訂單處理
  3. 如果缺貨, 轉(zhuǎn)工廠生產(chǎn)
  4. 倉(cāng)庫(kù)發(fā)貨
  5. 物流發(fā)貨

不使用工作流技術(shù), 從頭開(kāi)始開(kāi)發(fā)這個(gè)訂購(gòu)流程的業(yè)務(wù)系統(tǒng), 我們需要:

  1. 每個(gè)活動(dòng)節(jié)點(diǎn)都要開(kāi)發(fā)交互界面和后臺(tái)處理程序.
  2. 每次活動(dòng)的流轉(zhuǎn)都需要硬性判斷下一步活動(dòng)節(jié)點(diǎn)及其處理人.
  3. 每次操作都需要維護(hù)業(yè)務(wù)數(shù)據(jù)和流程的一些相關(guān)數(shù)據(jù).
  4. 一旦業(yè)務(wù)流程, 就需要大量的更改程序, 甚至重新開(kāi)發(fā)以適應(yīng)新的需求.
  5. 監(jiān)視、控制、分析流程處理情況的應(yīng)用還需要單獨(dú)開(kāi)發(fā), 且成本不低.

結(jié)果這個(gè)業(yè)務(wù)系統(tǒng)可能是如下圖所示的情況, 請(qǐng)注意這不包括監(jiān)視器、控制、分析流程的部分.


下面我們看看使用工作流技術(shù)實(shí)現(xiàn)上述的訂貨流程將會(huì)是什么情況, 如下圖:

很明顯, 位于右側(cè)的工作流管理系統(tǒng)接管了所有訂貨業(yè)務(wù)在流程方面的定義和執(zhí)行, 這包括:

  1. 使用專門的 "流程數(shù)據(jù)" 系統(tǒng), 維護(hù)所有涉及流程傳遞的數(shù)據(jù).
  2. 提供 "流程設(shè)計(jì)" 工具, 幫助用戶定義訂貨流程的模型, 這一般都是基于圖形界面的.
  3. 工作流引擎作為工作流管理系統(tǒng)的核心, 負(fù)責(zé)解釋流程定義、管理流程數(shù)據(jù)、計(jì)算和驅(qū)動(dòng)流程實(shí)例的運(yùn)行.
  4. 工作流引擎提供眾多 API 供客戶端應(yīng)用程序或外部業(yè)務(wù)系統(tǒng)調(diào)用, 將特定的 "業(yè)務(wù)(例如: 訂貨)" 納入"流程" 的管理和控制之中, 從而實(shí)現(xiàn)工作流程管理和業(yè)務(wù)操作的完美結(jié)合.
  5. 工作流引擎還提供眾多 API 供流程的 "增值" 系統(tǒng)使用, 例如流程監(jiān)控系統(tǒng)可以使用工作流程引擎提供的 API 去監(jiān)視流程的執(zhí)行過(guò)程、掛起和恢復(fù)流程實(shí)例的運(yùn)行; 流程數(shù)據(jù)分析系統(tǒng)可以使用工作流引擎的 API 分析出工作完成的效率、業(yè)務(wù)流程的瓶頸等結(jié)果, 以便重組流程、優(yōu)化業(yè)務(wù).

綜上所述, 引入工作流技術(shù)對(duì)于技術(shù)開(kāi)發(fā)來(lái)說(shuō), 有如下好處:

  1. 降低開(kāi)發(fā)風(fēng)險(xiǎn)——通過(guò)使用諸如活動(dòng)、流轉(zhuǎn)、狀態(tài)、行為這樣的術(shù)語(yǔ), 使得業(yè)務(wù)分析師和開(kāi)發(fā)人員使用同一種語(yǔ)言交談成為可能. 優(yōu)秀的流程設(shè)計(jì)模型工具, 甚至能使開(kāi)發(fā)人員不必將用戶需求轉(zhuǎn)換為詳細(xì)設(shè)計(jì)文檔.
  2. 流程實(shí)現(xiàn)的集中統(tǒng)一——應(yīng)對(duì)業(yè)務(wù)流程經(jīng)常變化的情況, 使用工作流技術(shù)的最大好處是, 使業(yè)務(wù)流程的實(shí)現(xiàn)代碼, 不再散落在各式各樣的業(yè)務(wù)系統(tǒng)中.
  3. 加速開(kāi)發(fā)——開(kāi)發(fā)者不用再關(guān)注流程的參與者、活動(dòng)節(jié)點(diǎn)的銜接、流轉(zhuǎn)控制. 因?yàn)檫@些工作很多被工作流框架接管了. 因而開(kāi)發(fā)者開(kāi)發(fā)起來(lái)更快、代碼出錯(cuò)更少、系統(tǒng)更加容易維護(hù).
  4. 提升對(duì)迭代開(kāi)發(fā)的支持——如果系統(tǒng)中業(yè)務(wù)流程部分被硬編碼, 就不容易更改, 需求分析師就會(huì)花費(fèi)很大的精力在開(kāi)發(fā)前的業(yè)務(wù)分析中, 并且希望以此成功. 但可悲的是, 在任何軟件項(xiàng)目開(kāi)發(fā)中, 這都很少能實(shí)現(xiàn).
    工作流管理使得業(yè)務(wù)流程很容易部署和重新編排, 業(yè)務(wù)流程相關(guān)的應(yīng)用開(kāi)發(fā)可以以一種 "迭代/漸進(jìn)" 的方式推進(jìn), 也就是說(shuō)工作流在某種程度上支持 “需求分析不必一次完全成功”.

工作流管理系統(tǒng)參考模型

首先, 最重要的部分就是中間的工作流引擎, 可以說(shuō)他是整個(gè)工作流管理系統(tǒng)的心臟, 因?yàn)樗械墓ぷ髁鞴芾硐到y(tǒng)都要使用工作流引擎:

  1. 為執(zhí)行的流程實(shí)例解釋流程定義——這些流程定義一般都是由接口1獲得的.
  2. 組織調(diào)度流程的實(shí)例, 推進(jìn)工作流程的前進(jìn), 這包括條件流轉(zhuǎn)、分支聚合、子父進(jìn)程.
  3. 處理工作任務(wù)的分配、接收、提交等行為——無(wú)論是人工干預(yù)或自動(dòng)執(zhí)行的任務(wù), 都需要經(jīng)過(guò)工作流引擎和持久化.
  4. 管理調(diào)用其他的 4 個(gè)接口——這可能包括執(zhí)行工作流程定義的一些外部腳本.

工作流引擎做的工作就像心臟把血液不斷送到身體的各個(gè)部分一樣.


工作流管理系統(tǒng)5個(gè)部分

接口1——流程定義工具

前面提到過(guò)我們使用它來(lái)設(shè)計(jì)業(yè)務(wù)流程, 提供給工作流引擎來(lái)實(shí)例化運(yùn)行. 所謂的 "業(yè)務(wù)流程定義" 一般來(lái)說(shuō)就是一段 XML, 它一般遵循 XPDL標(biāo)準(zhǔn) BPEL標(biāo)準(zhǔn) 或其它廠商自定義的標(biāo)準(zhǔn).事實(shí)上可以把流程定義工具理解為一個(gè)產(chǎn)生 XML 的圖形化設(shè)計(jì)建模軟件.

接口2——工作流客戶端應(yīng)用

這很有意思, 當(dāng)業(yè)務(wù)流程設(shè)計(jì)好了 運(yùn)行起來(lái)了, 那么我們——"人類" 如何與工作流引擎交互呢?

這時(shí)候, 工作流引擎就通過(guò)接口 2, 為我們提供各種各樣的工作任務(wù)列表 工作表單 流程列表以及一些查詢功能.

我們通過(guò)這些接口應(yīng)用, 就可以填寫表單 處理任務(wù) 從而實(shí)現(xiàn)人與工作流引擎的溝通.

接口3——執(zhí)行外部應(yīng)用

工作流引擎通過(guò)這個(gè)接口去執(zhí)行一些外部的或面向?qū)iT職能領(lǐng)域的應(yīng)用程序.

例如財(cái)務(wù)系統(tǒng) 報(bào)表系統(tǒng)等, 讓第三方系統(tǒng)參與進(jìn)來(lái), 從而完成定義的工作流程.

同時(shí)我們也可以發(fā)現(xiàn)接口2 和接口 3 之間的界定有些模糊, 難道接口 2 提到的 "工作任務(wù)列表" 不能算是外部的應(yīng)用程序嗎?

沒(méi)錯(cuò)! 這個(gè)問(wèn)題確實(shí)存在, 這也就是為什么荷蘭工作流大師 Aalst 在其著作<工作流管理——模型 方法和系統(tǒng)> 中寫道 "建議每個(gè)應(yīng)用程序都有此 '應(yīng)用程序執(zhí)行服務(wù)' 打開(kāi)" 的原因, 他是在建議統(tǒng)一這兩個(gè)接口嗎? 總之, 接口3在標(biāo)準(zhǔn)化方面眾口不一.

接口4——其他工作流應(yīng)用接口服務(wù)

用來(lái)處理若干自治工作流管理系統(tǒng)之間的工作交換, 例如實(shí)例轉(zhuǎn)移 工作任務(wù)外包等. 事實(shí)上, WfMC 組織的初衷是想通過(guò)這個(gè)接口來(lái)連接各種不同的工作流引擎和系統(tǒng), 使他們?cè)谝粋€(gè)統(tǒng)一的標(biāo)準(zhǔn)下工作和交流.

想法是非常不錯(cuò)的, 但是, 由于種種原因吧, 作者認(rèn)為是商業(yè)利益的因素以及 WfMC 沒(méi)有強(qiáng)大到能 "號(hào)令江湖, 莫敢不從" 的地步, 所以到目前為止, 接口 4 基本不被支持, 也就是說(shuō), 各大廠商的工作流產(chǎn)品并不能用同一種語(yǔ)言對(duì)話.

但是, 隨著jbpm4 推出的 PVM——流程虛擬技術(shù)的發(fā)展, 接口4 的障礙也許能被打破.

接口5——管理和監(jiān)控工具

雖然很多工作流管理系統(tǒng), 特別是開(kāi)源工作流管理系統(tǒng)實(shí)現(xiàn)的最簡(jiǎn)單的部分就是這個(gè)接口, 但我認(rèn)為最能體現(xiàn)工作流管理系統(tǒng)在企業(yè)管理方面價(jià)值的就是這個(gè)部分, 它主要被用來(lái)搜集管理信息.

這包括諸如工作流系統(tǒng)功能管理工具, 流程實(shí)時(shí)監(jiān)控和控制工具, 以及工作效率分析和流程覆蓋面分析等各種商業(yè)智能工具, 這為提升企業(yè)的管理能力, 優(yōu)化重組企業(yè)的流程, 分析企業(yè)內(nèi)部的工作效率瓶頸等提供了重要的量化數(shù)據(jù)支持.


總結(jié)一下, 工作流管理系統(tǒng)參考模型的 5 大接口各自強(qiáng)調(diào)了什么?
接口1 —— 提供流程定義
接口2 —— 提供工作任務(wù)列表等客戶端應(yīng)用程序, 實(shí)現(xiàn)使用者與工作流引擎的溝通
接口3 —— 支持外部應(yīng)用程序參與工作流程
接口4 —— 支持不同工作流引擎系統(tǒng)間的連接
接口5 —— 提供監(jiān)控工具, 搜集管理信息

BPM

BPM 即業(yè)務(wù)流程管理, 其重點(diǎn)是通過(guò)建模, 自動(dòng)化, 管理和優(yōu)化流程, 來(lái)優(yōu)化公司業(yè)務(wù)的效率和效果.

BPM 打破了跨部門, 跨系統(tǒng)和跨用戶, 強(qiáng)調(diào)端對(duì)端的業(yè)務(wù)流程. BPM 系統(tǒng)運(yùn)行在公司的內(nèi)部和外部, 不僅員工, 客戶, 合作伙伴和提供商都能夠進(jìn)入該系統(tǒng). 同時(shí), 在公司內(nèi)部 BPM 的應(yīng)用系統(tǒng)還包含了提升業(yè)務(wù)可視水平和可預(yù)見(jiàn)水平的功能.

BPM 通常以 Internet 方式實(shí)現(xiàn)信息傳遞, 數(shù)據(jù)同步, 業(yè)務(wù)監(jiān)控和企業(yè)流程的持續(xù)升級(jí)和優(yōu)化. 從這方面來(lái)說(shuō), BPM 不但涵蓋了 "傳統(tǒng)工作流" 的流程傳遞, 流程監(jiān)控的范濤, 而且突破了 "傳統(tǒng)工作流" 技術(shù)應(yīng)用范圍的瓶頸.

BPM 同樣需要流程定義語(yǔ)言描述流程. 流程定義語(yǔ)言可以將企業(yè)中的各種業(yè)務(wù)流程表示成一種格式化的模型.

BPM 的相關(guān)技術(shù)標(biāo)準(zhǔn)可以用來(lái)定義業(yè)務(wù)流程和 Web Service 的集成與部署, 以達(dá)成企業(yè)業(yè)務(wù)目標(biāo). 也就是說(shuō), BPM 語(yǔ)言不僅擁有 XML 表示的流程定義, 還延伸到了SOAP WSDL UDDI等多項(xiàng)技術(shù)規(guī)格.

關(guān)于jbpm4 您需要知道的

JBPM 是一個(gè)可擴(kuò)展的, 靈活的能夠?qū)崿F(xiàn)工作流/業(yè)務(wù)流程管理的企業(yè)級(jí)開(kāi)發(fā)框架, 提供了流程定義, 流程部署, 流程執(zhí)行, 流程管理等功能.

1. 嵌入式的工作流引擎

JBPM4 是完全支持嵌入式應(yīng)用的業(yè)務(wù)流程開(kāi)發(fā)框架, 可以在事務(wù)處理, 持久化等各個(gè)方面與業(yè)務(wù)應(yīng)用程序進(jìn)行靈活集成.

2. 可插拔的體系架構(gòu)

JBPM4 采用了模塊化的架構(gòu)設(shè)計(jì), 采用了 IOC 的設(shè)計(jì)理念, 各個(gè)模塊之間可以比較方便的解除耦合或替換不同的實(shí)現(xiàn).

例如持久化, 事務(wù)處理 身份認(rèn)證, 日志服務(wù)等, 都由可選模塊實(shí)現(xiàn).

JBPM 的可插拔體系架構(gòu), 為軟件開(kāi)發(fā)者靈活選擇 JBPM 的功能, 自定義已有的功能和拓展新的功能提供了 "無(wú)限可能".

3.易擴(kuò)展的流程語(yǔ)言

JBPM 框架內(nèi)置的流程定義活動(dòng), 包括 start, task, fork, join和decision等, 是構(gòu)建完整業(yè)務(wù)流程所必須的組成部分, 他們提供了可以將業(yè)務(wù)邏輯Java代碼和業(yè)務(wù)流程編排無(wú)縫銜接的綁定機(jī)制.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容