好像分析的順序錯了,應該是先分析流程定義的基本元素好一些,今天就給大家展示一下Fire Workflow的org.fireflow.model.net包。
首先看一下整體類圖:
由圖很顯而易見,Node分為兩大類,Synchronizer和Activity,其中前者又可以分為EndNode和 StartNode。邊Edge兩端關聯兩個Node。Loop和Transition繼承自Edge。由於Fire Workflow是基於Petri 網理論的,Transition也就是Petri net 中的變遷。Fire Workflow在基本Petri網基礎上將處所節點 (Place)給擴展了(雖然當前的流程元素定義還不夠完善,這也是下一步要做的事情)。下面簡要展示 一下每一部分的內容。
Node:工作流網的節點。繼承抽象類AbstractWFElement(見上文)。其第二個構造函數也是調用了基 類的方法。
Activity:繼承自Node,大大豐富了節點的內容,和我們通常認為的工作網中的Activity類似。
Synchronizer:同步器,相當於路由,可以理解為Petri net中的or-split,and-split,or-join, and-join,主要處理分支和會聚。
enteringTransitions:輸入轉移的列表。
leavingTransitions:輸出轉移的列表。
enteringLoops:輸入循環的列表。
leavingLoops:輸出循環的列表。和enteringLoops一起配合Loop來進行循環操作。
StartNode:開始節點,繼承自Synchronizer。每個流程有且只有一個開始節點。
EndNode:結束節點,繼承自Synchronizer。每個流程有且只有一個結束節點。
Edge:工作網中的邊,也就是弧。
fromNode:轉移(或者循環)的源節點。轉移的源節點可以是StartNode、 Activity或者Synchronizer 。循環的源節點必須是Synchronizer或者EndNode,同時循環的目標節點必須是循環源節點的前驅。
toNode:轉移(或者循環)的目標節點。轉移的終止目標可以是EndNode、 Activity或者Synchronizer 。循環的目標節點必須是Synchronizer或者StartNode。
condition:轉移(或者循環)的啟動條件。
Transition:流程轉移。繼承自Edge。目前沒有擴展。
Loop:循環。繼承自Edge。目前也沒什麼擴展。
可以看出,Fire Workflow的工作流網模型已經能滿足基本的流程設計需要,關於Fire Workflow對於 各種工作流模式的實現可以參看非也寫的《Fire Workflow工作流原理、設計與應用》,國內已經有多個 使用案例了,本人正做翻譯方面的工作,打算向國外社區發布Fire Workflow,把Fire推向世界,如有興 趣加入的可以聯系我。