JBPM quick start 第九章 流程模型

9.1概述
一個流程定義是對一個業務流程的正式說明,以及它是基於有向圖的。該圖是結點(node)與流向(transition)的組合。圖中每一個結點都是一個特殊的類型,結果的類型決定了該結點的運行時的行爲。一個流程定義有且僅有一個開始狀態。
一個令牌(token)是執行的軌跡。令牌是一個運行時的概念,其維護着速個圖中指向結點的指針。
一個流程實例(process instance),是流程定義的一次執行過程。當流程實例被創建 ,一個令牌被創建,該令牌叫做這個流程實例的根令牌並處於這個流程實例的開始狀態。
信號(signal)命令令牌繼續執行,當接收到一個未命名的信號時,一個令牌將通過默認的“離開流向”離開當前結點,如果該信號有明確命名,令牌將通過指定的流向離開該結點。給流程實例發送命令是由令牌來代理。
當令牌進入結點後,結點會被執和,結點本身負頁讓流程繼續,而讓流程繼續就是讓令牌離開當前結點,每個結點類型可以實現不同的動作來讓流程繼續。一個結點如果不繼續執行則可以看作是一個狀態。
動作(Action)是在執行流程的時候事件觸發執行的Java代碼,圖是軟件需求的重要表達方式,但是圖只是一個軟件的視圖,它隱藏了許多技術的細節。動作就是把技術細節隱藏在圖以外的一種 機制。動作可以裝飾圖。主要的事件有:進入一個結點,離開一個結點,開始一個流向等。

9.2流程圖
流程定義的基本設施是由結點及流向組成的圖。那些信息是由一個叫processdefinition.xml的XML文件來定義的,每個結點有自已的類型,如狀態、選擇、分支、合併。每個結點有自已的流向集,每個流向有其唯一的名稱。如,下面一幅圖是一個JBAY拍賣流程的流程圖:
[img]http://docs.jboss.com/jbpm/v3/userguide/images/auction.process.graph.gif[/img]
下面是其對應的processdefinition.xml
[code]
<process-definition>

<start-state>
<transition to="auction" />
</start-state>

<state name="auction">
<transition name="auction ends" to="salefork" />
<transition name="cancel" to="end" />
</state>

<fork name="salefork">
<transition name="shipping" to="send item" />
<transition name="billing" to="receive money" />
</fork>

<state name="send item">
<transition to="receive item" />
</state>

<state name="receive item">
<transition to="salejoin" />
</state>

<state name="receive money">
<transition to="send money" />
</state>

<state name="send money">
<transition to="salejoin" />
</state>

<join name="salejoin">
<transition to="end" />
</join>

<end-state name="end" />

</process-definition>
[/code]

9.3結點
流和圖由結點及流向組成,更多的圖及執行模型,見第四章,面向圖形編程。
結點有類型,結點的類型決定了在運行時,執行進入到一個結點時發生的事情。JBPM有一系列的預置結點類型供我們使用。同時,你可以自已定義自已的結點類型。

9.3.1結點的責任
結點有兩個主要的責任,一,可以執行Java代碼,通常這些Java代碼與該結點的功能有點,如創建一個任務實例,發送一個通知,更新數據庫,二,結點負責傳播流程,即使流程可繼續執行,概括地說,結點在傳播流程時有下面一些選項:
* 1 不傳播流程,這種情況下該結點表現爲一個等待狀態。
* 2 執行其中一個流向,流開當前結點。也就是說令牌在進入該結點的時候被程序要求執行一個流向流開:executionContext.leaveNode(String)。該結點表現爲自動結點,它可以執行一些自定義邏輯並且繼續流程而不需要等待。
*3 創建新的執行軌跡,結點可以決定創建新的令牌。每一個新令牌代表一個新的執行軌跡且可以在結點的流向中加載。一個好的示例就是分支結點。
*4 執行軌跡的結束點。結點可以決定結束一個執行軌跡。意味着令牌被終止、執行軌跡完成。
*5 通常,結點可以改變流程的整個運行時結構,運行時結構是指包括一系列的品樹形分佈的令牌。每個令牌代表一條執行軌跡,結點創建或結束令牌,通過流向把令牌放到一個結點
JBPM包括 -- 像所有的工作流和BPM引擎一樣-- 一系列的預置的結點類型,有文檔描述
它們的配置和行爲。但是JBPM和麪向圖形編程基金會最難得的一點是我們對開發者開放模型,開發者可以自定義結點行爲並易於在流程中使用。
傳統的工作流和業務流程管理系統很相像的時,他們通常提供合適的結點集合(稱爲流程語言),他們的流程語言是封閉的,並且執行模型是隱藏在運行環境之後。查找工作流模式結果表明,光有流程語言是不足夠的。我們選擇一種簡單的模型並允許開發者寫自已的結點類型。JPDL流程語言是開放的。

下面,我們來討論一些比較重要的JPDL的結點類型。
(待續)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章