jBPM工作流程定義

jBPM來講,工作流由一些節點和用戶定義的Hander組成。一個工作流從start-state開始,中間經過若干個節點(stateforkmilestoneprocess-statedecisionjoin),最後結束於end-state。節點之間通過transient來連接,指明當前節點下面要經過的節點。經過節點時,jBPM會觸發相應的Hander來完成用戶指定的工作。Hander包括各種事件的ActionHander;指定節點指定操作ActorAssignmentHandler;定義節點工作的Hander,包括fork節點ForkHanderJoin節點JoinHanderdecision節點的DecisionHanderprocess-state節點的ProcessInvocationHandlerjBPMHander都有缺省的實現,如果用戶沒有指定相應HanderjBPM就使用缺省Hander<o:p></o:p>

定義工作流程的時候,可以根據實際業務流程,先畫UML狀態圖,然後根據活動圖和jpdl編寫processdefinition.xmljBPM工作流定義文件。狀態圖的節點可以對應到jpdl的相應節點,比如狀態對應於state、轉換(分叉)對於fork。流程定義文件設計的時候,可以將一些業務處理放在Hander處理。<o:p></o:p>

    jBPM節點實際上是XPDL規範中Activity的細化,是一種特殊的Activitystart-stateend-state節點,是由jBPM負責處理,jBPMstart-state節點開始工作流程,在end-state結束工作流程。<o:p></o:p>

state節點要外部的參與才能進入到下一個狀態,比如請假流程中需要經理批准的步驟。<o:p></o:p>

Join相當於activity transition joinfork相當於activity transition fork,但是採用怎樣joinfork,用戶可以自己定義。缺省的fork相當於XPDL AND FORK,每個分叉都走;缺省的join 相當於XPDL AND JOIN,所有分叉都到達後,才進入下一節點。<o:p></o:p>

Decision相當於編程語言中的判斷,由DecisionHander決定下一個要經過的節點。通過自己定義DecisionHander,用戶可以藉助decision節點實現自動節點,即流程到這裏,執行一定操作,自動進入下一個節點。<o:p></o:p>

Process-state相當於subflow activityProcessInvocationHandler負責處理具體調用子流程的過程,比如子流程名稱,傳遞的參數等。jBPM沒有規定子流程的調用過程,只是提供了一個DefaultProcessInvocationHandler,給出了一個調要的範例。<o:p></o:p>

Milestone是一種特殊的節點,用於同步兩個執行路徑,比如執行到milestone節點後,jBPM就等待,等到另外一條路徑上某個節點發出可以繼續的信號後,jBPM才進入milestone的下一個節點。節點通過MilestoneReachedActionHandler來發消息。<o:p></o:p>

工作流中用到的所有變量通過Variable來說明,變量類型通過type來定義。類型定義必須要繼承org.jbpm.delegation.Serializer接口。變量是作爲字符串存儲在數據庫中的,因此類型要提供與字符串類型相互轉換的方法。jBPM變量的作用域是工作流本身。<o:p></o:p>

流程執行到某個節點的時候,會觸發節點的相應事件。事件類型包括process-startprocess-endstate-enterstate-leavestate-after-assignmentmilestone-entermilestone-leavedecision-enterdecision-leavefork-enterfork-every-leavejoin-every-enterjoin-leavetransition。事件具體執行的操作,用戶通過繼承ActionHander接口來指定。<o:p></o:p>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章