第一篇:java 工作流
Willow 由Huihoo Power開發(fā)詳細(xì)可到其中文主頁查看。
更多Willow信息
OpenWFE OpenWFE是一個(gè)開放源碼的Java工作流引擎。它是一個(gè)完整的業(yè)務(wù)處理管理套件:一個(gè)引擎,一個(gè)工作列表,一個(gè)Web界面和一個(gè)反應(yīng)器(存放自動(dòng)代理)。它可以可以跟你的程序很好的給合。
更多OpenWFE信息
jBpm jBpm是一個(gè)靈活可擴(kuò)展的工作流管理系統(tǒng)。作為 jBpm運(yùn)行時(shí)server輸入的業(yè)務(wù)流程使用簡(jiǎn)單強(qiáng)大的語言表達(dá)并打包在流程檔案中。jBmp將工作流應(yīng)用開發(fā)的便利性和杰出的企業(yè)應(yīng)用集成(EAI)能力結(jié)合了起來。jBmp包括一個(gè)Web應(yīng)用程序和一個(gè)日程安排程序。jBmp是一組J2SE組件,可以作為J2EE應(yīng)用集群部署。
更多jBpm信息
OpenEbXML OpenebXML項(xiàng)目致力于提供一個(gè)ebXML框架,主要支持不久將由 UN/CEFACT和OASIS發(fā)布的ebXML規(guī)范2.0版。
更多OpenEbXML信息
Werkflow Werkflow是一個(gè)靈活可擴(kuò)展的基于流程和狀態(tài)的工作流引擎。它的目標(biāo)是滿足可以想象的所有工作流程,從企業(yè)級(jí)的業(yè)務(wù)流程到小范圍的用戶交互流程。通過使用可插拔和分層結(jié)構(gòu),可以方便地容納各種工作流語義。
更多Werkflow信息
OSWorkflow OSWorkflow是一個(gè)靈活的工作流引擎,設(shè)計(jì)成可嵌入到企業(yè)應(yīng)用程序中。它提供了許多的持久化API支持包括:EJB,Hibernate,JDBC和其它。OSWorkflow還可以與Spring集成。
更多OSWorkflow信息
wfmOpen WfMOpen是WfMC和OMG中所謂工作流設(shè)施(workflow facility)(工作流引擎)的J2EE實(shí)現(xiàn)。工作流通過擴(kuò)展的XPDL描述。
更多wfmOpen信息
OFBiz OFBiz是一個(gè)非常著名的開源項(xiàng)目,提供了創(chuàng)建基于最新J2EE/XML規(guī)范和技術(shù)標(biāo)準(zhǔn),構(gòu)建大中型企業(yè)級(jí)、跨平臺(tái)、跨數(shù)據(jù)庫、跨應(yīng)用服務(wù)器的多層、分布式電子商務(wù)類WEB應(yīng)用系統(tǒng)的框架。OFBiz最主要的特點(diǎn)是OFBiz提供了一整套的開發(fā)基于Java的web應(yīng)用程序的組件和工具。包括實(shí)體引擎, 服務(wù)引擎, 消息引擎, 工作流引擎, 規(guī)則引擎等。更多OFBiz信息
ObjectWeb Bonita Bonita 是一個(gè)符合WfMC規(guī)范、靈活的協(xié)同工作流系統(tǒng)。對(duì)于各種動(dòng)作如流程概念建模、定義、實(shí)例化、流程控制和用戶交互等提供了全面的集成圖形工具。100% 基于瀏覽器、使用SOAP和XML數(shù)據(jù)綁定技術(shù)的Web Services封裝了已有的工作流業(yè)務(wù)方法并將它們以基于J2EE的Web Service形式發(fā)布?;诨顒?dòng)預(yù)測(cè)模型的第三代工作流引擎。更多ObjectWeb Bonita信息
Bigbross Bossa 速度非???、輕量級(jí)的引擎,使用富有表達(dá)能力的Petri網(wǎng)定義工作流,不要求關(guān)系數(shù)據(jù)庫,使用簡(jiǎn)單,能和Java應(yīng)用集成。事實(shí)上,它是按嵌入式設(shè)計(jì)的。更多Bigbross Bossa信息
XFlow XFlow運(yùn)行于EJB和servlet容器中。
更多XFlow信息
Taverna Taverna項(xiàng)目的目標(biāo)是提供一種語言和軟件工具,方便在eScience中使用工作流和分布計(jì)算技術(shù)。
更多Taverna信息
Enhydra Shark Shark完全基于WfMC和OMG標(biāo)準(zhǔn),使用 XPDL作為工作流定義語言。流程和活動(dòng)的存儲(chǔ)使用Enhydra DODS(一個(gè)開源OR映射工具)。
更多Enhydra Shark信息
PowerFolder PowerFolder是一個(gè)容易使用,容易安裝基于J2EE的工作流服務(wù)器,包括開發(fā)人員使用的基于web的studio。
更多PowerFolder信息
Open Business Engine Open Business Engine是一個(gè)開放源碼的Java工作流引擎,支持WfMC規(guī)范,包括接口1(XPDL)、接口2/3(WAPI)和接口5。OBE為活動(dòng)的運(yùn)行提供了一個(gè)可控的集中環(huán)境。OBE主要基于J2EE實(shí)現(xiàn)。
更多Open Business Engine信息
OpenWFE OpenWFE是一個(gè)開放源碼的Java工作流引擎。它包括可升級(jí)的三個(gè)組件:引擎、工作列表和Web界面。它的流程定義語言雖然使用XML格式,其靈感來源于 Scheme,一種Lisp方言。
更多OpenWFE信息
Freefluo Freefluo 是一個(gè)使用Web Service的工作流協(xié)同工具,可以處理WSDL的Web Service調(diào)用。支持兩種XML格式的工作流語言:IBM的WSFL和XScufl。Freefluo非常靈活,它的核心是不與任何工作流語言或執(zhí)行架構(gòu)關(guān)聯(lián)的可重用協(xié)同框架。Freefluo包括可執(zhí)行使用WSFL一個(gè)子集描述的工作流的運(yùn)行庫。
更多Freefluo信息
Twiste Twister的目標(biāo)是提供新一代、易集成、應(yīng)用Java領(lǐng)域中最新成果、面向B2B的工作流解決方案。流程引擎基于BPEL業(yè)務(wù)流程規(guī)范和Web Service標(biāo)準(zhǔn)。
更多Twiste信息
Con:cern con:cern工作流引擎基于擴(kuò)展的案例(case)處理方法,流程由一組具有前后條件的活動(dòng)組成。
更多Con:cern信息
JFlower JFlower是一個(gè)用Java開發(fā)的工作流引擎,可以通過Java插件來擴(kuò)展。服務(wù)器可以
解析XML文檔來執(zhí)行任務(wù),檢查條件。會(huì)話數(shù)據(jù)保存在一個(gè)數(shù)據(jù)庫中,所以服務(wù)器是完全可伸縮的。
更多JFlower信息
JFolder JFolder(formerly PowerFolder)是一個(gè)工作流服務(wù)器和開發(fā)環(huán)境,它可以配置在任何J2EE服務(wù)器與數(shù)據(jù)庫。
更多JFolder信息
JAWE 基于Java的圖形化工作流編輯器。圖形化工作流編輯器。使用JAVA語言開發(fā),開放源碼。嚴(yán)格遵循WFMC規(guī)范。XPDL(XML Process Definition Language)WFMC的 XML 過程描述語言。工作流定義文件保存在本地的XML文件中
更多JAWE信息
Zebra Zebra是一個(gè)工作流引擎。原先的設(shè)計(jì)是為了填補(bǔ)商業(yè)開源工作流引擎的空白。它有一些不同于其它工作流系統(tǒng)的特點(diǎn):
*所有工作流模型都可以在workflow patterns中描述
*一個(gè)易于使用的GUI designer
*一個(gè)持久層中間件
*OO設(shè)計(jì)
*一個(gè)基于Turbine的Web應(yīng)用程序
更多Zebra信息
ActiveBPEL ActiveBPEL引擎是一個(gè)健壯的運(yùn)行時(shí)環(huán)境,它能執(zhí)行依據(jù)BPEL4WS或just BPEL1.1與WS-BPEL2.0規(guī)范編寫的業(yè)務(wù)流程。
更多ActiveBPEL信息
YAWL YAWL(Yet Another Workflow Language)一個(gè)開源工作流語言/處理系統(tǒng).它基于現(xiàn)有的工作流處理系統(tǒng)與工作流語言的一個(gè)精確分析.不像傳統(tǒng)的系統(tǒng),它提供對(duì)大部分工作流模式的直接支持.YAWL支持控制流透視圖,數(shù)據(jù)透視圖并且能與WSDL標(biāo)準(zhǔn)的web服務(wù)相結(jié)合.更多YAWL信息
MOBE MidOffice BPEL Editor(MOBE)是一個(gè)開源平臺(tái)能夠讓執(zhí)行,監(jiān)控,調(diào)整,結(jié)束每個(gè)定義的過程和諧地結(jié)合起來.這個(gè)平臺(tái)的實(shí)現(xiàn)使用到J2EE技術(shù)與公共的標(biāo)準(zhǔn)如:BPEL,XML與SOAP.更多MOBE信息
RUNA WFE RUNA WFE是一個(gè)基于JBOSS-JBPM引擎的開源工作流工作平臺(tái)它是一個(gè)跨平臺(tái)適用于商業(yè)流程處理的最終用戶解決方案,很容易與所有SQL數(shù)據(jù)庫管理系統(tǒng)相結(jié)合.更多RUNA WFE信息
micro-workflow micro-workflow框架適用于那些要在他們程序中分離控制與邏輯方面的開發(fā)者,所以這個(gè)框架可以使他們的流程相互獨(dú)立。這樣有利于代碼重復(fù)使用與代碼的完整性。更多micro-workflow信息
bexee bexee是一個(gè)BPEL執(zhí)行引擎并且是BPEL標(biāo)準(zhǔn)的一個(gè)開源實(shí)現(xiàn).更多bexee信息
PXE PXE-Process eXecution Engine是一個(gè)模塊化的商業(yè)流程執(zhí)行引擎.支持用WS-BPEL2.0或用BPEL4WS1.1規(guī)范描述的商業(yè)流程.
第二篇:JAVA工作流引擎原理學(xué)習(xí)
JAVA工作流引擎原理學(xué)習(xí)
工作流是業(yè)務(wù)流程的全部或部分自動(dòng)化,在此過程中,文檔、信息或任務(wù)按照一定的過程規(guī)則流轉(zhuǎn),實(shí)現(xiàn)組織成員間的協(xié)同工作,以達(dá)到業(yè)務(wù)的整體目標(biāo)。工作流管理系統(tǒng)是支持企業(yè)經(jīng)營過程高效執(zhí)行并監(jiān)控其執(zhí)行過程的計(jì)算機(jī)軟件系統(tǒng)。典型的WFMS至少由如下幾個(gè)模塊組成:業(yè)務(wù)流程建模定義工具、過程定義、工作流執(zhí)行環(huán)境(引擎)、任務(wù)管理。當(dāng)然還會(huì)包括應(yīng)用和IT工具。常用的工作流引擎有osworkflow,jbpm,shark。剛學(xué)習(xí)了一點(diǎn)osworkflow,現(xiàn)在轉(zhuǎn)向jbpm,公司要求,沒辦法。osworkflow,最大特點(diǎn)就是靈活,這個(gè)網(wǎng)上都說遍了。也就是說它提供了一個(gè)引摯,在此基礎(chǔ)上你可以進(jìn)行擴(kuò)展,可以自已寫一些條件、動(dòng)作類,只是繼承它的接口就行,不需要修改它的源代碼。他只提供一個(gè)工作流控制框架給你,他也只專注于管理工作流自身的東西,對(duì)其他的東西不管,其他的功能對(duì)他來說都只是一個(gè)插件組件。所以你可以自己擴(kuò)展里面的功能,例如用戶管理模式,工作流本身不帶用戶模式,他公司的另外一個(gè)項(xiàng)目osuser,可以結(jié)合使用來管理用戶權(quán)限,當(dāng)然你可以不用osuer,自己建立自己的用戶模式,其實(shí)就是建立自己的運(yùn)行判斷條件;支持多種插件式的持久化機(jī)制;他的數(shù)據(jù)表也很少,就三個(gè)……
Shark的流程定義語言是XPDL,我們知道,XPDL的兩個(gè)最重要的概念是Process和Activity。XPDL中的Activity是基于UML1.x中的活動(dòng)圖的概念。活動(dòng)圖天生的適于工作流程建模,它相對(duì)于狀態(tài)圖的一個(gè)最大的優(yōu)點(diǎn)是容易做并發(fā)線程的分叉控制,這些并發(fā)線程可以同時(shí)執(zhí)行也可以順序執(zhí)行;它還有一個(gè)優(yōu)點(diǎn)是有泳道的概念,可以控制工作流引擎中的任務(wù)的產(chǎn)生。Shark的如來神掌是活動(dòng)圖。Osworkflow的如來神掌又是什么呢?我們知道,它有個(gè)重要概念是State……呵呵,我們知道了,它的如來神掌是FSM。不知道FSM是什么東西??那你讀大學(xué)時(shí)肯定不是好學(xué)生;當(dāng)然了,不知道也不打緊,你把他類似理解為狀態(tài)圖就可以了。Osworkflow中的State是由step和status聯(lián)合表達(dá)的,一個(gè)State就是一個(gè)step中的某個(gè)status;而state的轉(zhuǎn)換由action來驅(qū)動(dòng),類似狀態(tài)圖中的event,因?yàn)橐粋€(gè)event對(duì)應(yīng)一個(gè)action嘛。Jbpm的如來神掌就沒有上面的簡(jiǎn)單了,它結(jié)合應(yīng)用了狀態(tài)圖+活動(dòng)圖+PetriNet的知識(shí),而且,這里的活動(dòng)圖還是UML2.0版的。UML2.0的活動(dòng)圖中,節(jié)點(diǎn)不叫活動(dòng)(Activity)而叫動(dòng)作(action),活動(dòng)成了一個(gè)高層次的概念,它包含一個(gè)動(dòng)作序列。一個(gè)活動(dòng)圖展現(xiàn)一系列的動(dòng)作,這些動(dòng)作組成了活動(dòng)。Jbpm把a(bǔ)ction也改名了,稱為state。Jbpm使用的狀態(tài)圖的概念有transition/event等,這個(gè)自己去看吧。Jbpm來內(nèi)部實(shí)現(xiàn)中還采用了PetriNet的概念,如token,signal等。什么?又不知道PetriNet什么東東?那你大學(xué)是學(xué)計(jì)算機(jī)的嗎?不是?那你可能是學(xué)文科的,學(xué)機(jī)械/電氣/土木工程/交通運(yùn)輸?shù)葘I(yè)都有接觸PetriNet的課程,如果沒有學(xué)過,還是看看jbpm吧,反正我們也不搞理論,知道大致概念就行。
軟件學(xué)習(xí)到迅騰國際,老師都會(huì)給你提供這些資料的,只要你問就可以了,至于地址嗎?自己查吧!我也只知道哪里是學(xué)習(xí)軟件的。我是在北京學(xué)的。
第三篇:淺談JBPM工作流
淺談JBPM工作流
摘要:本文介紹了工作流的定義,并著重對(duì)JBPM工作流的核心組件、體系結(jié)構(gòu)、流程調(diào)度等進(jìn)行了詳盡的介紹,以期完成對(duì)基于JBPM工作流技術(shù)的軟件系統(tǒng)研發(fā)工作的理論探討。
關(guān)鍵詞:工作流;JBPM;組件;流程調(diào)度
工作流研究起源于20世紀(jì)70年代,早期的工作流源起辦公自動(dòng)化。1962年,工作流開始使用Petri網(wǎng)來作為流程建模的描述手段,Petri被認(rèn)為是所有流程定義語言之母。到80年代適,商用工作流(FileNet等)開始基于圖像處理和文檔管理,直到1993年,工作流管理聯(lián)盟的成立標(biāo)志著工作流技術(shù)比較成熟了。
JBPM于2002年發(fā)起,到現(xiàn)在已經(jīng)有發(fā)布了5.0版本。與JBPM3相比,JBPM4引入了流程虛擬機(jī)(PVM)同時(shí)增加了業(yè)務(wù)流程管理系統(tǒng)(BPMS)的特性,它不只是一個(gè)工作流系統(tǒng),而是開始走向BPMS。而JBPM5完全拋棄了JBPM4的代碼,所有代碼都來自原先的Drools Flow。因此,本文選擇了純JPBM工作流引擎JBPM3。
1.1 工作流的定義
工作流管理聯(lián)盟(Workflow Management Coalition,WfMC),給出了工作流定義為:工作流是一類能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營過程,它根據(jù)一系列過程規(guī)則、文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行。除了WfMC以外,Georgakopotllo、IBM Almeden研究中心等也從不同的角度對(duì)工作流進(jìn)行了定義。這些定義都是非形式化語言描述,說明工作流是使用計(jì)算機(jī)實(shí)現(xiàn)的經(jīng)營過程,而工作流管理系統(tǒng)是實(shí)現(xiàn)這個(gè)過程的一套軟件。
本文中筆者做如下定義:“工作流是一種反映業(yè)務(wù)流程的計(jì)算機(jī)化的模型,是為了實(shí)現(xiàn)某個(gè)經(jīng)營過程利用計(jì)算機(jī)在多個(gè)參與者之間,按照預(yù)定規(guī)則自動(dòng)流轉(zhuǎn)的可由工作流管理系統(tǒng)執(zhí)行的業(yè)務(wù)模型。”
1.2 JBPM簡(jiǎn)介
JBPM是一個(gè)基于Java EE的輕量級(jí)工作流管理系統(tǒng),是一個(gè)靈活的、可擴(kuò)展的并能實(shí)現(xiàn)工作流的企業(yè)級(jí)開發(fā)框架,提供了流程定義、部署、執(zhí)行和管理等功能。它具只有很小的依賴性,可以作為Java庫與使用任何數(shù)據(jù)庫部署在任何應(yīng)用服務(wù)器上。
JBPM的核心工作流和BPM功能被封裝成一個(gè)Java庫,其中包含了Jbpm-Server、Jbpm-Designer、Jbpm-DB、Jbpm核心組件和Jbpm-Bpel五個(gè)部分。Jbpm-Server是一個(gè)預(yù)先配置好的Jboss應(yīng)用服務(wù)器,Jbpm-Designer是一個(gè)基于Eclipse的流程圖形化設(shè)計(jì)插件,Jbpm-DB包括了JBPM所有兼容數(shù)據(jù)庫的JDBC驅(qū)動(dòng)程序和數(shù)據(jù)庫初始化腳本,Jbpm核心組件是一個(gè)用來管理流程定義和支持流程實(shí)例執(zhí)行的運(yùn)行時(shí)環(huán)境,Jbpm-Bpel是一個(gè)獨(dú)立擴(kuò)展包,使JBPM可以支持BPEL(一種擴(kuò)展的XML腳本語言)。
JBPM使用JPDL流程定義語言來表示業(yè)務(wù)流程,使用Jbpm-Designer圖形流程設(shè)計(jì)器來設(shè)計(jì)業(yè)務(wù)流程。Jbpm-Designer使業(yè)務(wù)分析員和技術(shù)開發(fā)人員都可以對(duì)業(yè)務(wù)流程進(jìn)行設(shè)計(jì)和調(diào)整,使得業(yè)務(wù)流程建模和實(shí)際業(yè)務(wù)執(zhí)行轉(zhuǎn)換非常容易。
JBPM的核心組件是一個(gè)Java庫,負(fù)責(zé)解析流程定義文件和控制運(yùn)行時(shí)流程實(shí)例的執(zhí)行。除了XML解析和持久化依賴的庫以外,唯一與之直接相關(guān)的庫是commons logging,項(xiàng)目中任意Java軟件都可以訪問JBPM提供的API。JBPM內(nèi)部使用Hibernate實(shí)現(xiàn)其持久化,Hibernate使JBPM能在當(dāng)前所有的數(shù)據(jù)庫上使用。
JBPM控制臺(tái)Web應(yīng)用程序作為流程實(shí)例的控制接口,負(fù)責(zé)流程執(zhí)行時(shí)的任務(wù)生成,管理并監(jiān)視控制臺(tái)檢查或操作運(yùn)行的流程實(shí)例。
1.3 JBPM的體系結(jié)構(gòu)
JBPM工作流實(shí)現(xiàn)了三個(gè)工作流管理系統(tǒng)的基本功能。
過程定義:JBPM使用JPDL使用戶通過可視化方式定義業(yè)務(wù)流程,流程定義文件被流程解析程序解析后提供給工作流引擎使用。
運(yùn)行控制:核心是JBPM工作流引擎,管理執(zhí)行流程的上下文環(huán)境,包含了當(dāng)前執(zhí)行流程的全部信息。它解析流程定義,控制流程定義實(shí)例的創(chuàng)建、流轉(zhuǎn)和銷毀,檢查流程實(shí)例的狀態(tài)并提供監(jiān)控程序。
人機(jī)交互:當(dāng)流程需要用戶或者外部工具參與時(shí),JBPM提供相應(yīng)的應(yīng)用程序接口或通過繼承ActionHandler的方法來實(shí)現(xiàn)。ActionHandler方法提供了統(tǒng)一的擴(kuò)展接口,使得擴(kuò)展更加容易。
1.3.1.1JBPM的流程定義
JBPM本身就是基于模型的組件,流程實(shí)例都是依賴流程定義而執(zhí)行的。但它并不像使用JPDL的流程定義圖形化工具那么簡(jiǎn)單,從上世紀(jì)七十年代開始,人們便開始探索流程的形式化描述。JBPM的流程定義采用了動(dòng)態(tài)圖的模型語義來描述任意一個(gè)流程定義,JPDL主要使用7種流轉(zhuǎn)控制活動(dòng)來實(shí)現(xiàn)流程的形式化描述。
流轉(zhuǎn)控制活動(dòng)是組成一個(gè)業(yè)務(wù)流程定義最基本的活動(dòng),利用這些活動(dòng)可以構(gòu)建任意的流程定義,實(shí)現(xiàn)各種基本流程流轉(zhuǎn)控制。JPDL的流程控制活動(dòng)主要包括:
1、start(開始活動(dòng)):指明流程的實(shí)例用哪里開始,它作為流程的入口。每個(gè)流程定義都有且只能有一個(gè)start活動(dòng)(在group中的開始活動(dòng)除外),且start活動(dòng)必須有一個(gè)流出轉(zhuǎn)移。
2、state(狀態(tài)活動(dòng)):業(yè)務(wù)流程需要某些特定的操作后才能繼續(xù)執(zhí)行,在這個(gè)操作之前流程處于等待狀態(tài)。當(dāng)流程運(yùn)行到state活動(dòng)時(shí),自動(dòng)進(jìn)入等待狀態(tài),知道外來的信號(hào)觸發(fā)。
3、decision(判斷活動(dòng)):根據(jù)條件在多個(gè)流程轉(zhuǎn)移做出決定性的判斷,選擇最先匹配的一個(gè)條件轉(zhuǎn)移執(zhí)行。
4、fork-join(分支、聚合活動(dòng)):在需要并發(fā)執(zhí)行流程時(shí),fork活動(dòng)可以使流程出現(xiàn)并行的分支,join活動(dòng)可以使并行分支聚合成一條流程。
5、end(結(jié)束活動(dòng)):當(dāng)流程實(shí)例流轉(zhuǎn)到end活動(dòng)時(shí),實(shí)例將被結(jié)束。但到達(dá)end活動(dòng)的實(shí)例中仍然活躍的流程活動(dòng)(如fork-join并發(fā)流轉(zhuǎn)引起的流程分支)將會(huì)被保留繼續(xù)執(zhí)行。JPDL允許有多個(gè)end活動(dòng)。
6、task(人工任務(wù)活動(dòng)):用來處理需要人機(jī)交互的活動(dòng)??梢苑峙淙蝿?wù)給指定用戶、實(shí)現(xiàn)任務(wù)分配處理器、任務(wù)泳道、任務(wù)提醒等功能。
7、sub-process(子流程活動(dòng)):允許在流程定義中調(diào)用其他的流程定義。
流程的形式化描述就是有向圖,其本質(zhì)就是節(jié)點(diǎn)和有向弧。JBPM的節(jié)點(diǎn)Node就是流程控制活動(dòng),它的有向弧就是節(jié)點(diǎn)的轉(zhuǎn)移Transition(轉(zhuǎn)出或者轉(zhuǎn)入),使用節(jié)點(diǎn)和轉(zhuǎn)移就可以繪制任意一個(gè)業(yè)務(wù)流程。
1.3.1.2JBPM流程調(diào)度
流程調(diào)度就是流程實(shí)例從一個(gè)節(jié)點(diǎn)運(yùn)行到另一個(gè)節(jié)點(diǎn)所依賴的一套機(jī)制,圖2-13是JBPM流程調(diào)度的思維導(dǎo)圖。JBPM啟動(dòng)一個(gè)流程時(shí)候,首先創(chuàng)建一個(gè)流程實(shí)例,并為這個(gè)實(shí)例創(chuàng)建一個(gè)Root Token,此時(shí)這個(gè)Root Token在Start節(jié)點(diǎn)上。當(dāng)Token在Start節(jié)點(diǎn)上時(shí),就可以將流程下流轉(zhuǎn),通過Token的signal方法(實(shí)際執(zhí)行的是node的leave操作),將Token(實(shí)際只有ExecutionContext對(duì)象)放入要轉(zhuǎn)向的Transtion對(duì)象中,再由Transtion對(duì)象將Token交給下一個(gè)節(jié)點(diǎn),這樣便完成了流程調(diào)度。
參考文獻(xiàn):
[1]高潔.深入淺出JBPM.人民郵電出版社,2009.7
[2]胡奇.jBPM4工作流應(yīng)用開發(fā)指南,2010.10
[3]胡長(zhǎng)城.開源工作流平臺(tái)jBPM:過程組件模型與PVM.程序員,2008(05)
作者簡(jiǎn)介:劉永中,男,(1985-),四川省花園式人,西南交通大學(xué)信息科學(xué)與技術(shù)學(xué)院08級(jí)碩士。
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文
第四篇:工作流技術(shù)研究
工作流技術(shù)研究(1)(2008-09-10 19:29:14)
標(biāo)簽:工作流管理系統(tǒng) 工作流參考模型 雜談 分類:工作流
工作流技術(shù)從起源到現(xiàn)在已有三十年的發(fā)展歷史,為了規(guī)范工作流技術(shù)的管理,1993年成立了工作流管理聯(lián)盟(WfMC)。WfMC統(tǒng)一了工作流的定義,制定了工作流產(chǎn)品結(jié)構(gòu)和工作流參考模型等一系列的標(biāo)準(zhǔn)。本文針對(duì)工作流及其參考模型作簡(jiǎn)單的介紹。
首先,先了解一下工作流的相關(guān)定義。
一、工作流相關(guān)定義
定義1 工作流(Workflow):工作流的概念定義很多,其中被廣泛引用的是工作流管理聯(lián)盟關(guān)于工作流的定義,該組織為工作流管理系統(tǒng)的相關(guān)術(shù)語、體系結(jié)構(gòu)及應(yīng)用編程接口等方而制定了一系列的業(yè)界標(biāo)準(zhǔn)。工作流管理聯(lián)盟給出的工作流定義是:全部或者部分,由計(jì)算機(jī)支持或自動(dòng)處理的業(yè)務(wù)過程,它已根據(jù)一系列過程規(guī)則、文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間進(jìn)行傳遞與執(zhí)行。工作流是指整個(gè)或部分經(jīng)營過程在計(jì)算機(jī)支持下的全自動(dòng)化或半自動(dòng)化。工作流是企業(yè)中各種流的載體,它帶動(dòng)了信息流、物料流、資金流的流動(dòng),并決定了它們的流速和流量。通過工作流,考察信息、物料、資金等隨過程的變化情況,從而可以方便地對(duì)一些關(guān)鍵指標(biāo)進(jìn)行跟蹤和計(jì)算。其文
檔、信息或任務(wù)可以遵循一組程序上的規(guī)則從一個(gè)參與者傳送到另一個(gè)參與者。
定義2 工作流管理:工作流管理(Workflow Management, WFM)是人與計(jì)算機(jī)共同工作的自動(dòng)化協(xié)調(diào)、控制和通訊,在計(jì)算機(jī)化的業(yè)務(wù)過程上,通過在網(wǎng)絡(luò)上運(yùn)行軟件,使所有命令的執(zhí)行都處于受控狀態(tài)。在工作流管理下,工作量可以被監(jiān)督,分派工作到不同的用戶達(dá)成平衡。
定義3 工作流管理系統(tǒng)(WFMS—Workflow Management System):工作流管理系統(tǒng)是這樣的一個(gè)系統(tǒng),詳細(xì)定義、管理并執(zhí)行工作流,系統(tǒng)通過運(yùn)行一些軟件來執(zhí)行工作流,它運(yùn)行在一個(gè)或多個(gè)工作流引擎上,這些引擎解釋對(duì)過程的定義,與工作流的參與者(包括人或軟件)相互作用,并根據(jù)需要調(diào)用其他的軟件工具或應(yīng)用。這些軟件的執(zhí)行順序由工作流邏輯的計(jì)算機(jī)表示形式(計(jì)算機(jī)化的業(yè)務(wù)規(guī)則——過程定義)驅(qū)動(dòng)??傮w來說,實(shí)際企業(yè)中運(yùn)作的工作流管理系統(tǒng),是一個(gè)人與計(jì)算機(jī)結(jié)合的系統(tǒng)。
它的基本功能體現(xiàn)在幾個(gè)方面:
? 定義工作流,包括具體的活動(dòng)、規(guī)則等。
? 遵循定義創(chuàng)建和運(yùn)行實(shí)際的工作流。
? 監(jiān)察、控制、管理運(yùn)行中的業(yè)務(wù),例如任務(wù)、工作量與進(jìn)度的檢察等。
定義4工作流機(jī):為工作流實(shí)例提供運(yùn)行時(shí)期的執(zhí)行環(huán)境的軟件服務(wù)器或引擎。工作流機(jī)能處理:
? 解釋過程定義
? 控制過程實(shí)例—?jiǎng)?chuàng)建、激活、掛起、終止等
? 為過程的活動(dòng)導(dǎo)航,可能要包含順序或者平行的操作、最后時(shí)間期限、對(duì)工作流相關(guān)數(shù)據(jù)進(jìn)行解釋
? 參與者簽名和退出
? 確定任務(wù)項(xiàng)目,實(shí)現(xiàn)用戶意圖;提供接口,支持用戶交互
? 維護(hù)工作流控制數(shù)據(jù)和工作流相關(guān)數(shù)據(jù),在應(yīng)用程序間或者用戶間傳遞工作流相關(guān)數(shù)據(jù)
? 提供調(diào)用外部程序的接口,連接所有工作流相關(guān)數(shù)據(jù)
? 提供控制、管理和審查功能
工作流機(jī)可以控制過程集、子過程、或通過對(duì)象類型的范圍、及其屬性定義好運(yùn)行范圍的實(shí)例。在一個(gè)由多個(gè)工作流機(jī)構(gòu)成的工作流執(zhí)行服務(wù)器中,要把過程進(jìn)行劃分,分配給工作流機(jī)??梢园凑者^程類型來劃分,某個(gè)工作流機(jī)負(fù)責(zé)控制相應(yīng)類型過程;按照功能進(jìn)行劃分,某個(gè)工作流機(jī)負(fù)責(zé)控制過程的一些部分,這些部分所需要的用戶或者資源,都在此工作流機(jī)的控制范圍內(nèi)。也可以按照其他的一些機(jī)制來劃分。
定義5 業(yè)務(wù)過程(business process):就是活動(dòng)的集合,這些活動(dòng)均關(guān)聯(lián)于特定的托付事項(xiàng)(commitment),為過程的產(chǎn)出增值。相對(duì)于“工作流”,業(yè)務(wù)過程是一個(gè)更一般化的統(tǒng)稱,而工作流這個(gè)詞,則已經(jīng)不能僅從字面含義或原理上去理解,它已經(jīng)被賦予了更深一層的特定含義——專指基于信息技術(shù)規(guī)劃、運(yùn)作、管理的業(yè)務(wù)過程。
定義6 自動(dòng)與協(xié)調(diào):“自動(dòng)”(automate)是工作流的一個(gè)特征,但這主要是指它自動(dòng)進(jìn)行的特征,而不是說沒有人的參與。工作流實(shí)際上是一個(gè)人與計(jì)算機(jī)協(xié)調(diào)的混合過程,在一個(gè)實(shí)際的工作流中,通??傆行┎襟E是人完成的。協(xié)調(diào)是工作流管理的一個(gè)目標(biāo)或者特征,這包括了人與人、人與計(jì)算機(jī),計(jì)算機(jī)軟件之間等多種層面的含義。
定義7 監(jiān)察與控制:監(jiān)察(Monitoring)與控制(Contorl)是工作流系統(tǒng)的重要功能與特征。這不僅包括對(duì)正在發(fā)生的業(yè)務(wù)過程(工作流),還包括它的定義或改
變(比如BPR的過程)。這是工作流系統(tǒng)帶給我們的明顯好處之一。定義8 標(biāo)準(zhǔn)化:工作流的概念被明確提出并得到重視的同時(shí),人們就認(rèn)識(shí)到了“標(biāo)準(zhǔn)化”在其中的重要性,有關(guān)工作流的標(biāo)準(zhǔn)開發(fā)和推廣,基本是與“工作流”的開發(fā)和推廣同步進(jìn)行的。在這方面目前的權(quán)威性機(jī)構(gòu),是“工作流管理聯(lián)盟”(Workflow Management Coalition, WfMC)。它成立于1993年8月,目前已擁有 130 余個(gè)成員,成員包括工作流產(chǎn)品的供應(yīng)者、應(yīng)用者,有關(guān)大學(xué)和研究機(jī)構(gòu)和個(gè)人,是一個(gè)國際性的非贏利組織。定義9 工作流與重規(guī)劃:從邏輯上,對(duì)工作流的關(guān)注和研究可以看作是對(duì)業(yè)務(wù)過程重規(guī)劃(BPR)的一種深化。BPR的觀點(diǎn),要求我們將眼光投向?qū)嶋H業(yè)務(wù)進(jìn)行的過程,但這個(gè)過程應(yīng)當(dāng)是什么樣的,怎樣分析、構(gòu)造?工作流就是一個(gè)具體的、操作性的答案,它可以令我們從神秘的、難以預(yù)測(cè)和控制的“頭腦風(fēng)暴式”的“藝術(shù)的”業(yè)務(wù)過程創(chuàng)造,變成解析的、技術(shù)的、可控制和預(yù)測(cè)的工程化過程,如此,才真正體現(xiàn)出
re-engineering 中 engineering 的意義。
工作流與 BPR 的概念,已經(jīng)被幾乎所有的研究者聯(lián)系在一起研究和應(yīng)用。在這個(gè)領(lǐng)域有一個(gè)非?;钴S的組織,即國際工作流與重規(guī)劃協(xié)會(huì)(Workflow And
Reengineering International Association, WARIA)。
工作流管理系統(tǒng)是一個(gè)真正的“人—機(jī)”系統(tǒng),用戶是系統(tǒng)中的基本角色,是直接的任務(wù)分派對(duì)象,他或她可以直接看到計(jì)算機(jī)針對(duì)自己列出的“任務(wù)清單”,跟蹤每一項(xiàng)任務(wù)的狀態(tài),或繼續(xù)一項(xiàng)任務(wù),而不必從一個(gè)模塊退出,進(jìn)入另一個(gè)模塊,搜索相應(yīng)任務(wù)的線索。前者是面向功能或?qū)ο蟮?,而后者是直接面向用戶的。這樣,用戶的任務(wù)
分派和任務(wù)的完成狀態(tài),可以被最大程度地計(jì)算機(jī)化和受到控制。
現(xiàn)在的典型工作流產(chǎn)品是客戶—服務(wù)軟件。而日益增長(zhǎng)的重要途徑是通過萬維網(wǎng)界面,它可以令客戶或遠(yuǎn)程的職員更好地參與。工作流的定義經(jīng)常是借助于圖形化
工具,依照業(yè)務(wù)過程實(shí)例的情況定義相應(yīng)工作的安排。
二、目標(biāo)領(lǐng)域
使用工作流管理系統(tǒng)的目的之一是作為企業(yè)應(yīng)用系統(tǒng)集成(EAI)的平臺(tái)。在當(dāng)前大部分企業(yè)級(jí)IT架構(gòu)中,各種各樣的異構(gòu)(heterogeneous)應(yīng)用和數(shù)據(jù)庫運(yùn)行在企業(yè)內(nèi)網(wǎng)中。在這些系統(tǒng)被應(yīng)用到組織時(shí),都有一個(gè)清晰的目標(biāo)。例如,客戶管理、文檔管理、供應(yīng)鏈、訂單、支付、資源計(jì)劃等等。讓我們稱這些系統(tǒng)為專門應(yīng)用(dedicated applications)。每一個(gè)專門應(yīng)用都包含它們所支持業(yè)務(wù)流程的領(lǐng)域知識(shí)。這些專門應(yīng)用中的自動(dòng)化流程,被拼裝到企業(yè)中更大的非自動(dòng)化流程中。每當(dāng)一個(gè)這樣的專門應(yīng)用安裝并投入使用,都會(huì)帶來涉及其他多個(gè)應(yīng)用的新功能需求。企業(yè)應(yīng)用系統(tǒng)集成(EAI)就是通過使用多個(gè)專門應(yīng)用滿足軟件新需求的方法。有時(shí),這只需要在兩個(gè)應(yīng)用之間提供數(shù)據(jù)通訊的通道。專門應(yīng)用將很多業(yè)務(wù)流程硬編碼在軟件中??梢赃@么說,在你購買專門應(yīng)用時(shí),你是購買了一組固定的自動(dòng)化業(yè)務(wù)流程。而工作流管理系統(tǒng)是不必事先知道問題域的相關(guān)信息的。工作流系統(tǒng)將業(yè)務(wù)流程描述作為輸入并管理流程實(shí)例的執(zhí)行,這使得它比專門應(yīng)用更靈活(當(dāng)然你也要花精力編寫業(yè)務(wù)流程的規(guī)格化描述)。這就是為什么說工作流系統(tǒng)和專門系統(tǒng)是相互補(bǔ)充的。工作流系統(tǒng)可以用來管理全局的業(yè)務(wù)流程。如果專門應(yīng)用支持你所需要的業(yè)務(wù)流程,那么使用專門應(yīng)用。在此討論的工作流系統(tǒng)的第一種使用方式就是:結(jié)合所有的專門應(yīng)用,使用工作流系統(tǒng)構(gòu)建一個(gè)EAI平臺(tái)。
工作流系統(tǒng)能夠發(fā)揮很大價(jià)值的第二個(gè)使用方式是:協(xié)助涉及多人相關(guān)任務(wù)工作流軟件的開發(fā)。為了達(dá)到這個(gè)目的,大部分工作流系統(tǒng)都有一個(gè)方便的機(jī)制,來生成執(zhí)行任務(wù)的表單。對(duì)于專注于ISO 或者CMM認(rèn)證的組織,采用這種方式使用工作流系統(tǒng)能夠顯著提高生產(chǎn)率。不用將過程用文字的形式寫在紙上,工作流系統(tǒng)使你通過
流程定義建模實(shí)現(xiàn)過程的自動(dòng)化(如使用基于Web的應(yīng)用)。
工作流系統(tǒng)的第三種使用方式是:將工作流引擎嵌入到其他應(yīng)用中。在前面我們談到,專門應(yīng)用將指定問題域相關(guān)的業(yè)務(wù)流程固化在軟件中。開發(fā)專門應(yīng)用的公司也可以將工作流引擎嵌入到他們的軟件中。在這里,工作流引擎只是作為一個(gè)軟件組件,對(duì)于應(yīng)用的最終用戶是不可見的。將工作流引擎嵌入到應(yīng)用中的主要原因是為了重用
(不重復(fù)發(fā)明輪子)和應(yīng)用軟件的可維護(hù)性。
三、工作流參考模型
WfMC定義的工作流參考模型包括若干基本部件和5個(gè)基本接口(部件之間的箭頭表示部件之間的接口),如圖1所示。工作流執(zhí)行服務(wù)器周圍的接口是 WAPI(Workflow APIs),通過這些接口可以訪問工作流系統(tǒng)的服務(wù),這些接口還控制工作流控制軟件與其他系統(tǒng)組件間的交互。在5個(gè)接口中的許多功能,都是被2個(gè)或更多個(gè)接口同時(shí)擁有的,因此WAPI可以看作是統(tǒng)一的服務(wù)接口,可以交叉使用這5個(gè)接口來支持工作流管理功能,而不是單獨(dú)的使用其中某個(gè)接口。
首先,我們粗況的了解一下參考模型中的基本部件,然后再對(duì)這些基本部件進(jìn)行簡(jiǎn)單分析。
(1)過程定義:負(fù)責(zé)給出工作流程的定義,并以一定的數(shù)據(jù)格式提供給工作流引擎解釋。
(2)工作流執(zhí)行服務(wù):工作流管理系統(tǒng)的核心,提供了過程實(shí)例執(zhí)行的運(yùn)行環(huán)境。工作流執(zhí)行服務(wù)借助于一個(gè)或多個(gè)工作流引擎,激活并解釋工作流流程定義,用來創(chuàng)建、管理、執(zhí)行工作流實(shí)例。并同外部的應(yīng)用程序進(jìn)行交互,完成工作流過程實(shí)例的創(chuàng)建執(zhí)行與管理職能。
(3)管理和監(jiān)視工具:負(fù)責(zé)監(jiān)控工作流的執(zhí)行,對(duì)工作流管理系統(tǒng)中過程實(shí)例的狀態(tài)進(jìn)行監(jiān)控與管理,如用戶管理、角色管理、審計(jì)管理、資源控制等。
(4)工作流客戶應(yīng)用:執(zhí)行者訪問工作流的界面,活動(dòng)參與者通過這樣的應(yīng)用程序參加工作流活動(dòng),獲取自己的任務(wù)。
(5)工作流引擎:過程定義的解釋器,它是工作流執(zhí)行服務(wù)的核心。
(6)被調(diào)應(yīng)用程序:工作流執(zhí)行服務(wù)在過程實(shí)例的運(yùn)行過程中,調(diào)用的、用以對(duì)應(yīng)用數(shù)據(jù)進(jìn)行處理的程序。在過程定義中包含這種應(yīng)用程序的詳細(xì)信息如類型、地
址信息等。
(7)其他工作流執(zhí)行服務(wù):在大型的工作流管理系統(tǒng)中,工作流可能需要多個(gè)工作流引擎共同完成,甚至需要其他異質(zhì)的工作流執(zhí)行服務(wù)來輔助完成,這涉及到工
作流管理系統(tǒng)之間的互聯(lián)。
其中過程定義通常包括一些獨(dú)立的活動(dòng)步驟,相關(guān)的計(jì)算機(jī)和用戶通過一系列的活動(dòng)步驟操作或制定規(guī)則以管理流程的步驟。
參考模型中定義的五類工作流接口。
(1)接口1(工作流定義轉(zhuǎn)換):工作流服務(wù)和工作流建模工具間的接口,包括工作流模型的解釋和讀寫操作。
(2)接口2(客戶端應(yīng)用程序接口):工作流服務(wù)和客戶應(yīng)用之間的接口,這是最主要的接口規(guī)范,它約定所有客戶方應(yīng)用與工作流服務(wù)之間的功能操作方法。
(3)接口3(應(yīng)用程序調(diào)用接口):工作流引擎和直接調(diào)用的應(yīng)用程序之間的直接接口。
(4)接口4(工作流機(jī)協(xié)作接口):工作流管理系統(tǒng)之間的互操作接口。
(5)接口5(管理和監(jiān)視接口):工作流服務(wù)和工作流管理工具之間的接口。
在實(shí)際的應(yīng)用中,很多商用和開源的工作流系統(tǒng)都沒有嚴(yán)格遵照這個(gè)標(biāo)準(zhǔn),或者說沒有統(tǒng)一。一個(gè)原因是WfMC的標(biāo)準(zhǔn)對(duì)于很多細(xì)節(jié)沒有明確說明,在實(shí)現(xiàn)時(shí)各個(gè)系統(tǒng)出現(xiàn)了各自的實(shí)現(xiàn)。另一個(gè)原因是,工作流系統(tǒng)與業(yè)務(wù)系統(tǒng)關(guān)系密切,受業(yè)務(wù)系統(tǒng)的限制或約束太大,因此支持不同業(yè)務(wù)的工作流在細(xì)節(jié)上差異很大,標(biāo)準(zhǔn)不易統(tǒng)一,做
一個(gè)通用的工作流系統(tǒng)難度比較大。
3.1過程定義
1過程定義工具(Process Definition Tools)
過程定義是用來創(chuàng)建一個(gè)計(jì)算機(jī)可以處理的形式的過程描述。可能要以形式過程定義語言、對(duì)象關(guān)系模型、簡(jiǎn)單的系統(tǒng)、腳本、或者在參與者間進(jìn)行信息傳遞的路徑集為基礎(chǔ)。工作流定義工具,可能作為工作流產(chǎn)品的一部分、也可能作為業(yè)務(wù)過程分析產(chǎn)品的一部分來提供給用戶,作為業(yè)務(wù)過程分析產(chǎn)品一部分,會(huì)有其他的組件來負(fù)責(zé)處理業(yè)務(wù)過程的分析或者模型,這時(shí),必須要有兼容的轉(zhuǎn)換格式,與運(yùn)行時(shí)期的工作流軟件進(jìn)行過程定義的相互轉(zhuǎn)換。有許多不同的工具可以用來分析、建模、描述業(yè)務(wù)過程;這樣的工具有很大的不同從非正式的(鉛筆和紙)到成熟的、十分專業(yè)。工作流模型不關(guān)心這些工具的特性,也不關(guān)心在過程建立時(shí)期他們是如何交互的。在以前指出過,這些工具可以作為工作流產(chǎn)品的一部分來提供,或者一個(gè)單獨(dú)的產(chǎn)品,例如BPR工具集。
有的工作流產(chǎn)品提供了其自己的過程定義工具,從而過程定義一般是保留在工作流產(chǎn)品范圍內(nèi)的,并且可能或者不能被讀/寫信息的編程接口所訪問。而使用單獨(dú)的過程定義和執(zhí)行服務(wù)器產(chǎn)品,過程定義能夠在不同的產(chǎn)品間進(jìn)行轉(zhuǎn)換,并可以被其他產(chǎn)品訪問。
設(shè)計(jì)活動(dòng)和最后的過程模型輸出,稱為過程定義。在運(yùn)行時(shí)期過程定義可以被工作流機(jī)解釋。
過程分析工具、建模工具和定義工具,都要有在一個(gè)組織結(jié)構(gòu)中模擬過程的能力(盡管這不是工作流參考模型規(guī)定必須有的)。如果組織模型集成到了這些工具中,那么過程定義將包含組織相關(guān)對(duì)象。這些都是與系統(tǒng)相關(guān)的控制數(shù)據(jù),例如角色:活動(dòng)者間的關(guān)系,可能會(huì)在過程執(zhí)行期間被引用。工作流定義轉(zhuǎn)換(接口 1)
在建模或定義工具與運(yùn)行時(shí)期工作流管理軟件間的接口,被稱為過程定義導(dǎo)入/導(dǎo)出接口。這個(gè)接口的特點(diǎn)是:轉(zhuǎn)換格式和API調(diào)用,從而支持過程定義信息間的互相轉(zhuǎn)換。這個(gè)接口也支持已完成的過程定義間的互相轉(zhuǎn)換,或過程定義的一部分。例如,過程定義的改變或者活動(dòng)中屬性的改變。
使用標(biāo)準(zhǔn)的過程定義格式有很多好處:
首先,把建立階段與運(yùn)行時(shí)期環(huán)境進(jìn)行了分離,可以使用一個(gè)建模工具來產(chǎn)生過程定義,這個(gè)過程定義可以作為很多個(gè)不同工作流運(yùn)行時(shí)期產(chǎn)品的輸入。從而用戶
可以單獨(dú)地選擇建模工具和工作流運(yùn)行時(shí)期產(chǎn)品。
其次,可以為幾個(gè)工作流機(jī)輸出過程定義,這幾個(gè)工作流機(jī)合作來構(gòu)成分布式的工作流執(zhí)行服務(wù)器。
WFMC在此部分作了以下兩個(gè)方面的工作:
(1)提出了一個(gè)元模型,可以用來表示過程定義中的對(duì)象、對(duì)象間的關(guān)系和屬性。這個(gè)元模型為不同的產(chǎn)品間的過程定義相互轉(zhuǎn)換奠定了基礎(chǔ),并形成了一套轉(zhuǎn)換
格式。
(2)工作流系統(tǒng)間或工作流系統(tǒng)與過程定義產(chǎn)品間的API調(diào)用,提供了公共的方法來訪問工作流過程定義。訪問可能是讀、讀/寫或者只寫操作,并且操作標(biāo)準(zhǔn)對(duì)
象集合(在元模型中定義的對(duì)象集合),或者產(chǎn)品自己的對(duì)象集合。
3基本元模型(A Basic Meta-Model)
WFMC開發(fā)了一個(gè)過程定義的元模型。元模型中定義了基本的對(duì)象類型集,來滿足簡(jiǎn)單的過程定義相互轉(zhuǎn)換。或者有開發(fā)者具體擴(kuò)展,或者在增加的功能中定義另
外的一致性級(jí)別來增加更多的對(duì)象類型。
需要為下邊的類型定義特殊的屬
性:
工作流類型定義(Workflow Type Definition)
? 工作流過程名
? 版本號(hào)
? 過程開始/結(jié)束條件
? 安全、審查、控制數(shù)據(jù)
活動(dòng)(Activity)
? 活動(dòng)名
? 活動(dòng)類型
? 進(jìn)入動(dòng)作和離開動(dòng)作
? 其他約束
轉(zhuǎn)移條件(Transition Conditions)
? 執(zhí)行條件
工作流相關(guān)數(shù)據(jù)(Workflow relevant data)
? 數(shù)據(jù)名與路徑
? 數(shù)據(jù)類型
角色(Role)
? 名稱與組織實(shí)體
? 應(yīng)用程序調(diào)用(Invoked Application)
? 類型和名稱
? 執(zhí)行參數(shù)
? 本地或者訪問路徑
在分布式工作流服務(wù)器中,可能要在過程定義時(shí),為每個(gè)工作流機(jī)分配活動(dòng),可以作為活動(dòng)的一個(gè)附加屬性。過程定義能影響安全性與管理。定義的交換格式,要支持符號(hào)命名方案,這些符號(hào)可以映射到工作流執(zhí)行服務(wù)器中的實(shí)際名稱與地址。這種映射可以使用動(dòng)態(tài)地址定位機(jī)制來實(shí)現(xiàn)(例如,目錄服務(wù)器),也可以使用其他的外部過程定義機(jī)制實(shí)現(xiàn)。也有其他的一些行業(yè)在相關(guān)的方面作研究,例如過程建模和CASE轉(zhuǎn)換工具;WFMC提出的方法也適用與其他行業(yè),預(yù)
先定義適當(dāng)?shù)霓D(zhuǎn)換格式。
4訪問過程定義的 API(APIs to access Process Definitions)
用來支持訪問過程定義數(shù)據(jù)的API命令集。希望規(guī)范中包含下邊列出的通用類型功能。命令集應(yīng)該提供命令操作表,和操作的對(duì)象、屬性,包括:
建立會(huì)話(Session Establishment)
? 連接/斷開參與系統(tǒng)間的會(huì)話
工作流定義操作(Workflow Definition Operationis)
? 從過程定義庫或者其他資源中,獲得工作流過程的名稱列表
? 選擇工作流過程定義,為更多的對(duì)象級(jí)操作提供會(huì)話句柄
? 讀/寫上層工作流過程定義對(duì)象
工作流定義對(duì)象操作(Workflow Definition Object Operations)
? 創(chuàng)建、恢復(fù)、刪除工作流定義中的對(duì)象
? 恢復(fù)、設(shè)置、刪除對(duì)象的屬性
3.2工作流執(zhí)行服務(wù)
1什么是工作流執(zhí)行服務(wù)器
由一個(gè)或多個(gè)工作流機(jī)構(gòu)成的軟件服務(wù)器,用來創(chuàng)建、管理、執(zhí)行工作流實(shí)例。應(yīng)用程序可能會(huì)通過WAPI來與這個(gè)服務(wù)交互。
在模型中,過程與活動(dòng)控制邏輯間有一個(gè)邏輯上的分離,活動(dòng)控制邏輯構(gòu)成工作流執(zhí)行服務(wù)器;過程與應(yīng)用工具間、與終端用戶任務(wù)間也有一個(gè)邏輯上的分離,應(yīng)用工具和任務(wù)建立起對(duì)每個(gè)相關(guān)活動(dòng)的處理。這種邏輯上的分離,為制定更多的行業(yè)標(biāo)準(zhǔn)提供了機(jī)會(huì),也為在工作流程序中集成用戶具體的應(yīng)用工具提供了機(jī)會(huì)。
使用下邊兩個(gè)接口中的一個(gè),就可以使工作流機(jī)訪問外部資源:
客戶端應(yīng)用程序接口(The client application interface),通過這個(gè)接口工作流機(jī)可以與任務(wù)表處理器交互,代表用戶資源來組織任務(wù)。然后由任務(wù)表處理器負(fù)責(zé),從任務(wù)表中選擇、推進(jìn)任務(wù)項(xiàng)。由任務(wù)表處理器或者終端用戶來控制應(yīng)用工具的活動(dòng)。
應(yīng)用程序調(diào)用接口(The invoked application interface),允許工作流機(jī)直接激活一個(gè)應(yīng)用工具,來執(zhí)行一個(gè)活動(dòng)。典型的是調(diào)用以后臺(tái)服務(wù)為主的應(yīng)用程序,沒有用戶接口;當(dāng)執(zhí)行活動(dòng)要用到的工具,需要與終端用戶交互,通常是使用客戶端應(yīng)用程序接口來調(diào)用那個(gè)工具,這樣可以為用戶安排任務(wù)時(shí)間表提供更多的靈活性。
在分布式的工作流執(zhí)行服務(wù)器中,每個(gè)工作流機(jī)控制過程執(zhí)行的一部分,并與這部分過程中的活動(dòng)所要用到的用戶、應(yīng)用工具進(jìn)行交互。在分布式的執(zhí)行服務(wù)器中有公共的名稱空間與管理范圍的,從而過程定義、用戶/應(yīng)用程序的名稱在一致的標(biāo)準(zhǔn)下被處理。分布式工作流系統(tǒng),在工作流機(jī)間采用特殊的協(xié)議和信息轉(zhuǎn)換格式,來同步工作流機(jī)的操作、過程交換和活動(dòng)控制信息。也許工作流相關(guān)數(shù)據(jù)也要在工作流機(jī)間進(jìn)行傳遞。在單一的工作流執(zhí)行服務(wù)器中,這些操作都是由開發(fā)商自己定義的。
在工作流機(jī)間需要一個(gè)標(biāo)準(zhǔn)的交換格式,來實(shí)現(xiàn)異種產(chǎn)品間的調(diào)用。使用接口4,執(zhí)行服務(wù)器可以把活動(dòng)或者子過程轉(zhuǎn)移到另外一個(gè)(異種)執(zhí)行服務(wù)器中執(zhí)行。在工作流參考模型中,這被稱作“工作流機(jī)交互(Workflow Engine Interchange)”。
2過程和活動(dòng)狀態(tài)變遷(Process and Activity Transitions)
工作流執(zhí)行服務(wù)可以看作是一個(gè)狀態(tài)變遷機(jī)器,過程或者活動(dòng)的實(shí)例在響應(yīng)外部事件、工作流機(jī)負(fù)責(zé)的控制判斷后,其狀態(tài)發(fā)生改變。
下圖描述了過程實(shí)例的基本狀態(tài)變遷方案:
在上圖中,發(fā)生狀態(tài)轉(zhuǎn)移(用箭頭表示)來響應(yīng)WAPI的命令;過程定義中的轉(zhuǎn)移條件滿足,也可能發(fā)生狀態(tài)轉(zhuǎn)移。
初始化(Initiated)—過程實(shí)例被創(chuàng)建,包括與過程狀態(tài)相關(guān)的日期、工作流相關(guān)數(shù)據(jù),但是過程還沒有滿足條件,不能執(zhí)行。
運(yùn)行(Running)—過程實(shí)例已經(jīng)執(zhí)行,過程中的活動(dòng)如果條件滿足就可以執(zhí)行。
激活(Active)—過程中的一個(gè)或者多個(gè)活動(dòng)已經(jīng)被執(zhí)行。
掛起(Suspended)—過程實(shí)例被靜止,并且過程中的活動(dòng)不能執(zhí)行,直到過程返回到運(yùn)行狀態(tài)。
結(jié)束(Completed)— 過程實(shí)例滿足結(jié)束條件;所有的完成后操作都將被執(zhí)行(例如記錄日志、或者統(tǒng)計(jì)信息),并且銷毀過程實(shí)例。
終止(Terminated)— 過程實(shí)例在正常結(jié)束前被停止;所有的完成后操作都將被執(zhí)行(例如記錄錯(cuò)誤信息、或者恢復(fù)數(shù)據(jù)),并且銷毀過程實(shí)例。
活動(dòng)是不能被中斷的,例如工作流執(zhí)行服務(wù)器一旦開始了一個(gè)活動(dòng),就不能掛起或者終止這個(gè)活動(dòng)。這就意味著,只有在所有運(yùn)行中的活動(dòng)結(jié)束后,并且過程返回到運(yùn)行狀態(tài),才能對(duì)過程執(zhí)行掛起、重啟、終止等命令。另外,可能需要把幾個(gè)活動(dòng)放在一起作為“原子單元”,這些原子單元要執(zhí)行就全部被執(zhí)行完,如果中途出現(xiàn)異常則返回到開始點(diǎn),重新執(zhí)行??芍袛嗷顒?dòng)的處理辦法和原子活動(dòng)單元的重新啟動(dòng)能力,需要進(jìn)一步的考慮,這超出了WFMC的初期工作范圍。
忽略那些額外的復(fù)雜事物,活動(dòng)實(shí)例的基本狀態(tài)和轉(zhuǎn)移如下圖:
一個(gè)活動(dòng)的基本狀態(tài)有:
初始化—過程實(shí)例中的活動(dòng)已經(jīng)被創(chuàng)建,但是還沒有激活(例如,活動(dòng)的進(jìn)入條件沒有滿足),并且沒有任務(wù)需要處理。
激活 —?jiǎng)?chuàng)建好的任務(wù),分配這個(gè)活動(dòng)來處理。
掛起—活動(dòng)實(shí)例被靜止,并直到活動(dòng)返回到初始化狀態(tài),才能為其分配任務(wù)。
結(jié)束 —活動(dòng)實(shí)例執(zhí)行完成。
當(dāng)然,一個(gè)產(chǎn)品也可以實(shí)現(xiàn)一些其他的狀態(tài)類型,或者使用不同基本狀態(tài)和轉(zhuǎn)移來代表上圖中的狀態(tài)和轉(zhuǎn)移。參考模型沒有指定工作流系統(tǒng)的內(nèi)部行為,但是狀態(tài)
轉(zhuǎn)移闡明了,API命令集的影響范圍的基本觀點(diǎn)。工作流應(yīng)用編程接口與數(shù)據(jù)交換(Workflow Application programming Interface & Interchange)
WAPI可以被看作是一套由工作流執(zhí)行服務(wù)器支持的API調(diào)用和數(shù)據(jù)交換集合,這個(gè)集合在在工作流執(zhí)行服務(wù)器的邊界處,負(fù)責(zé)與其他資源交互。盡管結(jié)構(gòu)中涉及到了WAPI中的5個(gè)接口,但是每一個(gè)接口中的許多功能都是公共的(即,同時(shí)被2個(gè)或者多個(gè)接口共同擁有)。
WAPI的主要功能由API調(diào)用組成。同時(shí)在WFMC也定義了接口間的,數(shù)據(jù)轉(zhuǎn)換格式,例如過程定義。工作流控制,工作流相關(guān)數(shù)據(jù)和工作流應(yīng)用數(shù)據(jù)
工作流執(zhí)行服務(wù)器維護(hù)內(nèi)部控制數(shù)據(jù),來確定過程實(shí)例或活動(dòng)實(shí)例的狀態(tài),并支持其他內(nèi)部狀態(tài)信息。這種內(nèi)部控制數(shù)據(jù)不能被訪問,也不能進(jìn)行轉(zhuǎn)換。但是有些信息內(nèi)容是要對(duì)外提供的,來響應(yīng)某些特殊操作(例如,查詢過程狀態(tài)等)。同種工作流執(zhí)行服務(wù)器可能在工作流機(jī)間交換這些信息,通過使用具體的內(nèi)部對(duì)話。
工作流控制數(shù)據(jù)—由工作流管理系統(tǒng)和(或)工作流機(jī)管理的內(nèi)部數(shù)據(jù)。
工作流管理系統(tǒng)使用工作流相關(guān)數(shù)據(jù)來判斷轉(zhuǎn)移條件是否滿足,并選擇下一個(gè)要執(zhí)行的活動(dòng)。這些數(shù)據(jù)能被工作流應(yīng)用程序訪問,這些數(shù)據(jù)也需要通過工作流執(zhí)行軟件在活動(dòng)間傳遞。當(dāng)在同種環(huán)境下進(jìn)行操作時(shí),如果過程的執(zhí)行要在2個(gè)或者多個(gè)工作流中進(jìn)行,那么這些數(shù)據(jù)就要在工作流機(jī)間進(jìn)行傳遞;這個(gè)過程可能需要名稱映射
或者數(shù)據(jù)轉(zhuǎn)化。
工作流相關(guān)數(shù)據(jù)—工作流管理系統(tǒng)用來判斷過程中狀態(tài)轉(zhuǎn)移是否可以執(zhí)行的數(shù)據(jù)。過程實(shí)例中的每個(gè)活動(dòng)中可能都需要進(jìn)行數(shù)據(jù)操作。因此,工作流模型必須能夠在所有的處理活動(dòng)間的“情形數(shù)據(jù)”交換。在一些環(huán)境中,可能需要情形數(shù)據(jù)在不同的工具數(shù)據(jù)格式間進(jìn)行轉(zhuǎn)換,例如,把文檔從一種格式轉(zhuǎn)成另外一種格式。(有的系統(tǒng)中,數(shù)據(jù)轉(zhuǎn)換是工作流執(zhí)行服務(wù)器來完成的;有的系統(tǒng)中直接把數(shù)據(jù)轉(zhuǎn)換定義成過程中的一個(gè)活動(dòng)來執(zhí)行)
工作流應(yīng)用程序數(shù)據(jù)—應(yīng)用程序的具體數(shù)據(jù),并且不能被工作流管理系統(tǒng)訪問。
工作流應(yīng)用程序數(shù)據(jù)不能被工作流執(zhí)行軟件所使用,只與應(yīng)用程序或者用戶任務(wù)的執(zhí)行相關(guān)。就像工作流相關(guān)數(shù)據(jù)一樣,在同種執(zhí)行服務(wù)器中應(yīng)用程序數(shù)據(jù)會(huì)在工
作流機(jī)間進(jìn)行傳遞,來保證活動(dòng)的正常執(zhí)行。
應(yīng)用程序與其需要用到的工作流相關(guān)或應(yīng)用程序數(shù)據(jù)間的關(guān)系,會(huì)在工作流定義中說明。在一些情況下,可能是隱含關(guān)系(例如,在一些系統(tǒng)中情形數(shù)據(jù)會(huì)作為活動(dòng)導(dǎo)航的一部分,傳遞到下一個(gè)活動(dòng)中),然而在其他情況下(例如訪問共享對(duì)象存儲(chǔ)),就需要明確定義對(duì)象的名字和應(yīng)用程序的訪問路徑。在參考模型中,把前一種情況
稱為“直接數(shù)據(jù)交換”,后一種稱為“間接數(shù)據(jù)交換”。數(shù)據(jù)交換(Data Interchange)
工作流相關(guān)數(shù)據(jù)和應(yīng)用程序數(shù)據(jù)的交換,都需要訪問WAPI,來支持在3個(gè)運(yùn)行時(shí)期功能中的協(xié)同工作:
? 任務(wù)表處理器(Interface 2)
? 應(yīng)用程序調(diào)用(Interface 3)
? 工作流機(jī)交換(Interface 4)
本節(jié)講述數(shù)據(jù)交換的基本原理;提出了API命令集,包括從工作流機(jī)中接收/返回工作流相關(guān)數(shù)據(jù)的具體調(diào)用;并為直接數(shù)據(jù)交換和間接數(shù)據(jù)交換定義了,與上述
API命令集不同的命令集。
由Email驅(qū)動(dòng)的工作流系統(tǒng)是一種典型的應(yīng)用程序數(shù)據(jù)的直接交換,這樣的系統(tǒng)中,應(yīng)用程序數(shù)據(jù)物理地在活動(dòng)間進(jìn)行傳遞。這種情況下,不需要明確定義活動(dòng)與應(yīng)用程序數(shù)據(jù)間的關(guān)系;應(yīng)用程序數(shù)據(jù)作為標(biāo)準(zhǔn)工作流活動(dòng)導(dǎo)航的一部分進(jìn)行傳遞,并且在應(yīng)用程序調(diào)用時(shí)在本地直接與程序相關(guān)。需要在活動(dòng)間提供數(shù)據(jù)格式轉(zhuǎn)換時(shí),應(yīng)用程序需要定義與之相關(guān)的數(shù)據(jù)類型,可以作為一個(gè)屬性來定義(這個(gè)屬性信息可能存放在軟件執(zhí)行環(huán)境中,或者能被整個(gè)工作流執(zhí)行服務(wù)器訪問,例如地址目錄)。這樣,使用同種工作流應(yīng)用程序構(gòu)造的系統(tǒng),就能夠根據(jù)每個(gè)應(yīng)用程序所定義的數(shù)據(jù)類型進(jìn)行數(shù)據(jù)轉(zhuǎn)換。需要采用一些協(xié)議來傳遞和保存數(shù)據(jù)類型信息,例如使用 X.400 對(duì)象標(biāo)識(shí)符,或者Internet mail MIME機(jī)制。
一些類型的工作流系統(tǒng)(例如,使用共享文檔存儲(chǔ)實(shí)現(xiàn)的),在活動(dòng)間不能從物理上傳遞應(yīng)用程序數(shù)據(jù)。在這些系統(tǒng)中,應(yīng)用程序要使用適當(dāng)?shù)脑L問路徑才能進(jìn)行數(shù)據(jù)訪問。這樣,必須要有統(tǒng)一的訪問路徑命名方案,必須是有效的訪問權(quán)限,并且由激活的過程實(shí)例來控制訪問權(quán)限。在這種情況下,如果需要,在建模時(shí),數(shù)據(jù)格式轉(zhuǎn)換
也可以作為一個(gè)活動(dòng)。
同種系統(tǒng)中可能使用私有的對(duì)象命名協(xié)定和訪問權(quán)限,但是異種系統(tǒng)需要一個(gè)公共的方案。在異種系統(tǒng)中,在過程定義時(shí)必須包含對(duì)應(yīng)用程序數(shù)據(jù)對(duì)象存儲(chǔ)的訪問
路徑,或者在活動(dòng)間的導(dǎo)航必須包含訪問路徑的傳遞。
同種工作流產(chǎn)品進(jìn)行協(xié)調(diào)工作,其必須采用相同的應(yīng)用程序數(shù)據(jù)交換方法,或者通過一個(gè)網(wǎng)關(guān)機(jī)制進(jìn)行協(xié)作,網(wǎng)關(guān)機(jī)制通過適當(dāng)?shù)膮f(xié)議,可以在兩種不同的數(shù)據(jù)交換方法間進(jìn)行映射,也可以處理對(duì)象命名與數(shù)據(jù)類型轉(zhuǎn)換的不同。以后還需要對(duì)這部分進(jìn)行細(xì)化,但有可能制定一個(gè)交換標(biāo)準(zhǔn),來包含上述的兩種情況。
工作流應(yīng)用程序或相關(guān)數(shù)據(jù)交換的方法,都是通過3個(gè)接口來處理的;下邊列出了這3個(gè)接口:
客戶端應(yīng)用程序接口—工作流相關(guān)數(shù)據(jù)可以包含在任務(wù)中。工作流相關(guān)數(shù)據(jù)也可以通過共享的對(duì)象存儲(chǔ)形式來間接傳遞。
應(yīng)用程序調(diào)用接口—依靠應(yīng)用程序調(diào)用接口進(jìn)行數(shù)據(jù)轉(zhuǎn)換,可能需要在調(diào)用服務(wù)中把數(shù)據(jù)包含在具體應(yīng)用程序協(xié)議中。激活的工作流應(yīng)用程序可以使用,讀/寫工作
流相關(guān)數(shù)據(jù)的API,或者用這些API來構(gòu)造通用應(yīng)用程序代理。
工作流機(jī)協(xié)作接口—與客戶端應(yīng)用程序接口相似,盡管在不同的系統(tǒng)中支持不同的應(yīng)用程序數(shù)據(jù)交換方法,但是網(wǎng)關(guān)功能的使用,需要在兩種方法間進(jìn)行映射,也
要處理名稱問題。
3.3工作流客戶應(yīng)用:
1工作流客戶端應(yīng)用程序(Workflow Client Applications)
任務(wù)表處理器是在需要調(diào)用人類資源的活動(dòng)時(shí)用來與終端用戶進(jìn)行交互的軟件。任務(wù)表處理器可以作為工作流產(chǎn)品的一部分提供給用戶,也可以由用戶自己開發(fā)。在其他情況中,工作流可能要與普通的辦公系統(tǒng)進(jìn)行集成,例如Email,來為終端用戶提供一個(gè)統(tǒng)一的任務(wù)管理系統(tǒng)。這就要求在工作流執(zhí)行服務(wù)器與工作流客戶端應(yīng)用程序
間有一個(gè)非常靈活的通信機(jī)制,來構(gòu)建各種可能遇到的運(yùn)行系統(tǒng)。在工作流模型中,通過客戶端應(yīng)用程序與工作流機(jī)間的定義良好的接口進(jìn)行交互。在這個(gè)接口中包含任務(wù)表—由工作流機(jī)分配給用戶的任務(wù)序列。最簡(jiǎn)單的情況是,工作流機(jī)訪問任務(wù)表,來把任務(wù)分配給用戶;任務(wù)表處理器訪問任務(wù)表,向任務(wù)表中添加任務(wù)項(xiàng)。有許多不同的產(chǎn)品來實(shí)現(xiàn)任務(wù)表的交互。
任務(wù)表中任務(wù)項(xiàng)的激活(例如,啟動(dòng)應(yīng)用程序,連接工作流相關(guān)數(shù)據(jù)),可能是由工作流客戶端應(yīng)用程序或者終端用戶控制的。在工作流客戶端應(yīng)用程序與工作流執(zhí)行服務(wù)器間定義了一系列的方法,用來向任務(wù)表中添加任務(wù)項(xiàng)、從任務(wù)表中刪除完成的活動(dòng)、激活臨時(shí)掛起的活動(dòng),等。
任務(wù)表處理器也可以調(diào)用應(yīng)用程序,或者直接調(diào)用,或者由終端用戶調(diào)用。通常希望,任務(wù)表處理器的應(yīng)用程序調(diào)用范圍能夠受到運(yùn)行環(huán)境的限制,盡管這樣會(huì)給
模型帶來通用性的限制,但這種情況是一直存在的。
與任務(wù)表相關(guān)的部分活動(dòng)的數(shù)據(jù),是任務(wù)表處理器用來調(diào)用應(yīng)用程序所必須的信息。當(dāng)應(yīng)用程序數(shù)據(jù)是強(qiáng)類型時(shí),在任務(wù)表處理器中要存放一個(gè)聯(lián)接,用來實(shí)現(xiàn)程序的調(diào)用。在其他情況中,在任務(wù)表處理器與工作流機(jī)間要進(jìn)行完全的應(yīng)用程序名稱和地址信息的交換;這時(shí),工作流客戶端應(yīng)用程序也可能實(shí)現(xiàn)一些應(yīng)用程序調(diào)用接口(接
口3)中的功能,來獲得必要的信息。
任務(wù)表中可能要包含一個(gè)過程中的幾個(gè)不同實(shí)例的相關(guān)任務(wù),或者包含幾個(gè)不同過程中的一個(gè)共同活動(dòng)項(xiàng)。一個(gè)任務(wù)表處理器可能要與幾個(gè)不同的工作流機(jī)、幾個(gè)不同的工作流執(zhí)行服務(wù)器進(jìn)行交互。(按照每個(gè)產(chǎn)品的實(shí)現(xiàn),為每個(gè)過程單獨(dú)維護(hù)一個(gè)物理上分開的任務(wù)表,或者任務(wù)表處理器把幾個(gè)不同的任務(wù)表聯(lián)合到一起,呈現(xiàn)給終端
用戶)
因此,客戶端工作流應(yīng)用程序與工作流機(jī)間的接口必須十分靈活,來滿足下邊的幾方面功能的實(shí)現(xiàn)多樣性:
? 過程和活動(dòng)表示符
? 資源名和地址
? 數(shù)據(jù)引用和數(shù)據(jù)結(jié)構(gòu)
? 可選擇的通訊機(jī)制 工作流客戶端應(yīng)用程序接口(接口 2)
滿足上述需求的方法,在標(biāo)準(zhǔn)API集后,可以為從工作流應(yīng)用程序到工作流機(jī)和任務(wù)表的訪問提供一致的形式,而不管產(chǎn)品的實(shí)現(xiàn)特性。
API與其參數(shù)可以映射到幾個(gè)不同的通信機(jī)制上,來適應(yīng)各種不同的工作流實(shí)現(xiàn)模型。
WFMC在其文檔中,分開發(fā)布API規(guī)范;下邊是對(duì)客戶端應(yīng)用程序API使用的一個(gè)概述,分成幾個(gè)不同的功能。提供了對(duì)單獨(dú)或者多個(gè)過程活動(dòng)實(shí)例的操作命令,就像任務(wù)表一樣。
建立會(huì)話(Session Establishment)
? 連接/斷開參與系統(tǒng)間的會(huì)話
工作流定義操作(Workflow Definition Operations)
? 對(duì)工作流過程定義名稱或者屬性的恢復(fù)/查詢功能
過程控制功能(Process Control Functions)
? 創(chuàng)建/開始/結(jié)束一個(gè)過程實(shí)例
? 掛起/喚醒一個(gè)過程實(shí)例
? 在過程實(shí)例或活動(dòng)實(shí)例中強(qiáng)制一個(gè)狀態(tài)發(fā)生改變
? 查詢過程實(shí)例或活動(dòng)實(shí)例的屬性
過程狀態(tài)功能(Process Status Functions)
? 打開/關(guān)閉過程實(shí)例或活動(dòng)實(shí)例的查詢,設(shè)置過濾標(biāo)準(zhǔn)
? 獲取過程實(shí)例或活動(dòng)實(shí)例的詳細(xì)信息
? 獲取具體過程或活動(dòng)的詳細(xì)信息
任務(wù)表/任務(wù)項(xiàng)處理功能(Worklist/Workitem Handling Functions)
? 打開/關(guān)閉任務(wù)表查詢,設(shè)置過濾標(biāo)準(zhǔn)
? 獲取任務(wù)表中的項(xiàng)目
? 通知選擇/重分配/結(jié)束一個(gè)任務(wù)項(xiàng)
? 查詢?nèi)蝿?wù)項(xiàng)屬性
過程管理功能(Process Supervisory Functions)
? 改變過程定義或者它的實(shí)例的運(yùn)行狀態(tài)
? 改變某種類型的所有過程實(shí)例或活動(dòng)實(shí)例的狀態(tài)
? 為某種類型的所有過程實(shí)例或活動(dòng)實(shí)例的屬性賦值
? 終止所有過程實(shí)例
數(shù)據(jù)處理功能(Data Handling Functions)
? 恢復(fù)/返回工作流相關(guān)或應(yīng)用程序數(shù)據(jù)
應(yīng)用程序調(diào)用(Application Invocation)
? 上邊對(duì)功能的概括,為支持任務(wù)表處理器對(duì)應(yīng)用程序調(diào)用提供了基礎(chǔ)。應(yīng)用程序調(diào)用功能的一些命令是與客戶端應(yīng)用程序環(huán)境相關(guān)的。
? 有些產(chǎn)品可以只實(shí)現(xiàn)全部WAPI的一部分;以后會(huì)給出進(jìn)一步的考慮,定義一致性級(jí)別,來滿足市場(chǎng)中不同的產(chǎn)品間的,不同的協(xié)作需要。
3.4被調(diào)應(yīng)用程序:
1應(yīng)用程序調(diào)用(Invoked Applications)
所有的WFM產(chǎn)品都沒有足夠的邏輯單元,知道如何調(diào)用所有的應(yīng)用程序,這些應(yīng)用程序存在異種的產(chǎn)品環(huán)境中。這就需要,能夠處理在所有平臺(tái)下和網(wǎng)絡(luò)環(huán)境中進(jìn)行調(diào)用的邏輯,并需要能使用公共格式和編碼進(jìn)行應(yīng)用數(shù)據(jù)或相關(guān)數(shù)據(jù)傳遞的方法。
然而,許多工作流系統(tǒng)能夠使用了更多受限制的應(yīng)用程序,特別是那些采用強(qiáng)制數(shù)據(jù)類型和直接與應(yīng)用程序相連的系統(tǒng)。在其他情況中,應(yīng)用程序?qū)Σ僮鞯恼{(diào)用,可能是通過標(biāo)準(zhǔn)的交換機(jī)制來實(shí)現(xiàn)的,例如OSI TP協(xié)議或者X.400。一些實(shí)現(xiàn)使用了“應(yīng)用程序代理(Application Agent)”,把這些在在標(biāo)準(zhǔn)接口之后的各種方法包含在工作流執(zhí)行服務(wù)器中。也有可能開發(fā)“Workflow enabled”應(yīng)用工具,這種工具使用標(biāo)準(zhǔn)的API集來與工作流執(zhí)行服務(wù)器進(jìn)行通信,來接收應(yīng)用程序數(shù)據(jù)、信號(hào)和響應(yīng)活動(dòng)事件等。這些API可以被應(yīng)用工具直接調(diào)用;也可以被應(yīng)用程序代理過過程調(diào)用,作為與其他應(yīng)用程序(不包含任何工作流技術(shù)的程序)交互的前端。應(yīng)用程序調(diào)用接口(接口 3)
下邊是接口3的結(jié)構(gòu),“工作流”類型的應(yīng)用程序或應(yīng)用程序代理,可以直接使用這個(gè)結(jié)構(gòu)。
在簡(jiǎn)單的情況中,工作流機(jī)在本地處理應(yīng)用程序調(diào)用,使用過程定義中的信息來確定,活動(dòng)的性質(zhì)、將要調(diào)用的應(yīng)用程序的類型和所需的數(shù)據(jù)。被調(diào)用的應(yīng)用程序可能存儲(chǔ)在工作流機(jī)中,或者與工作流機(jī)一同存儲(chǔ)在相同的平臺(tái)下,或者存放在一個(gè)獨(dú)立的網(wǎng)絡(luò)訪問的平臺(tái)中;過程定義中有足夠的應(yīng)用程序類型和尋址信息(工作流機(jī)的特殊需求),來實(shí)現(xiàn)應(yīng)用程序調(diào)用。在這種情況下,應(yīng)用程序命名與尋址的協(xié)定是處于工作流機(jī)與過程定義之間的。
應(yīng)用程序調(diào)用API的詳細(xì)語法、語義作為WFMC規(guī)范的一部分給出。操作覆蓋了一些不同的基本接口,包括上表中的一部分,其中一些操作是同步的,一些是異步的。API的操作可以是單線程的,也可以是多線程的,后者使用活動(dòng)ID來區(qū)分線程。下邊是應(yīng)用程序調(diào)用可以使用的一些命令概括:
創(chuàng)建會(huì)話(Session Establishment)
? 連接/斷開應(yīng)用程序會(huì)話
活動(dòng)管理功能(Activity Management Functions)
? 開始活動(dòng)
? 掛起/恢復(fù)/放棄活動(dòng)
? 活動(dòng)完成通知
? 信號(hào)事件
? 查詢活動(dòng)屬性
數(shù)據(jù)處理功能(Data Handling Functions)
? 提供工作流相關(guān)數(shù)據(jù)
? 提供應(yīng)用程序數(shù)據(jù)或數(shù)據(jù)地址
更復(fù)雜的情況,異種工作流機(jī)間的協(xié)同工作,可能需要在工作流機(jī)間傳遞應(yīng)用程序調(diào)用信息,或者作為運(yùn)行時(shí)期數(shù)據(jù)交換的一部分,或者通過在過程定義階段后導(dǎo)
入過程定義來實(shí)現(xiàn)。
3.5其他工作流執(zhí)行服務(wù):
WFMC的一個(gè)主要目標(biāo)是,為不同開發(fā)商的工作流系統(tǒng)產(chǎn)品,相互間能夠進(jìn)行無逢傳遞任務(wù)項(xiàng),定義標(biāo)準(zhǔn)。
工作流產(chǎn)品的特性變化多樣。在WFMC的協(xié)同工作標(biāo)準(zhǔn)中,沒有強(qiáng)迫開發(fā)商必須提供一個(gè)只面向用戶需求的產(chǎn)品或者只考慮協(xié)同工作。
WFMC把焦點(diǎn)聚集到,開發(fā)多種不同的協(xié)同工作框架,這些框架可以操作一系列標(biāo)準(zhǔn)的協(xié)調(diào)工作,從簡(jiǎn)單的任務(wù)傳遞到整個(gè)工作流系統(tǒng)的協(xié)同工作(包括過程定義轉(zhuǎn)換、工作流相關(guān)數(shù)據(jù)交換、通用的界面等)。簡(jiǎn)單的協(xié)同工作,WFMC的協(xié)同工作定義將在最初就能支持;而復(fù)雜的協(xié)同工作,還需要進(jìn)一步的研究。
盡管可以開發(fā)一個(gè)非常復(fù)雜的協(xié)同工作框架,由許多個(gè)工作流機(jī)構(gòu)成個(gè)執(zhí)行服務(wù)器,但是這種框架不會(huì)在近期實(shí)現(xiàn),因?yàn)檫@需要所有的工作流機(jī)都可以解釋一個(gè)公共的過程定義和共享公共的工作流控制數(shù)據(jù)集,事實(shí)上是維護(hù)異種工作流機(jī)間的一個(gè)共享過程視圖。現(xiàn)階段更現(xiàn)實(shí)的目標(biāo)是,能夠在運(yùn)行時(shí)期傳遞過程的某些部分,來支持不
同的執(zhí)行服務(wù)器運(yùn)行。
WFMC定義了4個(gè)協(xié)同工作模型:鏈鎖式,子過程嵌套,P2P(Peer-to-Peer),相似同步,包含多種協(xié)同工作能力級(jí)別
3.6管理和監(jiān)視工具:
WFMC規(guī)范的最后關(guān)注的是為管理和監(jiān)視功能開發(fā)公共的接口標(biāo)準(zhǔn),這樣一個(gè)開發(fā)商的產(chǎn)品就可以用來管理其他工作流機(jī)的運(yùn)行。通過公共的接口,幾個(gè)不同的工
作流執(zhí)行服務(wù)器可以共享,管理和監(jiān)視功能。
盡管,過程狀態(tài)命令在接口定義中已經(jīng)描述了,但一致認(rèn)為,在某些行業(yè)中需要,進(jìn)行全部狀態(tài)監(jiān)視和提取信息的功能。WFMC提出的接口,是要讓用戶能夠得到工作流運(yùn)行狀態(tài)的完整視圖,無論是什么樣的工作流系統(tǒng);同時(shí),也希望能提供一套全面的功能集,進(jìn)行系統(tǒng)管理,包括安全性、控制和權(quán)限。
接口中包含WAPI集中的一些具體命令,來操作管理和監(jiān)視功能。另外,進(jìn)一步的討論,期望能夠確定在什么范圍內(nèi),這個(gè)接口可以使用現(xiàn)有的協(xié)議(如CMIP、SNMP),來設(shè)置、恢復(fù)管理狀態(tài)和統(tǒng)計(jì)信息(定義在開放MIB中——Management Information Base)
“工作流” 已經(jīng)成為了一個(gè)事實(shí)存在的概念和名詞,可是到了2007年依然找不到?jīng)]有能夠明確的定義,在互連網(wǎng)上,我們隨便在GOOGLE或百度上搜索,找到關(guān)于工作流的內(nèi)容及定義可以說是百家爭(zhēng)鳴,是標(biāo)準(zhǔn)、是引擎、是技術(shù)、解決方案、是思想、是架構(gòu)。。到底是什么?
工作流到底是什么呢,對(duì)于從事做計(jì)算機(jī)軟件設(shè)計(jì)的人而言,它是一項(xiàng)技術(shù)、是我們?yōu)槲覀兊目蛻籼峁┙鉀Q方案框架的一部分;對(duì)于從事企業(yè)信息化管理的人而言,它是一種思想,是我們降低用戶的IT運(yùn)維成本的一種方法;對(duì)于從事軟件開發(fā)的人而言,它是一個(gè)架構(gòu),是我們?nèi)绾卫贸墒旆€(wěn)定的接口和組件低成本的開發(fā)出適應(yīng)用戶流程變化的應(yīng)用程序??偠灾?,工作流通過技術(shù)的手段,融入管理思想、為管理提供“人、事、物、流程、時(shí)間、條件”等多維管理能力,幫助用戶實(shí)現(xiàn)管理目標(biāo)。
既然今天談的是“工作流”技術(shù),那文章的重點(diǎn)就是占在技術(shù)的角度來討論工作流,我們可以從以下幾個(gè)方面來探討工作流。
1、為什么要使用工作流技術(shù)
對(duì)于這個(gè)問題我們可以從軟件企業(yè)的解決方案策略、用戶運(yùn)維的成本上及企業(yè)信息化規(guī)劃等幾個(gè)角度來考慮這個(gè)問題。
首先從解決方案提供者的角度來說,我們的CIO/CTO面臨的一個(gè)很大的壓力是在于我們?yōu)橛脩籼峁┑慕鉀Q方案滯后于我們的用戶的商業(yè)策略,我們用戶總是在變化中發(fā)展,商業(yè)策略面臨著市場(chǎng)、競(jìng)爭(zhēng)對(duì)手的壓力而改變,而我們提供的解決方案卻不能夠快速適應(yīng)這樣的變化。工作流技術(shù)使這樣的一種解決方案成為可能,同時(shí)工作流技術(shù)也為用戶企業(yè)實(shí)現(xiàn)企業(yè)戰(zhàn)略執(zhí)行提供了實(shí)現(xiàn)的平臺(tái)。
從IT運(yùn)維的角度來說,目前很多IT公司面臨了一種CTO(總體擁有成本)成本比例的變化趨勢(shì)。因?yàn)榇蟛糠諭T企業(yè)或IT部門的IT基礎(chǔ)架構(gòu)的現(xiàn)狀,使我們用戶運(yùn)行維護(hù)的成本在逐步的升高,研發(fā)新能力的成本在逐步壓縮,但我們的IT投資始終會(huì)變緩,特別是IT運(yùn)行維護(hù)的成本在總體擁有成本中的比例。意味著IT企業(yè)和IT部門利益的空間將越來越小,其實(shí)我們身邊的很多案例里就有很多IT企業(yè)被某些項(xiàng)目拖累致倒閉的現(xiàn)象。工作流技術(shù)可以脫離開發(fā)環(huán)境而設(shè)計(jì)業(yè)務(wù)流程的特性讓企業(yè)IT運(yùn)行維護(hù)成本大大的降低,從而提高了IT企業(yè)和IT部門的利益空間。
從企業(yè)信息規(guī)劃的角度來說,可以回顧前些年的ERP、進(jìn)銷存、CRM等系統(tǒng),大部分是管事的,系統(tǒng)主要是記錄數(shù)據(jù)及其關(guān)聯(lián)關(guān)系等,是靜態(tài)為主的,但隨著社會(huì)的發(fā)展與競(jìng)爭(zhēng)格局的變化,企業(yè)的策略越來越需要能隨需而動(dòng),生產(chǎn)管理活動(dòng)也始終是“人”參與的活動(dòng),很多時(shí)候人需要激勵(lì)、參與、滿足、約束、被管理等等才能很好達(dá)到管理目標(biāo)。因此新一代管理系統(tǒng)中協(xié)同性、靈活性、擴(kuò)展性需求相當(dāng)重要,工作流是提供協(xié)同性、靈活性、擴(kuò)展性的最佳工具。
2、工作流用在哪里
毫五疑問,工作流技術(shù)是軟件技術(shù),用在軟件設(shè)計(jì)領(lǐng)域,工作流分為業(yè)務(wù)型工作流和狀態(tài)型工作流,業(yè)務(wù)型工作流大部分是要用在管理軟件設(shè)計(jì)領(lǐng)域,為管理軟件提供靈活性、擴(kuò)展性、協(xié)同性等特質(zhì)。幫助企業(yè)實(shí)現(xiàn)戰(zhàn)略管理目標(biāo)。
常用的工作流應(yīng)用場(chǎng)景:
企業(yè)辦公自動(dòng)化系統(tǒng)
IT服務(wù)管理系統(tǒng)
客戶服務(wù)管理系統(tǒng)
物流攬收調(diào)度系統(tǒng)
設(shè)備運(yùn)維管理系統(tǒng)
質(zhì)量考核監(jiān)督系統(tǒng)
采購系統(tǒng)。。
3、如何使用工作流及哪些人使用
很多時(shí)候工作流是一個(gè)看不見摸不著的東西,存在于我們的業(yè)務(wù)管理系統(tǒng)軟件中,至于如何使用、哪些人使用可以從幾個(gè)方面說明。
工作流引擎是系統(tǒng)功能,是軟件本身去使用的,工作流架構(gòu)是包含工作流引擎使用、接口調(diào)用、業(yè)務(wù)系統(tǒng)應(yīng)用框架的,是開發(fā)人員使用的,開發(fā)人員在工作流架構(gòu)上設(shè)計(jì)開發(fā)包含工作流技術(shù)的不同業(yè)務(wù)領(lǐng)域的軟件系統(tǒng)。
工作流平臺(tái)一般是包含流程設(shè)計(jì)工具的,由企業(yè)流程管理用戶去使用,通過工作流平臺(tái)提供的流程管理工具將企業(yè)的戰(zhàn)略和制度轉(zhuǎn)化為執(zhí)行語言。
軟件系統(tǒng)普通用戶使用的則僅僅是包含企業(yè)戰(zhàn)略執(zhí)行語言的業(yè)務(wù)管理系統(tǒng)。
4、工作流技術(shù)的選型
關(guān)于工作流技術(shù)的選型,對(duì)于從事IT工作的人員來說是一個(gè)需要非常慎重選擇,在這里做些簡(jiǎn)單的闡述,工作流技術(shù)分為兩種。一種是業(yè)務(wù)流程型的,比如我們的一些事件處理、服務(wù)流程、物流攬收調(diào)度、合同審批、設(shè)計(jì)審核等,需要工作流引擎根據(jù)各種表單的內(nèi)容來人機(jī)交互來自動(dòng)管理這個(gè)過程;另一種是狀態(tài)機(jī)型的,根據(jù)一件事情的狀態(tài)變化而自動(dòng)進(jìn)行處理,如工業(yè)控制,電路控制管理等。常用于一些工業(yè)自動(dòng)化控制系統(tǒng)等。
我們經(jīng)常聽到有人說工作流引擎可以很快的就配置出一個(gè)業(yè)務(wù)系統(tǒng)出來,自定義表單,自定義流程,自定義報(bào)表等等,很快就給用戶提供一個(gè)完整的業(yè)務(wù)系統(tǒng),其實(shí)這樣的想法是非常理想的,我們?cè)陂_發(fā)我們的業(yè)務(wù)系統(tǒng)的時(shí)候我們會(huì)發(fā)現(xiàn)我們的業(yè)務(wù)系統(tǒng)不僅僅是功能的實(shí)現(xiàn),它將面臨著各個(gè)方面的需求,包括性能,并發(fā)處理能力、易用性、一致性及個(gè)性化等等,當(dāng)工作流引擎只能滿足60%的需求時(shí),我們的團(tuán)隊(duì)將為另外的40%需求付出多少成本。因此在工作流的選型上很重要的一點(diǎn)就是它對(duì)于二次開發(fā)的支持,及接口的友好特性,同時(shí)它能支持我們?cè)诠ぷ髁骰A(chǔ)上設(shè)計(jì)思路上的延續(xù)性。
因此工作流技術(shù)的選型不但要考慮工作流引擎本身功能的完整性和穩(wěn)定性,工作流架構(gòu)的擴(kuò)展性、易用性及適應(yīng)能力,還需要考慮工作流涉及開發(fā)人員、企業(yè)管理實(shí)施人員、企業(yè)用戶的習(xí)慣和易用性等。純粹的工作流的產(chǎn)品意義并不大,關(guān)鍵是否能很好的幫助企業(yè)實(shí)現(xiàn)管理目標(biāo)。
5、工作流技術(shù)的應(yīng)用
E8.Net工作流平臺(tái)融入了新一代管理軟件關(guān)注的重點(diǎn)思想,所有功能模塊應(yīng)用將權(quán)限體系、工作流引擎體系、表示邏輯體系、管理控制邏輯體系、擴(kuò)展及個(gè)性化接口體系充分結(jié)合,從架構(gòu)的設(shè)計(jì)上優(yōu)化企業(yè)個(gè)性化業(yè)務(wù)系統(tǒng)實(shí)施成本,并通過流程管理工具,為企業(yè)實(shí)施個(gè)性化的企業(yè)流程,通過記錄、監(jiān)督、跟蹤、回訪、分析企業(yè)日常事務(wù),持續(xù)改善企業(yè)管理流程,E8.Net工作流平臺(tái)開源的開發(fā)架構(gòu)設(shè)計(jì)過程中充分分析了管理行為中人的特性,基于E8開發(fā)的企業(yè)流程應(yīng)用系統(tǒng)提供了事中監(jiān)督、事后回訪、全程跟蹤的體系架構(gòu),E8工作流引擎功能設(shè)計(jì)中也充分考慮了流程和環(huán)節(jié)模型特性、環(huán)節(jié)行為人群體特性和中國特色,流轉(zhuǎn)過程中基于權(quán)限體系提供了人為因素中“主動(dòng)/被動(dòng)”異常的解決思路,解決快速實(shí)施企業(yè)業(yè)務(wù)流程需求的同時(shí),又提供了人性“非理想”狀態(tài)下的異常解決方案和防范控制解決方案。
工作流技術(shù)在協(xié)同辦公中的實(shí)現(xiàn)
http://004km.cn 2008年10月28日 17:04 比特網(wǎng)ChinaByte
一、協(xié)同辦公(OA)系統(tǒng)簡(jiǎn)介
協(xié)同辦公(OA)系統(tǒng)是一套兼具企業(yè)信息門戶、知識(shí)管理、工作流管理、人力資源管理、客戶與合作伙伴管理、項(xiàng)目管理、財(cái)務(wù)管理、資產(chǎn)管理功能的協(xié)同商務(wù)平臺(tái),協(xié)同辦公(OA)系統(tǒng)是一個(gè)數(shù)字化的企業(yè)應(yīng)用環(huán)境,真正讓公司所有的信息都在一個(gè)平臺(tái)上管理,解決信息孤島問題。協(xié)同辦公系統(tǒng)本身具有的網(wǎng)狀結(jié)構(gòu),為企業(yè)打通所有的信息節(jié)點(diǎn),讓企業(yè)管理者輕松穿梭在客戶、員工、文檔等所有的信息節(jié)點(diǎn)上,因?yàn)閰f(xié)同辦公系統(tǒng)為您提供了一張信息網(wǎng),只要您找到這張信息網(wǎng)中的某個(gè)節(jié)點(diǎn),您就可以輕松的以這個(gè)節(jié)點(diǎn)為中心把企業(yè)的整個(gè)信息網(wǎng)都提取出來。
同時(shí),協(xié)同辦公(OA)系統(tǒng)可以與后臺(tái)的ERP軟件集成在一起,將所有利益相關(guān)者、企業(yè)部門、不同應(yīng)用系統(tǒng)的信息整合到統(tǒng)一的渠道,并提供統(tǒng)一的界面給用戶操作和提取信息,從而實(shí)現(xiàn)業(yè)務(wù)處理和信息獲取與共享的一體化,達(dá)到內(nèi)部協(xié)同和外部協(xié)同,為每一個(gè)用戶提供一個(gè)完全的個(gè)性化門戶,用戶在這個(gè)個(gè)性化的門戶中管理日常的所有事務(wù)。
二、工作流管理簡(jiǎn)介
由于工作流預(yù)先定義的特性,已設(shè)定的請(qǐng)求可以很容易的遵守相應(yīng)的規(guī)則和實(shí)際操作情況。企業(yè)可以確信所有的請(qǐng)求都是根據(jù)規(guī)則和手續(xù)來輸入和批準(zhǔn)的,從而保證企業(yè)運(yùn)作的規(guī)范化和透明化。上海泛微軟件公司的協(xié)同辦公(OA)系統(tǒng)中實(shí)現(xiàn)的工作流e-Workflow管理可以對(duì)內(nèi)部以及外部業(yè)務(wù)處理采取電子化管理方式管理,工作流管理是提高組織效率的有效工具。
e-Workflow提供強(qiáng)大的自定義功能,支持企業(yè)復(fù)雜的工作流設(shè)置。企業(yè)可對(duì)工作流的組成因素包括流程完成需要的階段、每個(gè)階段的負(fù)責(zé)人、流轉(zhuǎn)條件,直至相對(duì)底層的表單和字段進(jìn)行自定義,使得工作流的定義完全與企業(yè)的政策和實(shí)際運(yùn)營相符合,而不必進(jìn)行復(fù)雜的二次開發(fā)。
e-Workflow同時(shí)也提供了可定制的瀏覽和報(bào)告的功能,用戶可以對(duì)工作流的關(guān)鍵信息進(jìn)行任意的定義以獲得特定的報(bào)表。e-Workflow的特性可以使用戶獲得非常靈活和豐富的統(tǒng)計(jì)報(bào)告以對(duì)相關(guān)的決策作出支持。
三、工作流管理實(shí)現(xiàn)基本功能
1定義任意形式的工作流程
e-Workflow強(qiáng)大的自定義功能可以滿足企業(yè)對(duì)復(fù)雜工作流程的定義,包括文檔流程和表單流程e-Workflow 與 e-HRM結(jié)合對(duì)于人員在組織結(jié)構(gòu)中的地位和角色將是工作流設(shè)計(jì)的基礎(chǔ)。
2工作流執(zhí)行
可設(shè)定的對(duì)工作流的執(zhí)行包括提交、批準(zhǔn)、退回、拒絕、代理、重新打開、歸檔等,e-Workflow會(huì)根據(jù)路由的判定條件和當(dāng)前節(jié)點(diǎn)的執(zhí)行操作設(shè)置工作流的下一目標(biāo)節(jié)點(diǎn)。
固定流程和自由流程的結(jié)合
原則上是固定流程,應(yīng)該一步步走下去,但是在某個(gè)節(jié)點(diǎn),加入一個(gè)自由流程審批人可以選定下一步的審批人,然后再按照預(yù)定的流程走下去。
如:申請(qǐng)者-部門經(jīng)理-出納-財(cái)務(wù)經(jīng)理,對(duì)于大一點(diǎn)的公司,有多個(gè)出納,哪個(gè)出納在崗,就讓哪個(gè)出納審,那么就可以把出納那步設(shè)成自由流程,當(dāng)部門經(jīng)理審批完后,會(huì)自動(dòng)列出所有的出納,部門經(jīng)理選擇其中的一個(gè)出納然后提交。
4表單數(shù)據(jù)自動(dòng)生成
表單的有些數(shù)據(jù),不希望由人工輸入獲得,e-Workflow可以根據(jù)被計(jì)算字段、原始數(shù)據(jù)和計(jì)算方法自動(dòng)得出目標(biāo)字段數(shù)據(jù),并可以此作為下一路由選擇的判斷條件。
5跟蹤和回溯
e-Workflow保留工作流流轉(zhuǎn)過程中的所有信息以供查詢。對(duì)于文檔型的審批,可以保持痕跡。這樣審批人能夠一目了然知道原稿和審批稿的區(qū)別。監(jiān)控和管理
對(duì)于某個(gè)模板產(chǎn)生的單據(jù),可以設(shè)定監(jiān)督人和管理人,這樣既使他沒有審批權(quán),也可以看到該單據(jù),同時(shí)發(fā)送催辦信息。當(dāng)某個(gè)單據(jù)因?yàn)槟撤N原因需要臨時(shí)更改流程時(shí),監(jiān)督和管理人可以修改流程,以避免單據(jù)的積壓提高工作效率
7自動(dòng)提醒
對(duì)于請(qǐng)求的不同狀況,例如新的請(qǐng)求到達(dá)、待處理請(qǐng)求、超時(shí)未處理請(qǐng)求、客戶聯(lián)系計(jì)劃、請(qǐng)求遞交被處理狀況等,系統(tǒng)都設(shè)定了多種提醒功能以確保請(qǐng)求的處理不致延誤。
8流程自動(dòng)激活
e-Workflow的一個(gè)強(qiáng)大之處就是在于它可以讓系統(tǒng)在運(yùn)作的過程中自動(dòng)觸發(fā)請(qǐng)求,并且還可以根據(jù)前一個(gè)請(qǐng)求的實(shí)際狀況對(duì)下一個(gè)觸發(fā)的請(qǐng)求進(jìn)行智能選擇。
9自動(dòng)更新數(shù)據(jù)庫
e-Workflow在信息流轉(zhuǎn)的過程中,會(huì)自動(dòng)更新系統(tǒng)原有的相關(guān)數(shù)據(jù)庫,這是 e-Workflow 另一個(gè)重要的特性體現(xiàn),通過數(shù)據(jù)自動(dòng)更新,避免了二次手工錄入帶來的工作效率低下和失誤的情況,真正實(shí)現(xiàn)企業(yè)管理和運(yùn)營的電子化。
10分支選擇流
根據(jù)上一步的選擇,選擇不同的分支進(jìn)行流程執(zhí)行。如:如果上一步是總經(jīng)理審批的,會(huì)選擇一個(gè)分支進(jìn)行流轉(zhuǎn)。如上一步是副總審批的選擇另外一個(gè)分支進(jìn)行流轉(zhuǎn)。
11條件流轉(zhuǎn)
以請(qǐng)款單為例:金額小于3000元,審批流程是:普通員工-部門經(jīng)理。如果金額大于3000元的審批流程是:普通員工-部門經(jīng)理-總經(jīng)理,那么在流程定義的時(shí)候,需要根據(jù)單據(jù)的填寫值進(jìn)行判斷,系統(tǒng)自動(dòng)選擇流程。
12傳閱、歸檔等的并發(fā)流
如有一個(gè)流程:申請(qǐng)者-副總經(jīng)理的一張單子,申請(qǐng)者需要提交副總審批的一張單子,不需要部門經(jīng)理審批,但是需要讓部門經(jīng)理知曉,稱為傳閱的并發(fā)流。同理有歸檔或者其它的并發(fā)流。這種并發(fā)流的特點(diǎn)是一個(gè)流程的執(zhí)行過程中,會(huì)產(chǎn)生另外的的流程,互不影響。
13流程門戶定義
通過與企業(yè)信息門戶的結(jié)合,e-Workflow實(shí)現(xiàn)流程定義的門戶化,根據(jù)不同的信息門戶設(shè)定不同的流程。
四、小結(jié)
工作流技術(shù)的出現(xiàn)和迅速發(fā)展為企業(yè)先進(jìn)制造戰(zhàn)略的實(shí)施提供了重要的技術(shù)支持。本文提出了分布式工作流建模工具的設(shè)計(jì)框架,以 SOA設(shè)計(jì)模式,通過三層結(jié)構(gòu)的方式很好的實(shí)現(xiàn)了工作流建模工具、邏輯、數(shù)據(jù)、視圖的分離,使得系統(tǒng)在可擴(kuò)展性、可靠性與實(shí)用性方面都大大提高。以此為原型開發(fā)的泛微e-Workflow工作流管理系統(tǒng)很好的配合了工作流引擎的設(shè)計(jì)。在實(shí)際中的初步應(yīng)用表明該系統(tǒng)通過分析企業(yè)不同類的經(jīng)營過程,采用有向圖的方法對(duì)現(xiàn)實(shí)的企業(yè)活動(dòng)進(jìn)行形式化描述,并嚴(yán)格定義組成有向圖的各類元素的行為特征,從而明確建立企業(yè)經(jīng)營過程到工作流模型的映射機(jī)制.使其與企業(yè)現(xiàn)有應(yīng)用結(jié)合形成一個(gè)完整的過程體系。責(zé)任編輯:胡艷麗 工作流管理技術(shù)介紹
2009-11-25 作者:葛志春 來源:希賽網(wǎng)
摘 要:本文主要對(duì)工作流技術(shù)的起源,工作流的概念,研究的技術(shù)的內(nèi)容及工作流管理系統(tǒng)作了深入的介紹;并對(duì)工作流技術(shù)在國內(nèi)外的應(yīng)用現(xiàn)狀及不足作了深入的分析。
關(guān)鍵詞:工作流、表單
1、工作流技術(shù)應(yīng)用背景
傳統(tǒng)的計(jì)算機(jī)管理信息系統(tǒng)的主要功能有三個(gè):即信息處理、事務(wù)處理與決策支持。信息傳遞和信息處理構(gòu)成了企業(yè)和行政管理部門的業(yè)務(wù)工作內(nèi)容之一,也是計(jì)算機(jī)信息系統(tǒng)的主要功能之一,它是企業(yè)和行政管理部門進(jìn)行事務(wù)處理和決策支持的基礎(chǔ)。
當(dāng)PC機(jī)沒有作為信息處理工具而出現(xiàn)的時(shí)候,紙張是進(jìn)行日常業(yè)務(wù)活動(dòng)不可取代的載體。這種傳統(tǒng)的紙張為載體的信息傳遞與處理方式的效率很低,需要花費(fèi)相當(dāng)?shù)娜肆Α⑽锪硗瓿尚畔⒌奶幚?、組織、存儲(chǔ)以及查詢檢索,同時(shí)這種方式降低了對(duì)客戶需求的響應(yīng)速度,給企業(yè)和行政管理部門的生產(chǎn)經(jīng)營都帶來了及不利的影響。在計(jì)算機(jī)得到了廣泛普及、計(jì)算機(jī)應(yīng)用水平日益提高的情況下,企業(yè)與行政管理單位的工作人員希望能夠以一種無紙化的、計(jì)算機(jī)使能的工作環(huán)境來開展日常業(yè)務(wù)工作。一些企業(yè)和行政管理部門因此建立了相應(yīng)的文件、表單傳遞系統(tǒng)(Forms-routing applications)用來實(shí)現(xiàn)日常表單處理的電子化與自動(dòng)化。這種簡(jiǎn)單的文件、電子表單系統(tǒng)可以看作是工作流應(yīng)用的雛形。
企業(yè)的經(jīng)營過程是由一系列相關(guān)的任務(wù)組成的;這些任務(wù)按照企業(yè)的管理規(guī)章與業(yè)務(wù)流程串行或并行的執(zhí)行,最終完成企業(yè)的經(jīng)營目標(biāo)。自從進(jìn)入工業(yè)化時(shí)代以來,有關(guān)過程的組織管理與流程的優(yōu)化工作就一直在進(jìn)行,它是企業(yè)管理的主要研究?jī)?nèi)容之一。只不過在沒有引入計(jì)算機(jī)信息系統(tǒng)的支持以前,這些工作是由人工來完成的。隨著市場(chǎng)經(jīng)濟(jì)的發(fā)展,市場(chǎng)競(jìng)爭(zhēng)的日益激烈,企業(yè)要求其業(yè)務(wù)過程能夠進(jìn)行快速重組;業(yè)務(wù)過程的不斷變化也相應(yīng)要求信息系統(tǒng)能夠快速重組。這樣,單靠人工對(duì)企業(yè)過程進(jìn)行重組和傳統(tǒng)的面向功能的信息化計(jì)算機(jī)系統(tǒng)已經(jīng)不能適應(yīng)現(xiàn)代企業(yè)的發(fā)展。因此,企業(yè)希望有一種能夠?qū)崿F(xiàn)企業(yè)快速業(yè)務(wù)流程重組和業(yè)務(wù)過程自動(dòng)化的軟件系統(tǒng)。在計(jì)算機(jī)網(wǎng)絡(luò)技術(shù)和分布式數(shù)據(jù)庫技術(shù)迅速發(fā)展、多機(jī)協(xié)同工作技術(shù)日臻成熟的基礎(chǔ)上于20世紀(jì)80年代中期開始提出了工作流的概念。工作流技術(shù)的提出與發(fā)展為企業(yè)更好的實(shí)現(xiàn)這些經(jīng)營目標(biāo)提供了先進(jìn)的手段。
隨著經(jīng)營業(yè)務(wù)的展開企業(yè)的物理位置逐漸分散、部門間的協(xié)作日益頻繁;決策過程的分散性也日益明顯,對(duì)日常業(yè)務(wù)活動(dòng)詳細(xì)信息的需求也日益提高。因此,企業(yè)又要求信息系統(tǒng)必須具有分布性、異構(gòu)性、自治性。在這種大規(guī)模的分布式應(yīng)用環(huán)境下高效地運(yùn)轉(zhuǎn)相關(guān)的任務(wù),并且對(duì)執(zhí)行的任務(wù)進(jìn)行密切監(jiān)控已成為一種發(fā)展趨勢(shì)。在這種技術(shù)背景下,工作流管理系統(tǒng)也有最初的創(chuàng)建無紙化辦公環(huán)境,轉(zhuǎn)而成為同化企業(yè)復(fù)雜信息環(huán)境、實(shí)現(xiàn)業(yè)務(wù)流程自動(dòng)化的必要工具。這樣的一個(gè)轉(zhuǎn)變,把工作流技術(shù)帶入了一個(gè)嶄新的發(fā)展階段,使得人們從更深的層次、更廣的領(lǐng)域上對(duì)工作流展開了研究。
1993年工作流技術(shù)的標(biāo)準(zhǔn)化組織工作流管理聯(lián)盟(Workflow Manangement Coalition 簡(jiǎn)稱:WfMC).的成立標(biāo)志著工作流技術(shù)在計(jì)算機(jī)應(yīng)用領(lǐng)域之中被明確的劃分出了自己的一席之地,相應(yīng)的概念與術(shù)語也得到了人們的承認(rèn)。在全球范圍內(nèi),對(duì)工作流的技術(shù)研究以及相關(guān)的產(chǎn)品開發(fā)了進(jìn)入了更為繁榮的階段。
2、工作流定義
工作流是從英文單詞Workflow翻譯而來的。Work表示工作或任務(wù);Flow則表示流動(dòng)、流程或者流量。Flow反映了一種變化及變化的過程,本身意義比較抽象,但是當(dāng)它與某一個(gè)具體過程相聯(lián)系時(shí)就有了具體的含義,如電流、水流、氣流。在經(jīng)營管理與生產(chǎn)組織中Flow也有重要的意義,如表示物料傳輸過程的物料流、表示資金流動(dòng)的資金流、反映信息處理和傳遞過程的信息流,同樣還有價(jià)值流、決策流、控制流等概念。依此,用活動(dòng)及活動(dòng)之間變化的過程表示的業(yè)務(wù)流程就是工作流。
十幾年來,不同的研究者和產(chǎn)品供應(yīng)商從不同的角度給出了工作流的定義,但到目前為止,對(duì)于工作流仍沒有統(tǒng)一的定義。下面列舉了一些有代表性的定義,可以使我們對(duì)工作流的一些基本特征有一定的理解。
WfMC的定義:工作流是一類能夠完全或者部分自動(dòng)執(zhí)行的經(jīng)營過程,根據(jù)一系列過程規(guī)則,文檔、信息或任務(wù)能夠在不同的執(zhí)行者之間傳遞、執(zhí)行。
Forrester Report的定義:日常的業(yè)務(wù)處理或協(xié)同工作能按預(yù)先定義好的規(guī)則和過程進(jìn)行流動(dòng),并且這一流動(dòng)過程能被跟蹤和監(jiān)控。
Giga Group的定義:工作流是經(jīng)營過程中可運(yùn)轉(zhuǎn)的部分,包括任務(wù)的順序以及由誰來執(zhí)行它,支持任務(wù)的信息流、評(píng)價(jià)與控制任務(wù)的跟蹤、報(bào)告機(jī)制。
IBM Almaden Research Center的定義:工作流是經(jīng)營過程中的一種計(jì)算機(jī)化的表示模型,定義了完成整個(gè)過程所需用的各種參數(shù)。這些參數(shù)包括對(duì)過程中每一個(gè)單獨(dú)步驟的定義、步驟間的執(zhí)行順序、條件以及數(shù)據(jù)流的建立、每一步驟由誰負(fù)責(zé)以及每個(gè)活動(dòng)所需要的應(yīng)用程序。
Amit Sheth 的定義:工作流是涉及到多任務(wù)協(xié)調(diào)執(zhí)行的活動(dòng),這些任務(wù)分別由不同的處理實(shí)體完成。一項(xiàng)任務(wù)定義了需要做的某些工作,它可以以各種形式來進(jìn)行定義,包括在文件或電子郵件中的文本描述、一張表格、一條信息以及一個(gè)計(jì)算機(jī)程序。用來執(zhí)行任務(wù)的處理實(shí)體可以是人,也可以是計(jì)算機(jī)系統(tǒng)(如:郵遞員、一個(gè)應(yīng)用程序、一個(gè)數(shù)據(jù)庫管理系統(tǒng))。
以上這些定義,雖然表述方式略有不同,但是基本上都說明了這樣一個(gè)問題,即工作流是業(yè)務(wù)過程的一個(gè)計(jì)算機(jī)實(shí)現(xiàn),而工作流管理系統(tǒng)則是這一實(shí)現(xiàn)的軟件環(huán)境。使用工作流作為業(yè)務(wù)過程的實(shí)現(xiàn)技術(shù)首先要求工作流系統(tǒng)能夠反映業(yè)務(wù)過程的如下幾個(gè)問題:即業(yè)務(wù)過程是什么(有哪些活動(dòng)、任務(wù)組成,也就是結(jié)構(gòu)上的定義)、怎么做(活動(dòng)間的執(zhí)行條件、規(guī)則以及所交互的信息,也就是控制流與信息流的定義)、有誰來做(人或計(jì)算機(jī)程序,也就是組織角色的定義)、做的怎樣(通過工作流管理系統(tǒng)對(duì)執(zhí)行過程進(jìn)行監(jiān)控)。因此,可以說工作流是一種反映業(yè)務(wù)流程的計(jì)算機(jī)化的模型,它是為了在先進(jìn)計(jì)算機(jī)環(huán)境支持下實(shí)現(xiàn)經(jīng)營過程集成與經(jīng)營過程自動(dòng)化而建立的可由工作流管理系統(tǒng)執(zhí)行的業(yè)務(wù)系統(tǒng)。
3、工作流技術(shù)研究的主要內(nèi)容
工作流技術(shù),在初期主要由工作流產(chǎn)品供應(yīng)商推動(dòng)其發(fā)展。隨著工作流產(chǎn)品在實(shí)際應(yīng)用中不斷取得良好的效果而得到了人們?nèi)找娴闹匾?,并且到了迅速發(fā)展。相對(duì)于工作流產(chǎn)品的繁榮,工作流相關(guān)理論研究則顯得滯后。在過去很長(zhǎng)一段時(shí)間里,有關(guān)工作流技術(shù)方面的研究主要有商品化的工作流產(chǎn)品供應(yīng)商所領(lǐng)導(dǎo)。本著把工作流產(chǎn)品推向市場(chǎng)的目的,這些供應(yīng)商大多把研究的注意力放在工作流管理產(chǎn)品的開發(fā)實(shí)施方面。目前在工作流設(shè)計(jì)方法學(xué),工作流概念模型等方面還沒有形成一套比較成熟的理論和方法。在工作流理論與實(shí)施技術(shù)方面,研究的主要內(nèi)容包括:
工作流管理系統(tǒng)體系結(jié)構(gòu);
工作流模型與工作流定義語言;
工作流的事務(wù)特性;
研究如何實(shí)現(xiàn)高級(jí)事務(wù)處理技術(shù)與工作流管理技術(shù)的結(jié)合,用定義良好的模型語義與恢復(fù)機(jī)制來提高工作流系統(tǒng)的正確性與可靠性,從而能夠更好的支持復(fù)雜的業(yè)務(wù)過程;
工作流實(shí)現(xiàn)技術(shù):包括面向?qū)ο蠹夹g(shù)、異構(gòu)分布式計(jì)算技術(shù)、圖形化用戶界面、消息通信、數(shù)據(jù)庫、WEB等在內(nèi)的與工作流系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)有關(guān)的各項(xiàng)技術(shù)及方法;
工作流的仿真與分析方法;
基于工作流的應(yīng)用集成與互操作技術(shù);
研究異構(gòu)應(yīng)用系統(tǒng)的集成以及不同工作流系統(tǒng)之間的互操作問題;
工作流與經(jīng)營過程的重組:研究如何通過工作流系統(tǒng)的實(shí)施支持快速的實(shí)現(xiàn)經(jīng)營過程重組;
工作流技術(shù)的其他應(yīng)用:研究如何將工作流技術(shù)在不同的領(lǐng)域進(jìn)行運(yùn)用,包括在CIMS中的應(yīng)用。
上述主要研究課題可以歸納為三個(gè)方面(如圖1):第一方面是工作流的理論基礎(chǔ),包括工作流管理系統(tǒng)的體系、模型與定義語言(工作流的建模方法、工作流模型的形式化表示、工作流定義語言)等的研究。這一部分是工作目前相對(duì)來說比較薄弱,還有許多問題需要進(jìn)一步研究。第二方面是工作流的實(shí)現(xiàn)技術(shù),包括工作流的事務(wù)特性、各種先進(jìn)軟件技術(shù)的應(yīng)用、工作流仿真。這方面研究工作的目標(biāo)是提高工作流管理系統(tǒng)的性能,尤其是提高工作流管理系統(tǒng)可靠性及其在處理大規(guī)模復(fù)雜的且具有并行業(yè)務(wù)的流程方面的能力。第三方面是工作流技術(shù)的應(yīng)用,包括工作流實(shí)施技術(shù)在不同應(yīng)用領(lǐng)域的應(yīng)用(如在企業(yè)經(jīng)營過程重組、并行過程、敏捷制造)方法、應(yīng)用軟件集成等。這幾方面研究的目標(biāo)是發(fā)揮工作流管理系統(tǒng)的優(yōu)勢(shì),為解決具體應(yīng)用領(lǐng)域內(nèi)的問題提供有向?qū)崿F(xiàn)手段。
圖1:工作流技術(shù)研究?jī)?nèi)容
4、研究工作流的意義
工作流技術(shù)的應(yīng)用將給組織單位帶來巨大的效益。首先,采用工作流管理將使組織單位改變傳統(tǒng)的按照功能來配置人員的組織結(jié)構(gòu),變成按照要實(shí)現(xiàn)的主要業(yè)務(wù)流程來配置組織結(jié)構(gòu),這樣可以大大縮短主要業(yè)務(wù)過程的處理時(shí)間,提高對(duì)市場(chǎng)的響應(yīng)能力。其次,組織結(jié)構(gòu)的改變將大大減少在組織內(nèi)部不必要的的物料、信息的傳遞時(shí)間。當(dāng)然,整個(gè)組織結(jié)構(gòu)的調(diào)整首先需要調(diào)整傳統(tǒng)的以部門為單位的做法,變成以項(xiàng)目來組織生產(chǎn)和人員的工作方法,如:一個(gè)人可能同時(shí)從屬于多個(gè)項(xiàng)目。應(yīng)用工作流管理系統(tǒng)主要可以取得如下好處:
1)提高管理的規(guī)范化程度;
2)更好地與上下游單位形成快速響應(yīng)市場(chǎng)的供應(yīng)鏈網(wǎng)絡(luò);
3)降低業(yè)務(wù)過程的整個(gè)處理時(shí)間,如在辦公自動(dòng)化環(huán)境中,通過更好的規(guī)劃工作流程,并行執(zhí)行相互獨(dú)立的活動(dòng),減少文檔的傳遞時(shí)間;
4)降低管理成本,如避免不必要的重復(fù)的工作,提高工作人員的工作效率;
5)改進(jìn)工作質(zhì)量,如自動(dòng)完成某個(gè)任務(wù)所需要的相關(guān)信息。在客戶服務(wù)中,能夠快速方便的訪問所有相關(guān)數(shù)據(jù)和工作流程,從而大大提高客戶服務(wù)質(zhì)量;
6)在工作人員之間更好的均衡負(fù)荷,如在工作人員缺勤的情況下,自動(dòng)柔性分配替代人員;
7)通過在工作流模型中加入可預(yù)計(jì)的故障的處理策略來提高系統(tǒng)的柔性;
8)通過對(duì)已經(jīng)完成的工作流實(shí)例的分析,找出存在的不足,進(jìn)而不斷改進(jìn)工作流程;
9)使工作內(nèi)容更加豐富,并且提高工作人員的業(yè)務(wù)能力,減少工作人員進(jìn)行單調(diào)乏味并且十分耗時(shí)的文檔查找工作。
采用工作流管理系統(tǒng)可以在最大程度上集成組織的現(xiàn)有信息資源,實(shí)現(xiàn)資源的充分利用。由于工作流管理系統(tǒng)具有較好的柔性和開發(fā)性,因此,可以保證信息系統(tǒng)能夠順利的擴(kuò)展以滿足不斷變化的市場(chǎng)環(huán)境。另外,工作流管理系統(tǒng)在工作流模型的基礎(chǔ)上進(jìn)行業(yè)務(wù)過程進(jìn)行,這就意味著信息系統(tǒng)已經(jīng)從過去沒有一個(gè)具體的可量化指標(biāo)的管理信息系統(tǒng),發(fā)展到了一個(gè)建立在工作流模型上(并且是可以利用BPR或者其他仿真工具進(jìn)行優(yōu)化后的模型),按照預(yù)先定義好的規(guī)則進(jìn)行執(zhí)行,并且對(duì)于執(zhí)行的結(jié)果隨時(shí)進(jìn)行監(jiān)控和評(píng)價(jià)的規(guī)范化階段。這種由過程建?!的P头治觥颠^程優(yōu)化—〉執(zhí)行結(jié)果—〉統(tǒng)計(jì)分析—〉改進(jìn)業(yè)務(wù)過程—〉優(yōu)化運(yùn)作的實(shí)施方法為成功地實(shí)施信息系統(tǒng)奠定了堅(jiān)實(shí)的基礎(chǔ)。
5、工作流管理系統(tǒng)
工作流技術(shù)是當(dāng)今一項(xiàng)飛速發(fā)展的技術(shù),它最基本的特性就是它能夠結(jié)合人工和機(jī)器的行為,特別是能夠與應(yīng)用程序和工具進(jìn)行交互,從而完成業(yè)務(wù)過程的自動(dòng)化處理。
工作流是業(yè)務(wù)的自動(dòng)化處理過程,在這個(gè)過程中,根據(jù)預(yù)定義的規(guī)則將文檔、信息在過程參與者中傳遞,最終完成業(yè)務(wù)的處理。工作流管理系統(tǒng)(WFMS)是通過管理一序列工作行為以及與活動(dòng)步驟、相關(guān)人員、資源設(shè)備來提供業(yè)務(wù)處理程序上的自動(dòng)控制,它是通過計(jì)算機(jī)軟件來定義、管理和執(zhí)行工作流,計(jì)算機(jī)的執(zhí)行順序是由工作流邏輯的計(jì)算機(jī)描述來驅(qū)動(dòng)的。
工作流管理系統(tǒng)主要具備以下三個(gè)功能特征,如圖2:
工作流定義功能,主要是對(duì)業(yè)務(wù)處理過程的計(jì)算機(jī)定義,提供了一種或多種分析、建模、系統(tǒng)定義技術(shù),將一個(gè)現(xiàn)實(shí)世界的業(yè)務(wù)處理過程轉(zhuǎn)換成計(jì)算機(jī)可處理的定義;最終的定義叫作過程模型、過程模版或過程定義,可以表現(xiàn)為文本、圖形或自然語言符號(hào)。
運(yùn)行控制功能,對(duì)過程的定義進(jìn)行解釋,創(chuàng)建并控制過程的運(yùn)行實(shí)例,調(diào)度過程的各種行為步驟,調(diào)用適當(dāng)?shù)娜斯ず虸T應(yīng)用程序資源;工作流管理系統(tǒng)的核心部件就是工作流管理控制軟件(工作流引擎)。
運(yùn)行交互接口,提供與人員或IT應(yīng)用程序工具進(jìn)行交互接口來處理各種活動(dòng)步驟,交互接口對(duì)于活動(dòng)間的控制傳遞是必須的,如確定過程的狀態(tài),調(diào)用應(yīng)用程序工具,傳遞應(yīng)用程序數(shù)據(jù)等。
圖2WFMS的三個(gè)特征
6、工作流管理系統(tǒng)的分類
根據(jù)所實(shí)現(xiàn)的業(yè)務(wù)過程,工作流管理系統(tǒng)可分為四類:
1)管理型工作流(administrative workflow):在這類工作流中活動(dòng)可以預(yù)定義并且有一套簡(jiǎn)單的任務(wù)協(xié)調(diào)規(guī)則,例如,大學(xué)里的課程選修,完成論文后的學(xué)位申請(qǐng)等。
2)設(shè)定型工作流(ad hoc workflow):與管理型工作流相似,但一般用來處理異?;虬l(fā)生機(jī)會(huì)比較小的情況,有時(shí)甚至是只出現(xiàn)一次的情況,這與參與的用戶有關(guān)。
3)協(xié)作型工作流(collaborative workflow):參與者和協(xié)作的次數(shù)較多。在一個(gè)步驟上可能反復(fù)發(fā)生幾次直到得到某種結(jié)果,甚至可能返回到前一階段。
4)生產(chǎn)型工作流(production workflow):實(shí)現(xiàn)重要的業(yè)務(wù)過程的工作流,特別是與業(yè)務(wù)組織的功能直接相關(guān)的工作流。與管理型工作流相比,生產(chǎn)型工作流一般應(yīng)用在大規(guī)模、復(fù)雜的和異構(gòu)的環(huán)境下,整個(gè)過程會(huì)涉及許多人員和不同的組織。
根據(jù)底層實(shí)現(xiàn)技術(shù),可將工作流產(chǎn)品分為三類:
1)以通訊為中心:以電子郵件為底層的通訊機(jī)制。這種類型的工作流管理系統(tǒng)適合于協(xié)作型工作流和不確定型工作流,而不適于生產(chǎn)型工作流。
2)以文檔為中心:基于文檔路由,它同外界應(yīng)用的交互能力有限。許多基于表的管理型工作流可以用以文檔為中心的工作流實(shí)現(xiàn)。
3)以過程為中心:這種工作流系統(tǒng)對(duì)應(yīng)生產(chǎn)型工作流。它們一般建立在數(shù)據(jù)庫之上,有自己專用的通信機(jī)制并且提供了同外部進(jìn)行交互的接口。
根據(jù)不同工作流系統(tǒng)所采用的任務(wù)項(xiàng)傳遞機(jī)制的不同,市場(chǎng)上的工作流產(chǎn)品又可以劃分為四類:
1)基于文件的工作流系統(tǒng):以共享文件的方式來完成任務(wù)項(xiàng)傳遞。這種類型產(chǎn)品開發(fā)得最早、發(fā)展最成熟、其產(chǎn)品品種較多。代表產(chǎn)品有FileNet的Visual WorkFlo、IBM的FlowMark、InConcert的InConcert。
2)基于消息的工作流系統(tǒng):通過用戶的電子郵件系統(tǒng)來傳遞文檔信息。這種類型的產(chǎn)品一般都提供與一種或多種電子郵件系統(tǒng)的集成接口。代表產(chǎn)品有Novell與FileNet合作開發(fā)的Ensemble、JetForm公司的InTempo、Keyfile公司的Keyflow。
3)基于Web的工作流系統(tǒng):通過WWW來實(shí)現(xiàn)任務(wù)的協(xié)作。這一類產(chǎn)品起步較晚(在95年以后),但是發(fā)展迅速,其市場(chǎng)前景十分看好。許多供應(yīng)商紛紛改進(jìn)原有產(chǎn)品或開發(fā)新產(chǎn)品以增加對(duì)Web的支持。代表產(chǎn)品有Action Technologies公司的ActionWorks Metro、Ultimus公司的Ultimus。
4)群件與套件系統(tǒng):雖然這一類產(chǎn)品與上面介紹的三種產(chǎn)品在任務(wù)傳遞方式上有很大程度的重疊,但是在這里卻有必要把它們單獨(dú)劃分成一類,因?yàn)檫@一類產(chǎn)品都需要依賴于自己系統(tǒng)的應(yīng)用基礎(chǔ)結(jié)構(gòu),包括消息傳遞、目錄服務(wù)、安全管理、數(shù)據(jù)庫與文檔管理服務(wù)等,它們本身就構(gòu)成了一個(gè)完整的應(yīng)用開發(fā)環(huán)境。代表產(chǎn)品有IBM/Lotus公司的Lotus Notes、Microsoft公司的Office與Exchange、Novell公司的GroupWise。
7、工作流管理系統(tǒng)的實(shí)施
工作流管理系統(tǒng)不同于ERP和普通的企業(yè)管理信息系統(tǒng),ERP與普通的企業(yè)管理信息系統(tǒng)是事務(wù)處理系統(tǒng),其主要目的是滿足企業(yè)業(yè)務(wù)操作功能,提高企業(yè)事務(wù)處理的效率和水平。從企業(yè)整體的業(yè)務(wù)流程和企業(yè)經(jīng)營目標(biāo)上看,事務(wù)處理系統(tǒng)一般局限于解決某個(gè)或者某些領(lǐng)域的問題;事務(wù)處理系統(tǒng)的另外一個(gè)局限性是它一般局限于解決組織內(nèi)部的具體操作問題,面向組織內(nèi)部功能,而不是面向市場(chǎng)和面向客戶的系統(tǒng)。工作流管理系統(tǒng)的著眼點(diǎn)是面向市場(chǎng)、面向客戶,其目標(biāo)是在整個(gè)企業(yè)的業(yè)務(wù)層提高企業(yè)的業(yè)務(wù)處理水平、強(qiáng)化企業(yè)的市場(chǎng)意識(shí)、提高對(duì)市場(chǎng)的應(yīng)變能力。
由于工作流管理系統(tǒng)與普通事務(wù)處理系統(tǒng)存在顯著的差別,工作流管理系統(tǒng)在實(shí)施方法上也不同于普通的事務(wù)處理系統(tǒng)。要實(shí)施工作流管理系統(tǒng)首先要在戰(zhàn)略層次上對(duì)經(jīng)營目標(biāo)進(jìn)行分析,確定戰(zhàn)略目標(biāo)和組織要求。工作流管理系統(tǒng)實(shí)施的層次結(jié)構(gòu),如圖3。
圖3 WFMS實(shí)施的層次結(jié)構(gòu)
在完成了戰(zhàn)略目標(biāo)分析和工作流實(shí)施戰(zhàn)略后,工作流管理系統(tǒng)才能夠進(jìn)入真正的實(shí)施階段。工作流管理系統(tǒng)在實(shí)際系統(tǒng)中的應(yīng)用一般分為3個(gè)階段,如圖4,即模型建立階段、模型實(shí)例化階段和模型行階段。模型建立階段通過利用工作流建模工具完成經(jīng)營過程模型的建立,將實(shí)際經(jīng)營過程轉(zhuǎn)化為計(jì)算機(jī)可處理的工作流模型。模型的實(shí)例化階段完成為每個(gè)過程設(shè)定運(yùn)行所需的參數(shù),并分配每個(gè)活動(dòng)執(zhí)行所需要的資源(包括資源、人員、應(yīng)用)。模型執(zhí)行階段完成經(jīng)營過程的執(zhí)行,在這個(gè)過程中重要的任務(wù)是完成人機(jī)交互和應(yīng)用的執(zhí)行,并對(duì)過程與活動(dòng)的執(zhí)行情況進(jìn)行監(jiān)控與跟蹤。
圖4 WFMS 實(shí)施的三個(gè)步驟
8、國內(nèi)外應(yīng)用現(xiàn)狀與不足
8.1 應(yīng)用現(xiàn)狀
目前工作流技術(shù)的研究正日益受到人們的重視,許多大學(xué)和研究機(jī)構(gòu)都開展了很多研究項(xiàng)目,取得了重多的研究成果,對(duì)工作流技術(shù)的發(fā)展做出了貢獻(xiàn)。
由于工作流應(yīng)用環(huán)境大多是在復(fù)雜的分布異構(gòu)環(huán)境中,如企業(yè)內(nèi)部網(wǎng)或因特網(wǎng),因此應(yīng)用最新的分布對(duì)象處理技術(shù)和Web技術(shù),實(shí)現(xiàn)工作流管理成為當(dāng)前研究的重點(diǎn)。有影響的工作流原型系統(tǒng)有:
1)美國佐治亞大學(xué)研制的Meteor系統(tǒng):該系統(tǒng)是一個(gè)支持多范型的工作流管理系統(tǒng),主要用于處理醫(yī)療保健應(yīng)用。多范型是指該系統(tǒng)能夠支持分布異構(gòu)環(huán)境下的企業(yè)內(nèi)和企業(yè)間的各種工作流。這些工作流可以是數(shù)據(jù)庫管理系統(tǒng)和分布式事務(wù)處理系統(tǒng)中的事務(wù),也可以是EDI等特殊應(yīng)用。Meteor系統(tǒng)可以在Web或CORBA環(huán)境下運(yùn)行。
2)美國普度大學(xué)開發(fā)的CORBAflow系統(tǒng):該系統(tǒng)提出了基于CORBA的體系結(jié)構(gòu),支持跨平臺(tái)的異構(gòu)分布系統(tǒng)集成,支持彈性ACID性質(zhì);擴(kuò)展了IDL語言以定義事務(wù)性工作流中的補(bǔ)償事務(wù)。
3)土耳其中東大學(xué)開發(fā)的METUFlow系統(tǒng):該系統(tǒng)提出了一種基于CORBA環(huán)境的工作流服務(wù),包括基于ACTA擴(kuò)展事務(wù)模型的工作流模型、塊結(jié)構(gòu)化定義語言、工作流調(diào)度管理和并發(fā)控制機(jī)制等。
工作流的許多概念來自于辦公自動(dòng)化、文檔管理、計(jì)算機(jī)支持協(xié)同工作(CSCW)等領(lǐng)域。至今約有300個(gè)稱為工作流工具的商品化軟件,但只有數(shù)十個(gè)是真正的WFMS軟件。一些著名的WFMS產(chǎn)品有:
1)IBM公司的FlowMark系統(tǒng)[9]該系統(tǒng)由對(duì)象數(shù)據(jù)庫管理系統(tǒng)ObjectStore支持。主要組件包括服務(wù)器、建立客戶器、運(yùn)行客戶器和程序執(zhí)行客戶器。服務(wù)器負(fù)責(zé)與數(shù)據(jù)庫交互及協(xié)調(diào)工作流執(zhí)行;建立客戶器提供用于設(shè)計(jì)工作流的圖形接口;運(yùn)行客戶器提供工作表方式的用戶接口;程序執(zhí)行客戶器提供API調(diào)用方式的應(yīng)用接口。
2)Action公司的ActionWorkflow系統(tǒng)該系統(tǒng)由微軟的SQL服務(wù)器或Lotus Notes支持,包含三個(gè)基本組件:①管理系統(tǒng)內(nèi)核用于集成和管理工作流事務(wù);②分析器提供設(shè)計(jì)工作流的專門工具;③應(yīng)用建立器用于將工作流定義轉(zhuǎn)化成可執(zhí)行的過程。此外,還提供輔助工具,如報(bào)表器用于查詢工作流的進(jìn)展?fàn)顟B(tài)。
3)Sigma圖象系統(tǒng)公司的OmniDesk系統(tǒng)它使用提供ODBC接口的數(shù)據(jù)庫。其中,路徑管理器用于工作流管理和負(fù)載平衡;路徑建立器用于定義路徑邏輯;表格建立器用于創(chuàng)建工作流接口。雖然OmniDesk系統(tǒng)主要是為圖象文檔管理設(shè)計(jì)的,但是也可以管理其他類型的工作流。
4)Wang公司的OPEN/workflow系統(tǒng)該系統(tǒng)建立在自含的數(shù)據(jù)庫引擎之上。系統(tǒng)分為數(shù)據(jù)庫服務(wù)、圖形過程建立器、集成工具箱、報(bào)表工具。數(shù)據(jù)庫服務(wù)提供基本的完整性、安全性、并發(fā)控制、恢復(fù)和管理功能;圖形過程建立器用于定義過程;集成工具箱提供應(yīng)用之間交互需要的API調(diào)用和通信服務(wù);報(bào)表工具如查詢建立器和報(bào)表建立器用于訪問有關(guān)過程執(zhí)行的信息。
8.2 工作流應(yīng)用技術(shù)的不足
實(shí)際上,大多數(shù)產(chǎn)品的開發(fā)由于沒有清楚地理解用戶的需求,而不能滿足用戶的迫切需要。許多工作流系統(tǒng)主要是解決共享和協(xié)作(某些問題仍未很好解決,如異構(gòu)平臺(tái)環(huán)境、多媒體數(shù)據(jù)),而像性能、可伸縮性、可靠性對(duì)于復(fù)雜應(yīng)用系統(tǒng)來說至關(guān)重要的問題,現(xiàn)有工作流軟件并沒有考慮。主要原因是,這些系統(tǒng)的建立不是基于在線事務(wù)處理(OLTP)技術(shù)和數(shù)據(jù)庫技術(shù),只是使用數(shù)據(jù)庫做底層存儲(chǔ),因而在這些領(lǐng)域缺乏技術(shù)成熟性和系統(tǒng)健壯性。
另外,由于已有的絕大多數(shù)WFMS產(chǎn)品和原型系統(tǒng)的設(shè)計(jì)是面向普通的辦公室應(yīng)用,因此存在以下不足:
1)工作流模型只能描述如辦公自動(dòng)化中電子郵件或文檔等簡(jiǎn)單的工作流,而不能描述工程設(shè)計(jì)等復(fù)雜過程處理。
2)經(jīng)營業(yè)務(wù)流程往往是復(fù)雜的異構(gòu)環(huán)境,現(xiàn)有產(chǎn)品不能提供很好的互操作性。例如,在異構(gòu)環(huán)境中,IBM的FlowMark不提供API接口以支持一個(gè)工作流的輸出,作為下一個(gè)工作流的輸入。
3)一個(gè)工作流可能涉及到多個(gè)單位和車間,或多個(gè)工廠和企業(yè),例如,在虛擬制造應(yīng)用中,可能包含成百上千個(gè)用戶,覆蓋廣域網(wǎng)絡(luò)中的數(shù)十個(gè)場(chǎng)地,上百臺(tái)計(jì)算機(jī)系統(tǒng)。大多數(shù)現(xiàn)有工作流軟件只是設(shè)計(jì)為一種協(xié)作工具,適用于小群體之間業(yè)務(wù)的工作流,在體系結(jié)構(gòu)上存在缺陷,缺乏可伸縮性。
4)現(xiàn)代組織應(yīng)用要求系統(tǒng)具備非常高的可用性和健壯性?,F(xiàn)有工作流軟件只適合于小團(tuán)體和輕負(fù)載,缺乏有效的后備機(jī)制,不具備強(qiáng)的故障恢復(fù)能力。
為了進(jìn)一步研究開發(fā)支持應(yīng)用集成的CIMS工作流管理技術(shù),我們認(rèn)為,需要解決以下關(guān)鍵技術(shù):
1)面向CIMS的工作流建模技術(shù)包括工作流模型和定義語言。如何采用彈性事務(wù)模型、分層事務(wù)模型和工程數(shù)據(jù)模型相結(jié)合的方法,設(shè)計(jì)出一種適合于CIMS工程應(yīng)用的工作流模型。
2)基于CIMS信息集成平臺(tái)的工作流管理系統(tǒng)體系結(jié)構(gòu)CORBA軟件總線提供了良好的平臺(tái)透明性和分布透明性,以及分布對(duì)象操作能力,如何充分利用CORBA軟件總線和信息集成平臺(tái),實(shí)現(xiàn)一個(gè)高效的工作流管理系統(tǒng)。 3)面向分布對(duì)象的工作流管理和執(zhí)行技術(shù)CORBA軟件總線系統(tǒng)提供了對(duì)象引用、啟動(dòng)和聯(lián)編機(jī)制。工作流管理與執(zhí)行機(jī)制需在此基礎(chǔ)上完成作為對(duì)象任務(wù)的創(chuàng)建、調(diào)度、執(zhí)行、提交或取消,保證工作流的正確性和可靠性。還需要考慮在CORBA軟件總線上增加新的公共服務(wù),如持久性對(duì)象倉儲(chǔ)服務(wù)、故障恢復(fù)服務(wù)等。
4)面向CIMS目標(biāo)產(chǎn)品的集成技術(shù)工作流管理系統(tǒng)是一種中間件技術(shù),適合于任何計(jì)算機(jī)分布處理系統(tǒng),在CIMS應(yīng)用集成涉及的有關(guān)系統(tǒng)中,如PDM、MRPII等,都需要這方面的集成技術(shù)。
參考文獻(xiàn)
[1] 林惠萍、范玉順、吳澄,“支持企業(yè)經(jīng)營過程重組的工作流仿真技術(shù)研究”,http://www.simflow.net
[2] 范玉順,《工作流管理技術(shù)基礎(chǔ)》,清華大學(xué)出版社,2001.4
[3] 陶冶、范玉順、羅海濱,“分布式工作流系統(tǒng)的可靠性研究”,http://www.simflow.net
[4] 羅海濱、范玉順、吳澄,“工作流技術(shù)綜述”,http://www.simflow.net
[5] 范玉順、吳澄,“基于工作流的CIMS應(yīng)用集成支持系統(tǒng)研究”,http://www.simflow.net
[6] 劉佚名、范玉順,“基于工作流的企業(yè)過程的建模和仿真技術(shù)研究”,http://www.simflow.net
[7] 范玉順、吳澄,“基于協(xié)調(diào)理論的工作流建模方法”,http://www.simflow.net
[8] 陶冶、范玉順、羅海濱,“提高分布式工作流管理系統(tǒng)的可擴(kuò)展性”,http://www.simflow.net
[9] 鮑震寧、范玉順,“企業(yè)組織模型結(jié)構(gòu)和建模方法研究”,http://www.simflow.net
[10] 羅海濱、范玉順、吳澄,“一種面向企業(yè)用戶的工作流模型”,http://www.simflow.net
第五篇:JBPM工作流文檔
JBPM工作流簡(jiǎn)介 工作流概念簡(jiǎn)介
“工作流”干預(yù)過程、業(yè)務(wù)程序的自動(dòng)化處理,文檔、信息或者任務(wù)按照定義好的規(guī)則在參與者間傳遞,來完成整個(gè)業(yè)務(wù)目標(biāo)或者對(duì)整個(gè)業(yè)務(wù)目標(biāo)的完成做貢獻(xiàn)。同時(shí),“工作流”可能由手工組織,實(shí)際上,多數(shù)“工作流 ”都在IT系統(tǒng)中進(jìn)行組織的,從而對(duì)過程自動(dòng)化提供計(jì)算機(jī)支持,WFMC把工作定位在這個(gè)方向上。
“工作流”定義:全部或者部分,由計(jì)算機(jī)支持或自動(dòng)處理的業(yè)務(wù)過程。工作流經(jīng)常與“過程重組(BPR—Business Process Re-engineering)”聯(lián)系在一起。BPR 是關(guān)于企業(yè)(組織)核心業(yè)務(wù)過程的評(píng)估、分析、模擬、定義以及其后的操作實(shí)現(xiàn)。盡管,不是所有的BPR都是采用工作流實(shí)現(xiàn)的,但工作流技術(shù)是最佳的方法,主要因?yàn)?,工作流技術(shù)提供了業(yè)務(wù)過程邏輯與IT操作支持的分離,從而以后可以修改過程規(guī)則來重定義業(yè)務(wù)過程。相反,工作流技術(shù)并不只在BPR中采用,例如用于現(xiàn)有的業(yè)務(wù)過程中。
“工作流管理系統(tǒng)(WFMS—Workflow Management System)”通過管理工作活動(dòng)序列,調(diào)用與各種活動(dòng)步驟相關(guān)的人員、IT資源,對(duì)業(yè)務(wù)過程提供自動(dòng)化處理。
“工作流管理系統(tǒng)”定義:工作流管理系統(tǒng)是這樣的一個(gè)系統(tǒng),詳細(xì)定義、管理并執(zhí)行“workflows”,系統(tǒng)通過運(yùn)行一些軟件來執(zhí)行workflows,這些軟件的執(zhí)行順序由工作流邏輯的計(jì)算機(jī)表示形式(計(jì)算機(jī)化的業(yè)務(wù)規(guī)則——過程定義)驅(qū)動(dòng)。每個(gè)業(yè)務(wù)過程都有一個(gè)生命周期,從幾分鐘到幾天(甚至數(shù)月),由過程的復(fù)雜性與組成活動(dòng)的持續(xù)時(shí)間來決定。有多種方法實(shí)現(xiàn)工作流管理系統(tǒng),使用多種IT和通訊組件,運(yùn)行環(huán)境可以從一個(gè)小的本地工作組到企業(yè)間。因此,WFMC參考模型從各種角度考慮工作流管理系統(tǒng),希望提供各種不同的實(shí)現(xiàn)技術(shù)、運(yùn)行環(huán)境。
盡管實(shí)現(xiàn)的方法多種多樣,但所有的WFMS都表現(xiàn)出某種共同的特性,這為不同產(chǎn)品間的集成、協(xié)同工作提供了基礎(chǔ)。參考模型描述了工作流系統(tǒng)的一個(gè)公共模型,并且指出參考模型如何能使其與其他各種不同的實(shí)現(xiàn)方法相關(guān)聯(lián)。JBPM相關(guān)功能簡(jiǎn)介
JBPM是當(dāng)前優(yōu)秀的開源工作流引擎。本文檔是關(guān)于JBPM與Spring框架集成分析文檔。包括:基本概念、設(shè)計(jì)要點(diǎn)、常見問題解答、參考資源等。
jBPM(JBoss Business Process Management業(yè)務(wù)流程管理),它是覆蓋了業(yè)務(wù)流程管理、工作流、服務(wù)協(xié)作等領(lǐng)域的一個(gè)開源的、靈活的、易擴(kuò)展的可執(zhí)行流程語言框架。jPDL是構(gòu)建于jBPM框架上的流程語言之一。在jPDL中提供了任務(wù)(tasks)、待處理狀態(tài)(wait states)、計(jì)時(shí)器(timers)、自動(dòng)處理(automated actions)?等術(shù)語,并通過圖型化的流程定義,很直觀地描述業(yè)務(wù)流程。
jPDL可以部署于Java語言的任何應(yīng)用環(huán)境下,JavaSE Application(Swing/SWT)、JavaEE Application(Application Server)。
目前jPDL的最新版本是3.2.2,您可以在以下地址:http://labs.jboss.com/jbossjbpm/jpdl_downloads/ 獲得官方下載包。下載包分為兩種,一種是標(biāo)準(zhǔn)包(jbpm-jpdl-3.2.2.zip)只有20M左右;一種是套件包(jbpm-jpdl-suite-3.2.2.zip)將近80M。兩者最大的區(qū)別是套裝包自帶一個(gè)已經(jīng)配置好的jboss服務(wù),下載解壓縮后,可直接運(yùn)行。
jbpm-jpdl.jar是一個(gè)典型的jar文件,它涵蓋對(duì)流程定義和運(yùn)行時(shí)流程實(shí)例上下文環(huán)境的操作API。在最簡(jiǎn)化的業(yè)務(wù)流程樣例中,jPDL將流程定義存儲(chǔ)與XML格式的定義文件中,在運(yùn)行時(shí)載入內(nèi)存,在內(nèi)存里記錄完整的業(yè)務(wù)實(shí)例和執(zhí)行過程的環(huán)境變量,并完成全部操作。顯然,在實(shí)際應(yīng)用中,流程信息必須被持久化的存儲(chǔ)于數(shù)據(jù)庫中。jPDL使用了Hibernate作為其對(duì)象持久化的API。
jbpm-identity.jar是jPDL的一個(gè)輕量級(jí)擴(kuò)展包,簡(jiǎn)單實(shí)現(xiàn)了組Group、用戶User、許可權(quán)Permission等用戶身份認(rèn)證和鑒權(quán)機(jī)制。(實(shí)際項(xiàng)目中,沒有什么用,不過還是加上吧)
JBPM數(shù)據(jù)庫創(chuàng)建表語句:
jbpm.jpdl.oracle.sql
JBPM工作流程模板與實(shí)例相關(guān)表的說明:
JBPM工作流程模板與實(shí)例相關(guān)表.xls
JBPM數(shù)據(jù)庫表字段說明:
JBPM數(shù)據(jù)庫表字段說明.doc
2.1與SSH整合
1、創(chuàng)建公文流轉(zhuǎn)相關(guān)的實(shí)體類,并創(chuàng)建數(shù)據(jù)庫表
2、根據(jù)對(duì)用例的分析,初步建立公文流轉(zhuǎn)相關(guān)的接口
3、實(shí)現(xiàn)接口 切記:要用高版本的hibernate3.jar 3.1 創(chuàng)建數(shù)據(jù)庫表
拷貝相關(guān)的依賴包到WEB-INF/lib下面(bsh.jar、jcr-1.0.jar、jbpm-identity.jar、jbpm-jpdl.jar)修改hibernate.cfg.xml,添加JBPM的映射配置,以及緩存屬性的配置
從JBPM_HOMEconfig目錄下拷貝hibernate.cfg.xml文件中的相關(guān)配置,切記:加入一個(gè)JBPM緩存的東西
執(zhí)行jbpm.jpdl.oracle.sql,創(chuàng)建JBPM的所有數(shù)據(jù)庫表
3.2 與Spring集成
集成JBPM與spring,需要用到第三方的集成包:將其中的spring-modules-jbpm31.jar拷貝到WEB-INF/lib下面即可 集成JBPM與Spring的方法是:將JbpmConfiguration對(duì)象的創(chuàng)建交給Spring來完成
所以,需要在spring配置文件中配置JbpmConfiguration對(duì)象的創(chuàng)建 class=“org.springmodules.workflow.jbpm31.LocalJbpmConfigurationFactoryBean”>
3.3 如何實(shí)現(xiàn)業(yè)務(wù)邏輯類,請(qǐng)參考WorkflowManage.java 用到j(luò)bpmConfiguration對(duì)象的時(shí)候,需要注入(
)當(dāng)我們使用JbpmContext對(duì)象來操縱JBPM的時(shí)候,需要將JbpmContext的HibernateSession對(duì)象設(shè)置為當(dāng)前的HibernateSession對(duì)象
private JbpmContext getJbpmContext(){
} JbpmContext tJbpmContext = jbpmConfiguration.createJbpmContext();tJbpmContext.setSession(getSession());return tJbpmContext;
2.2與系統(tǒng)用戶模型結(jié)合
在JBPM中定義了一個(gè)簡(jiǎn)單的用戶模型。但是在實(shí)際項(xiàng)目中,我們的用戶模型可能遠(yuǎn)比這個(gè)模型復(fù)雜,或者有很大的差異。
JBPM有兩種分配任務(wù)的模式,推模式和拉模式。
推模式:系統(tǒng)主動(dòng)分配任務(wù)給actorId。推模式只有一個(gè)人能參與這個(gè)任務(wù)。通過actorId指定用戶。
拉模式:actorId去申請(qǐng)這個(gè)任務(wù)。拉模式的任務(wù)可以是多個(gè)人參與的,但是只能有其中的一個(gè)人能結(jié)束。通過PooledActors指定用戶群。
當(dāng)同時(shí)指定了這兩個(gè)屬性的時(shí)候,actorId才是真正被指定的參與者。只有這個(gè)參與者才能完成這個(gè)任務(wù),其他的在PooledActors里面的用戶,是無法得到這個(gè)任務(wù)的,所以也沒有辦法處理這個(gè)任務(wù)。
設(shè)置用戶
推模式:Assignable.setActorID(String actorId);
拉模式:Assignable.setPooledActors(String[] actorIds);
得到用戶任務(wù)列表
推模式:TaskMgmtSession.findTaskInstances(String actorId)拉模式:TaskMgmtSesion.findPooledTaskInstances(String actorId)或
TaskMgmtSession.findPooledTaskInstances(List actorIds)為了防止沖突,需要把執(zhí)行任務(wù)的這個(gè)候選參與者升格為參與者,即把這個(gè)用戶設(shè)置到actorId里面,如果需要重新把這個(gè)任務(wù)作為共享任務(wù),只需要把a(bǔ)ctorId這個(gè)屬性設(shè)置為null。
實(shí)際業(yè)務(wù)中參與者實(shí)體模式,最基礎(chǔ)的分配模式可包括直接分配(Direct Allocation)、基于角色分配(Role-Based Allocation)、基于規(guī)則分配(Rule-Based Allocation)。
直接分配模式:在工作流設(shè)計(jì)期,直接為某個(gè)活動(dòng)節(jié)點(diǎn)指定具體的用戶為參與者;
基于角色分配模式:在工作流設(shè)計(jì)期,直接為某個(gè)活動(dòng)節(jié)點(diǎn)指定某個(gè)角色為參與者; 基于規(guī)則的分配模式:在設(shè)計(jì)期或運(yùn)行期,根據(jù)某個(gè)具體的規(guī)則來決定某個(gè)活動(dòng)節(jié)點(diǎn)的參與者(通過JBPM中的自己來創(chuàng)建任務(wù)實(shí)例來實(shí)現(xiàn));
圖1
圖2 圖1是請(qǐng)假流程圖,圖2為JBPM流程代碼。用上述兩圖的例子來具體說明分配任務(wù)的模式。
直接分配模式采用推模式,如圖3所示任務(wù)“申請(qǐng)人核假”的操作者直接指定為發(fā)起申請(qǐng)人。
圖3 角色分配模式采用拉模式,如圖4所示任務(wù)“主管審核”的操作者是通過具體的類進(jìn)行指定的,屬于即競(jìng)爭(zhēng)分配模式?;顒?dòng)節(jié)點(diǎn)的參與者有多個(gè)人,多個(gè)人共同競(jìng)爭(zhēng)此活動(dòng),某個(gè)人竟得此活動(dòng)后,其他的參與者不能再競(jìng)爭(zhēng)。所以系統(tǒng)處理時(shí),任務(wù)角色可以查詢無操作者的任務(wù)實(shí)例,如果一個(gè)用戶申請(qǐng)?zhí)幚泶颂巹?wù)時(shí),那么任務(wù)實(shí)例的操作者置為此用戶。
圖4
圖5 基于規(guī)則的分配模式:設(shè)置屬性create-tasks=“false”。自己通過業(yè)務(wù)規(guī)則來創(chuàng)建不同任務(wù)實(shí)例。
圖6
圖7
延期分配/動(dòng)態(tài)分配(Deferred Allocation/Dynamic Allocation)、基于歷史分配(History-Based Allocation)
延期/動(dòng)態(tài)分配模式:在運(yùn)行期動(dòng)態(tài)的分配某個(gè)參與實(shí)體給某個(gè)活動(dòng)節(jié)點(diǎn);(通過JBPM的定時(shí)器來實(shí)現(xiàn))
基于歷史分配模式:當(dāng)前活動(dòng)節(jié)點(diǎn)的參與者為前續(xù)某個(gè)已經(jīng)執(zhí)行過的活動(dòng)節(jié)點(diǎn)的參與者,此模式在電子政務(wù)的審批流程中經(jīng)常會(huì)用到,例如某個(gè)工作項(xiàng)由秘書辦理后發(fā)給領(lǐng)導(dǎo),然后又從領(lǐng)導(dǎo)處返回個(gè)秘書。(采用直接分配模式,在JBPM的變量進(jìn)行存儲(chǔ)前續(xù)已經(jīng)某個(gè)已經(jīng)執(zhí)行過活動(dòng)節(jié)點(diǎn)的參與者)
2.3流程業(yè)務(wù)應(yīng)用模式
2.3.1流程掛起
在Jbpm的processInstance與taskInstance都對(duì)外提供了掛起進(jìn)程實(shí)例或工作實(shí)例的的接口,同時(shí)也提供了釋放的接口。分別是:
1、processinstance.suspend();processInstance.resume();
2、taskInstance.suspend();taskInstance.resume();同時(shí)processinstance與 taskInstance還提供了一個(gè)標(biāo)志位,isSuspended與isOpen分別表示是掛起還是開放狀態(tài),如果標(biāo)志位isSuspended = true && isOpen = fasle,那么這個(gè)進(jìn)程實(shí)例或任務(wù)實(shí)例在用戶界面就不會(huì)被找出來,但在管理界面還是可以看到。如果isSuspended = false && isOpen = true,結(jié)果就是正常情況了。
2.3.2流程加簽
工作流加簽即在流程節(jié)點(diǎn)上可選擇增加已流程模板訂制的可增加的流程節(jié)點(diǎn)。節(jié)點(diǎn)進(jìn)行加簽后,回到節(jié)點(diǎn)時(shí)的任務(wù)分配與流程退簽一致,故此點(diǎn)在流程退簽中討論。
1、正常加簽,如圖1所示,流程節(jié)點(diǎn)主管審核可以選擇發(fā)起節(jié)點(diǎn)領(lǐng)導(dǎo)審批。
2、加簽拆分:某一流程實(shí)例在某一節(jié)點(diǎn)是否允許發(fā)起多個(gè)加簽,如簽核者A同時(shí)發(fā)起B(yǎng)和C的并行加簽。
圖8
圖9
3、層次加簽:加簽者可以再次發(fā)起到指定人的加簽。如圖10所示,使用Fork中的Script實(shí)現(xiàn)多路路由選擇。流程節(jié)點(diǎn)task1用Fork產(chǎn)生節(jié)點(diǎn)task2或task4的同時(shí)也會(huì)產(chǎn)生task1,這樣task1就又可以發(fā)起的流程加簽。如果不允許同一加簽流程或發(fā)起的加簽流程還未結(jié)束前不允許再次發(fā)起??梢酝ㄟ^流程決策節(jié)點(diǎn)decision進(jìn)行判斷。如下圖所示:
圖10
圖11
4、加簽流程同步或異步:圖9與圖10的例子,就是多個(gè)加簽后,主流程節(jié)點(diǎn)與加簽流程節(jié)點(diǎn)可進(jìn)行異步處理。如果需要進(jìn)行流程的同步處理,需要在流程決策節(jié)點(diǎn)decision增加判斷發(fā)起的加簽流程是否完成的判斷,如果沒有完成,則退回到主流程節(jié)點(diǎn)。
2.3.3流程跳簽
流程跳簽:即跳過接下來的一個(gè)或連續(xù)的多個(gè)節(jié)點(diǎn),直接到指定的節(jié)點(diǎn)執(zhí)行。通過流程轉(zhuǎn)換實(shí)現(xiàn)。但無法實(shí)現(xiàn)從流程分支外跳入流程分支內(nèi)。如果要從流程分支內(nèi)跳出到流程分支外,需要取消該任務(wù)實(shí)例對(duì)應(yīng)的未完成的兄弟令牌的任務(wù)實(shí)例。
2.3.4流程退簽
流程退簽可以認(rèn)為是流程跳簽的一種特例。流程退簽的任務(wù)分配采用直接分配,操作者是此流程節(jié)點(diǎn)已操作過的操作者。
流程退簽的實(shí)現(xiàn)方法有兩種:
1、流程轉(zhuǎn)換
流程退簽的任務(wù)分配,需要先查詢此流程實(shí)例回退節(jié)點(diǎn)之前是否存在已經(jīng)進(jìn)行過操作的任務(wù)實(shí)例。如果有則說明是流程退簽,沒有則正常實(shí)例。流程退簽時(shí),如果已有的流程任務(wù)實(shí)例如果采用直接分配模板,不需要進(jìn)行特殊處理;如果采用角色分配模板,則在分配類中校驗(yàn)流程變量中是否有當(dāng)前節(jié)點(diǎn)的退簽變量,如果有則查詢流程中上次任務(wù)實(shí)例的操作者,并對(duì)任務(wù)進(jìn)行直接分配。如圖1所示,由主管發(fā)起加簽操作,領(lǐng)導(dǎo)進(jìn)行了審批后,回到主管審批節(jié)點(diǎn)。此時(shí),節(jié)點(diǎn)任務(wù)分配就需要進(jìn)行退簽判斷。
圖12
2、修改流程實(shí)例的狀態(tài)
如何開關(guān)一個(gè)任務(wù):任務(wù)實(shí)例TaskInstance有三個(gè)重要的屬性end(任務(wù)結(jié)束時(shí)間),isOpen(任務(wù)是否開啟),isSignalling(任務(wù)是否可流轉(zhuǎn))??刂七@3個(gè)屬性就可以控制任務(wù)實(shí)例.如果要開啟一個(gè)任務(wù),就讓end=null,isOpen=true,isSignalling=true。如果要關(guān)閉一個(gè)任務(wù)就是end=new Date(),isOpen=false,isSignalling=false。另外還有一個(gè)屬性isCancelled,如果你關(guān)閉的任務(wù)作廢了,不需要作為歷史任務(wù)保留,就讓isCancelled=true;
流程回退大致分為三種:
1、簡(jiǎn)單流程回退(無流程分支)
先做個(gè)假設(shè)有流程 a—>b—>c—>d—>e 當(dāng)前流程已經(jīng)跑到d,如果要回到b重新跑怎么做那.步驟是:
一、關(guān)閉任務(wù)b后創(chuàng)建的并且沒有關(guān)閉的任務(wù)。(與任務(wù)b同在一個(gè)節(jié)點(diǎn)上沒有完成的任務(wù)除外)
二、開啟任務(wù)b。
三、將令牌指向任務(wù)b所在的節(jié)點(diǎn)。
圖13 經(jīng)過測(cè)試發(fā)現(xiàn)對(duì)分支的回退會(huì)出現(xiàn)兩個(gè)問題: 1)當(dāng)流程執(zhí)行到分支內(nèi)節(jié)點(diǎn)時(shí)(b,c,d),如果要退回到a任務(wù),并把分支內(nèi)的任務(wù)關(guān)閉掉,當(dāng)再次進(jìn)入分支節(jié)點(diǎn)后,流程就只能運(yùn)行到j(luò)oin節(jié)點(diǎn),不能到達(dá)e。
2)當(dāng)流程執(zhí)行到F時(shí),如果要將流程回退到一個(gè)分支內(nèi)的任務(wù)上(b,c,d),流程就也只能運(yùn)行到j(luò)oin節(jié)點(diǎn),不能再到達(dá)e。
當(dāng)流程執(zhí)行到fork時(shí),會(huì)根據(jù)分支的個(gè)數(shù)創(chuàng)建幾個(gè)子令牌(本例是創(chuàng)建2個(gè)),子令牌會(huì)各自流轉(zhuǎn),直到到達(dá)join節(jié)點(diǎn)。join節(jié)點(diǎn)會(huì)檢查子令牌是否都到達(dá)join節(jié)點(diǎn),如果是就流轉(zhuǎn)主令牌到點(diǎn)一個(gè)節(jié)點(diǎn),如果不是就繼續(xù)等待其他子令牌。完成這個(gè)邏輯主演是依靠Token的isAbleToReactivateParent屬性來完成這個(gè)功能。isAbleToReactivateParent這個(gè)屬性的含義可以理解成,當(dāng)前持有這個(gè)屬性的子令牌是否可以激活(恢復(fù))其父令牌。所以這個(gè)屬性只有分支的子令牌才具有。
isAbleToReactivateParent在fork創(chuàng)建分支令牌為true,當(dāng)子令牌到達(dá)join是會(huì)被設(shè)為false。具體說一下過程(詳細(xì)的可以看看join的execute方法)每一個(gè)子令牌到達(dá)join節(jié)點(diǎn),都會(huì)觸發(fā)join的execute方法。該方法的第一步就是檢測(cè)子令牌的isAbleToReactivateParent是否為true,不是ture你這個(gè)子令牌就什么都別想干了。當(dāng)為true時(shí)子令牌才有權(quán)嘗試(僅僅是嘗試)驅(qū)動(dòng)一下父令牌。
子令牌過這第一關(guān),isAbleToReactivateParent就會(huì)被賦值false。(每個(gè)子令牌只有一次機(jī)會(huì)去見他的父令牌)下面還要過好多關(guān)。所有的關(guān)卡都通過,來到它的父令牌面前。這時(shí)這個(gè)父令牌會(huì)找到它的全部子令牌,檢查子令牌的isAbleToReactivateParent屬性是否都為fasle。如果還有為true的子令牌,說明還有子令牌沒有完成。父令牌會(huì) 等待。要是全為fasle。那就是全部子令牌都完成,父令牌就可以執(zhí)行到下一個(gè)節(jié)點(diǎn)。
2、回退到流程分支中
關(guān)閉里分支內(nèi)的任務(wù),但沒有讓子令牌放棄見父令牌。所以當(dāng)你再次由a進(jìn)入分支時(shí),又創(chuàng)建了兩個(gè)子令牌.這個(gè)老爸現(xiàn)在有4個(gè)子令牌了。其中先前的兩個(gè)子令牌,卻永遠(yuǎn)都見不到父令牌,父令牌會(huì)在join會(huì)一直等。所以要從分支往分支外跳的時(shí)候,除了殺掉任務(wù),也別忘了讓子令牌放棄見父令牌的想法。isAbleToReactivateParent=false。
3、從流程分支中回退
從e跳到分支里。歷史任務(wù)開啟,任務(wù)上的子令牌不想見父令牌(此時(shí)isAbleToReactivateParent = false)。這個(gè)子令牌到了join,該方法的第一步就是檢測(cè)子令牌的isAbleToReactivateParent是否為true,不是ture你這個(gè)子令牌就什么都別想干了。所以,開啟分支里的任務(wù)時(shí),不要忘記將該任務(wù)的令牌屬性isAbleToReactivateParent = true。這樣他才能見到父令牌讓他走人。
2.5子流程
2.5.1子流程部署與刪除
1、jbpm的流程deploy方法之一是: JbpmConfiguration.getInstance().createJbpmContext().deployProcessDefinition(processDefinition);如果流程中涉及子流程的話,deploy需要注意先后順序,否則父流程會(huì)找不到子流程.發(fā)布流程遵循的順序是先子后父。
2、流程實(shí)例結(jié)束后刪除流程實(shí)例的方法之一是: JbpmConfiguration.getInstance().createJbpmContext().getGraphSession().deleteProcessInstance(processInstance.getId());如果流程涉及子流程的話,刪除流程實(shí)例同樣需要注意先后順序。如果先刪除子流程實(shí)例:子流程已結(jié)束,會(huì)將Token表中父令牌的SubProcessInstance字段清空,此時(shí)可以刪除子流程;如果子流程未結(jié)束,Token表中父令牌的SubProcessInstance(外鍵關(guān)聯(lián)子流程的流程ID)字段未清空,會(huì)報(bào)約束錯(cuò)誤。如果要?jiǎng)h除父流程實(shí)例直接刪除,JBPM會(huì)按照先子后父的關(guān)系將此父流程的子孫流程全部刪除。
JBPM的刪除流程的方法存在一個(gè)BUG。例如圖17所示:如果父流程實(shí)例中存在多個(gè)令牌,且存在子流程實(shí)例。如果子流程實(shí)例未結(jié)束時(shí),無法刪除父流程實(shí)例。因?yàn)镴BPM刪除父流程實(shí)例同時(shí)也會(huì)刪除子流程實(shí)例。如圖14所示,JBPM是用令牌來來查詢發(fā)起的子流程實(shí)例會(huì)進(jìn)行刪除。但實(shí)際任何查詢令牌都可查詢到子流程。查詢條件如圖15所示,在首個(gè)令牌中已經(jīng)將子流程刪除,在后續(xù)令牌進(jìn)行操作時(shí)則會(huì)報(bào)約束錯(cuò)誤。如果發(fā)生此類情況,先判斷刪除的流程實(shí)例是否有父流程實(shí)例。沒有則查詢流程實(shí)例中的令牌,將Token表中令牌的SubProcessInstance字段清空后,再調(diào)用上述流程實(shí)例的刪除方法即可。
圖14
圖15
圖16
2.5.2發(fā)起子流程
1、子流程就是流程模板是的一個(gè)流程節(jié)點(diǎn),發(fā)起子流程與發(fā)起其他流程節(jié)點(diǎn)一致。
2、流程節(jié)點(diǎn)可任意發(fā)起子流程,即將子流程可由當(dāng)前流程操作者自行判斷是否發(fā)起??梢酝ㄟ^類似于加簽的方法。如圖17所示:task1擁有兩個(gè)流向選擇,一是處理當(dāng)前節(jié)點(diǎn)任務(wù),二是發(fā)起子流程協(xié)助處理。task1的操作者,如果選擇處理當(dāng)前節(jié)點(diǎn)任務(wù)后流程進(jìn)入task4進(jìn)行;如果是選擇發(fā)起子流程協(xié)助處理,流程發(fā)起子流程與task3,模板設(shè)置task3與task1的操作者一致,但只有唯一的流向即處理當(dāng)前節(jié)點(diǎn)任務(wù)。
圖17
3、子流程的同步與異步
如圖17所示,子流程實(shí)例與父流程實(shí)例是同步的,父流程實(shí)例必須的子流程實(shí)例完成后才能繼續(xù)流程,父流程實(shí)例與子流程實(shí)例是一個(gè)整體。
如圖18所示,子流程實(shí)例與父流程實(shí)例是異步的,父流程實(shí)例只是負(fù)責(zé)發(fā)起子流程實(shí)例,子流程的完成情況對(duì)父流程實(shí)例沒有影響。
圖18 2.6 JBPM定時(shí)器 2.6.1定時(shí)器的配置
1、jbpm.cfg.xml中配置,關(guān)于定時(shí)器運(yùn)行時(shí)間的配置如圖19所示:
圖19
2、jbpm.cfg.xml中配置,關(guān)于業(yè)務(wù)日歷的配置如圖20所示:
圖20 jbpm.business.calendar.properties是關(guān)于業(yè)務(wù)日歷的具體配置如圖21所示:
圖20 對(duì)于上面定義通俗的理解就是它歸定了從星期一到星期五的9:00-12:00 & 12:30-17:00這段時(shí)間為上班時(shí)間也就是業(yè)務(wù)時(shí)間,星期六和星期日沒有定義也就是放假的時(shí)間,再往下就是定義了12個(gè)節(jié)假日,最后是一些工作時(shí)長(zhǎng)的統(tǒng)計(jì)如一天7.5小時(shí),一個(gè)星期37.5小時(shí)等。
3、web.xml中配置,如圖21所示
圖21
4、配置時(shí)需要注意,JBPM的定時(shí)器本身有一個(gè)BUG,無法讓JobExecutorServlet使用自己的jbpm.cfg.xml,因?yàn)镴ava類JbpmConfiguration源碼(如圖22所示)實(shí)現(xiàn)就是使用“org/jbpm/default.jbpm.cfg.xml”。在 default.jbpm.cfg.xml使用中默認(rèn)hibernate配置文件如下所示:
圖22 2.6.2定時(shí)器的運(yùn)用
定時(shí)器timer可以被用于decision、fork、join、node、process-state、state、super-state、task-node,可以設(shè)置開始時(shí)間duedate和頻率repeat,定時(shí)器動(dòng)作可以是所支持的任何動(dòng)作元素,如action或script。timer 還有一個(gè)很重要的屬性cancel-event,這個(gè)是timer和task結(jié)合時(shí)使用的,任務(wù)定時(shí)器的cancel-event可以被定制。默認(rèn)情況下,當(dāng)任務(wù)被結(jié)束時(shí)(=完成)任務(wù)上的定時(shí)器將被取消,這是通過在定時(shí)器上使用cancel-event屬性,流程開發(fā)者可以定制諸如task-assign或task-start。cancel-event支持多個(gè)事件,通過在屬性中指定一個(gè)用逗號(hào)分割的列表,可以組合cancel-event 的類型。如圖23所示:
定時(shí)器的時(shí)間分為絕對(duì)時(shí)間與業(yè)務(wù)時(shí)間。業(yè)務(wù)日歷在jbpm.cfg.xml中進(jìn)行配置。業(yè)務(wù)日歷運(yùn)用的為語法:
圖23
2.7 郵件服務(wù)器 2.7.1郵件服務(wù)器的配置
在jbpm.cfg.xml中配置郵件服務(wù)器,如圖24所示
圖24
1、郵件模板的設(shè)置如圖25所示:
圖25 jbpm.mail.templates.xml的具體內(nèi)容如圖26所示:
圖26
2、郵件地址設(shè)置,如圖27所示
圖27 jbpm.mail.properties的具體內(nèi)容如圖28所示:
圖28
3、用戶Email地址的查找,如圖29
圖29 查找類org.jbpm.identity.mail.IdentityAddressResolver可以根據(jù)業(yè)務(wù)的用戶模型進(jìn)行替換。
4、自定義郵件支持,如圖30
圖30 郵件類:com.sinosoft.ups.service.workflow.Mail
與默認(rèn)郵件類:org.jbpm.mail.Mail的區(qū)別在于public static void send(Properties, String, List, List, String, String)不同,如圖31所示
圖31 2.7.2郵件服務(wù)器的運(yùn)用
1、郵件在流程中自動(dòng)提醒,如圖32所示
圖32
2、工作流模板中定義郵件節(jié)點(diǎn)與郵件作
在hibernate.cfg.xml增加如圖33所示的配置文件,不然在發(fā)布帶有MailNode與MailAction的工作流模板時(shí)會(huì)報(bào)hibernate錯(cuò)誤。
圖33 郵件節(jié)點(diǎn)訂置如圖34所示:
圖34 郵件動(dòng)作訂置如圖35所示:
圖35 2.8結(jié)合工單(待定)
工單:一次申請(qǐng)的提交記錄,該記錄具有唯一性。工單相關(guān)的概念:
工單管理:對(duì)投訴工單、等不同類型的工單進(jìn)行派發(fā)、接收處理、回復(fù)等一系列工單處理操作。
工單統(tǒng)計(jì):對(duì)各種處理工單的數(shù)量,類型進(jìn)行數(shù)據(jù)統(tǒng)計(jì)和導(dǎo)出、報(bào)表打印。
工單系統(tǒng)管理:對(duì)工單系統(tǒng)進(jìn)行管理,設(shè)置相應(yīng)的處理部門、處理人員和相應(yīng)的權(quán)限,規(guī)定處理流程。
工單日志:記錄工單操作日志,有效管理日志的處理狀況和責(zé)任。