Slickflow 一款.NET、.NET CORE 跨平臺支持多數據庫的開源企業級工作流引擎介紹

前言:工作流系統通常是作爲中間組件嵌入到企業業務系統應用中去,作爲業務流程構造和重整的重要工具,工作流系統的實現主要要考慮以下幾點要素:1. 工作流模型要符合一些標準化模型的定義;2. 工作流管理系統的功能是否能夠滿足特定應用的需求,而同時不阻礙業務應用的整體性;3. 工作流技術是否跟SOA技術融合,可以作爲服務總線的方式供外部調用。

Slickflow 在開發工作流系統期間,選取BPMN模型作爲工作流模型的語義表達,BPMN模型消除技術和業務之間的隔閡,注重業務人員對流程的需求和理解,而不是以技術爲本位,相對來說,更近一步體現技術服務於業務需求的概念。其次,由於工作流模型跟業務需求的緊密結合,還有新技術的出現,認爲有必要構建新的工作流系統;鑑於以上認識,總結了在構建獨立工作流系統的關鍵模型和算法,實現了Wf5 工作流引擎,作爲.NET平臺上的開源工作流引擎,希望能夠爲企業應用開發人員提供借鑑和學習,也歡迎提出修改建議。

Slickflow 博客園開發系列技術文檔資料介紹:

http://www.cnblogs.com/slickflow


一:功能介紹:

  1. 參考BPMN標準的流程定義解析;

  2. 遞歸解析實現的工作流引擎;

    2.1 順序流轉;

    2.2 分支/合併;

    2.3 條件表達式;

    2.4 自身循環;

    2.5 撤銷/退回/返籤;

    2.6 角色資源;

  3. 集成嵌入Dapper MicroORMapping 框架;

  4. 流程定義BPMN文件的緩存讀取;

  5. 異常日誌記錄Wflog;

  6. 工作流服務WebApi 接口示例;

  7. Test 代碼示例。

 

二:工作流技術介紹

 

1. 工作流模式

 

工作流引擎中已經提供了串行,分支等基本模式,目前需要做的工作是對這些模式進行抽象,爲後續的圖形化定義界面上提供代碼支持。

1.1 串行

是指工作流流程中的任務是依照次序順序執行,沒有分支選擇,循環等路由功能。

1.2 分支/合併

分支模式是指對工作流流程中的任務執行條件進行限定,在執行過程中,根據條件判斷執行路徑。

 

1.2.1分支情況

AndSplit : 並行分支,所有連線都可以執行後續節點;

OrSplit:或分支,滿足條件的連線,可行執行後續節點

XOrSplit: 異或分支,有第一個滿足條件的連線,即可執行後續節點。

ComplexSplit:複雜情況的分支,未明確給定。

1.2.2合併情況:

         AndJoin:並行合併,所有連線上的條件必須都滿足,纔可以執行該Gateway節點。

         OrJoin:或合併,有條件定義的連線,如果條件都滿足,纔可以執行該Gateway節點。

         XOrJoin:異或合併,只要有第一個連線的條件滿足,不用再做其他連線的條件判斷,直接執行該Gateway節點。

         ComplexJoin:複雜情況的合併,未明確給定。

 

1.2.3 分支的圖形元素示例

gatewaySplitJoinType

gatewayDirection

bPMN Graph

description

Split(分支)

AndSplit

(並行分支)

Transition的屬性包括:

1.        Condition

2.        parallelOption: (necessary, optional)

解析所有必需類型連線上的條件是否都滿足,如果滿足,則執行AndSplit節點的所有後續節點。

OrSplit

(多選分支)

解析滿足條件的分支連線,如果條件爲真,則執行這些連線上的後續節點。

XOrSplit

(互斥分支)

Transition的屬性包括:

1.        Condition

2.        priority: [1,..n]

根據優先級,解析出第一個滿足條件的連線,然後執行該連線的後續節點,其它分支上的節點不再執行。

Join(合併)

AndJoin

(並行合併)

Transition的屬性包括:

1.        Condition

2.        parallelOption: (necessary, optional)

當所有必需連線上的條件都滿足時候,才能執行AndJoin節點的後續節點。

OrJoin

(選擇合併)

根據連線上的條件定義,解析條件,如果滿足,則OrJoin節點之後的節點可以被執行;此時,其它前驅分支節點可以繼續執行,但不再實例化XOrJoin節點。

XOrJoin

(互斥合併)

Transition的屬性包括:

1.        Condition

2.        priority: [1,..n]

根據優先級解析第一個滿足條件的連線,如果有,XOrJoin節點的後續節點可以被執行,其它前驅分支節點不能再執行。

 

 1.2.4 多實例

節點執行有多個實例後,纔可以繼續向下執行。

 

2. 工作流節點UML圖

 

 

3. 獲取流程下一步的算法




4. 總結

Wf5已經用於實際項目生產環境,爲不斷完善和創新,已經提供100%開放源代碼版本,方便大家下載使用;此外考慮後期建立社區或在線交流羣,供.NET平臺工作流開發人員和有興趣的同學一起交流學習,深入探討工作流的發展趨勢,也歡迎大家提出後期開發的建議。

 

 

Slickflow .NET開源工作流引擎:

http://github.com/besley/slickflow

 

Slickflow .NET 交流羣
QQ: 233248778


 

 

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