工作流引擎設計與實現·基礎篇

常見的流程

簡單順序流程

每個節點按順序執行

條件流程一

決策節點輸出邊中存在表達式,流程向邊表達式值為true行進。

fdcf867fb04a18ed1e82eb2e3c74beb6

條件流程二

使用決策節點,該表達式返回下一個節點的名稱

f8f00afab60cef8b0d64672b61d1259a

分支/合並流程

分支與合並要成對出現,由合並節點判斷是否具備合並條件。

30d9776fa8406d5333b59366ef8f6f48

子流程

主流程中存在子流程,當所有子流程結束,主流程才結束。

流程元素

工作流中,會定義一些常用的流程元素。

開始節點

流程最開始節點,整個流程由此節點開始,沒有輸入邊。

結束節點

流程經過該節點後,流程將結束,沒有輸出邊。

任務節點

在該節點上,會產生一些任務,可以是人工任務或者自動化任務,如果為人工任務,一般會產生阻塞,隻有任務完成,達到一定條件,才能驅動流程往下一個節點行進。

決策節點

該節點存在決策表達式,流程經過該節點時,會執行決策表達式,決定下一步往哪個節點行進。

分支節點

當存在多條支線時,需要分支節點。

合並節點

與分支節點配合,多條支線最終會合並到該節點,由該節點決定是否可以往下一步行進。

子流程節點

主流程中衍生出的流程,該流程有自己的生命周期,子流程也會產生阻塞,所以隻有子流程執行結束,才能驅動流程往下一節點行進。

輸入/輸出邊

連接流程節點元素的邊。

流程元素分析

元素名稱 元素屬性 元素行為 備註
開始節點 編碼、名稱、前置攔截器、後置攔截器 執行節點 元素行為主要是調用輸出邊的執行方法
結束節點 編碼、名稱、前置攔截器、後置攔截器 執行節點 元素行為主要是修改流程實例狀態及歸檔。
任務節點 編碼、名稱、前置攔截器、後置攔截器、表單、參與者、參與者處理類、任務類型、參與類型、提醒時間、重復提醒間隔、期待完成時間、是否自動完成 執行節點 元素屬性主要是用於定義任務的,可自行擴展。元素行為主要是判斷是否可以往下一節點行進,如果可以,則調用輸出邊執行方法。
決策節點 編碼、名稱、前置攔截器、後置攔截器、決策表達式 執行節點 元素行為主要是執行決策表達式,找到輸出邊並執行輸出邊方法
分支節點 編碼、名稱 執行節點 元素行為調用輸出邊的執行方法
合並節點 編碼、名稱 執行節點 元素行為主要是判斷是否可以合並(往下一節點行進)如果可以,則調輸出邊執行方法。
子流程節點 編碼、名稱、前置攔截器、後置攔截器、流程名稱、流程版本號 執行節點 元素行為調用輸出邊的執行方法
輸入/輸出邊 編碼、名稱、表達式 執行輸出邊 如果下一節點為任務節點,則會執行創建任務處理器方法;如果下一節點為子流程,則會執行創建子流程處理器方法;否則,直接調用下一節點的執行方法。

流程定義

在工作流中,業內習慣使用bpmn規范來定義流程,但是因該規范過於龐大且復雜,所以本工作流的設計並不采用該定義規范。而是以LogicFlow流程編輯器框架為基礎,進行自定義擴展。(省去前端再次技術選型的問題)這裡做一下簡單的介紹。 上文我們提到的流程元素就是構成流程的基礎單元,其中各節點對應著LogicFlow的node,而輸入/輸出邊則對應著LogicFlow的edge。 以下是LogicFlow的樣例文件:

{
"nodes": [{
"id": "start",
"type": "circle",
"x": 340,
"y": 160,
"text": "開始"
},
{
"id": "apply",
"type": "rect",
"x": 520,
"y": 160,
"text": {
"x": 520,
"y": 160,
"value": "請假申請"
}
},
{
"id": "deptApprove",
"type": "rect",
"x": 740,
"y": 160,
"text": {
"x": 740,
"y": 160,
"value": "部門領導審批"
}
},
{
"id": "end",
"type": "circle",
"x": 920,
"y": 160,
"text": "結束"
}
],
"edges": [{
"id": "t1",
"type": "polyline",
"sourceNodeId": "start",
"targetNodeId": "apply",
},
{
"id": "t2",
"type": "polyline",
"sourceNodeId": "apply",
"targetNodeId": "deptApprove",
},
{
"id": "t3",
"type": "polyline",
"sourceNodeId": "deptApprove",
"targetNodeId": "end"
}
]
}

发表回复

相关推荐

2023年投影儀推薦選購攻略、避坑攻略,最全面攻略 | 小米、明基、愛普生、堅果、極米、大眼橙、傢用客廳臥室投影儀、高清、4K 投影儀推薦

前文概要結論先行(左邊標粗為推薦款):年度最新款/熱賣款投影儀介紹區體驗檔(2000~3000)極米NEW Z6X在同價位裡,性能表現...

· 2分钟前

婚姻輔導是什麼東西?婚姻問題找婚姻傢庭咨詢師真的有用嗎?

[婚姻輔導是什麼東西?]“婚姻輔導” 這四個字,聽瞭就好像感覺要出問題瞭!其實恰恰相反 它會幫助你減少許多問題。有些人會...

· 3分钟前

落地签也会被拒签?!

现今不少国家都对我国开放了落地签, 本来是一个便利的政策, 一般情况下都能顺利办下来 但是有些小细节不注意也会面临被拒 ...

· 5分钟前

【零基礎芯片課】Day 37 聊聊芯片工程師這個職業

半導體是一個人才、資金、技術密集型的行業,從工作環境、待遇、成長空間角度看比較適合理工科作為工程師的職業優選行業之一...

· 5分钟前

最新28套高质量期末家长会&期末颁奖典礼&期末表彰大会PPT模板!

大家好,我是鱼主任,今天给大家带来最新28套高质量期末家长会&期末颁奖典礼&期末表彰大会PPT模板!

· 6分钟前

Copyright 2015-2025 www.icpchaxun.com ©All Rights Reserved.