對jBPM來(lái)講,工作流由一些節點(diǎn)和用戶(hù)定義的Hander組成。一個(gè)工作流從start-state開(kāi)始,中間經(jīng)過(guò)若干個(gè)節點(diǎn)(state、fork、milestone、process-state、decision和join),最后結束于end-state。節點(diǎn)之間通過(guò)transient來(lái)連接,指明當前節點(diǎn)下面要經(jīng)過(guò)的節點(diǎn)。經(jīng)過(guò)節點(diǎn)時(shí),jBPM會(huì )觸發(fā)相應的Hander來(lái)完成用戶(hù)指定的工作。Hander包括各種事件的ActionHander;指定節點(diǎn)指定操作Actor的AssignmentHandler;定義節點(diǎn)工作的Hander,包括fork節點(diǎn)ForkHander,Join節點(diǎn)JoinHander,decision節點(diǎn)的DecisionHander,process-state節點(diǎn)的ProcessInvocationHandler。jBPM對Hander都有缺省的實(shí)現,如果用戶(hù)沒(méi)有指定相應Hander,jBPM就使用缺省Hander。
定義工作流程的時(shí)候,可以根據實(shí)際業(yè)務(wù)流程,先畫(huà)UML狀態(tài)圖,然后根據活動(dòng)圖和jpdl編寫(xiě)processdefinition.xml-jBPM工作流定義文件。狀態(tài)圖的節點(diǎn)可以對應到jpdl的相應節點(diǎn),比如狀態(tài)對應于state、轉換(分叉)對于fork。流程定義文件設計的時(shí)候,可以將一些業(yè)務(wù)處理放在Hander處理。
jBPM節點(diǎn)實(shí)際上是XPDL規范中Activity的細化,是一種特殊的Activity。start-state與end-state節點(diǎn),是由jBPM負責處理,jBPM從start-state節點(diǎn)開(kāi)始工作流程,在end-state結束工作流程。
state節點(diǎn)要外部的參與才能進(jìn)入到下一個(gè)狀態(tài),比如請假流程中需要經(jīng)理批準的步驟。
Join相當于activity transition 的join,fork相當于activity transition 的fork,但是采用怎樣join和fork,用戶(hù)可以自己定義。缺省的fork相當于XPDL 的AND FORK,每個(gè)分叉都走;缺省的join 相當于XPDL 的AND JOIN,所有分叉都到達后,才進(jìn)入下一節點(diǎn)。
Decision相當于編程語(yǔ)言中的判斷,由DecisionHander決定下一個(gè)要經(jīng)過(guò)的節點(diǎn)。通過(guò)自己定義DecisionHander,用戶(hù)可以借助decision節點(diǎn)實(shí)現自動(dòng)節點(diǎn),即流程到這里,執行一定操作,自動(dòng)進(jìn)入下一個(gè)節點(diǎn)。
Process-state相當于subflow activity,ProcessInvocationHandler負責處理具體調用子流程的過(guò)程,比如子流程名稱(chēng),傳遞的參數等。jBPM沒(méi)有規定子流程的調用過(guò)程,只是提供了一個(gè)DefaultProcessInvocationHandler,給出了一個(gè)調要的范例。
Milestone是一種特殊的節點(diǎn),用于同步兩個(gè)執行路徑,比如執行到milestone節點(diǎn)后,jBPM就等待,等到另外一條路徑上某個(gè)節點(diǎn)發(fā)出可以繼續的信號后,jBPM才進(jìn)入milestone的下一個(gè)節點(diǎn)。節點(diǎn)通過(guò)MilestoneReachedActionHandler來(lái)發(fā)消息。
工作流中用到的所有變量通過(guò)Variable來(lái)說(shuō)明,變量類(lèi)型通過(guò)type來(lái)定義。類(lèi)型定義必須要繼承org.jbpm.delegation.Serializer接口。變量是作為字符串存儲在數據庫中的,因此類(lèi)型要提供與字符串類(lèi)型相互轉換的方法。jBPM變量的作用域是工作流本身。
流程執行到某個(gè)節點(diǎn)的時(shí)候,會(huì )觸發(fā)節點(diǎn)的相應事件。事件類(lèi)型包括process-start、process-end、state-enter、state-leave、state-after-assignment、milestone-enter、milestone-leave、decision-enter、decision-leave、fork-enter、fork-every-leave、join-every-enter、join-leave、transition。事件具體執行的操作,用戶(hù)通過(guò)繼承ActionHander接口來(lái)指定。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。