一、基礎概念
理論支撐概念:petri網路;DNG;彈性制造系統FMS.
Petri 1976年的異步系統理論,翻譯過來的庫所,托肯,變遷三個概念理解了就可以進入FMS系統實戰理論學習,
DNG是設計流程圖資料結構的理論基礎,就是流程長什么樣子,如何決議,如何讀取,如何保存,美人魚(mermaid)采用MD保存流程,理解其原理就可設計資料結構,在下面會講解,
二、目標
因接觸flowable有一年之久,被各種折騰,久而久之,發現實際業務又得上CMMN,太復雜了,不堪回首,符合BPMN的流程,但在小需求上費盡腦汁,細想半年,化繁為簡,實際審批流僅僅需要以下幾個:
2.1)任務節點,
2.2)網關,交叉網關,并行網關,條件網關,
2.3)任務,定時任務,節點審批后任務,
這三點就是我們的目標,
三、繪制流程圖
3.1)根據mermaid結構例子如下:
A-->B
B-->C
D-->C
非常好理解,那么資料結構有了,一棵樹就是一個流程圖,
id pid type之類的就可以設計出來,
easyflow這個資料結構比較符合,可以學習擴展下,
四、根據目標
flowable 7個介面只要實作4個TaskInstance,TaskDefineInstance,ProcessInstance,ProcessDefinceInsance.具體代碼不寫了,具體來講如何實作,
workflow-core倉庫內實體挨個跑一遍,可以實施開發了,偽代碼如下:
流程定義:
4.1定義模型:
交換模型(變遷) FlowModelStep
節點模型 (庫所)InitStep
builder.StartWith<InitStep>().input(..提交流程傳入InitStep).output(..輸出交換模型).Onerror(出錯重試,這個方法很給力,如果流程出錯,僅需拷貝此流程資料到測驗環境,即可實作例外重現)//初始化交換模型,回傳結束標志,回傳第一個審批節點資料到變遷模型,
.while(w=>w.未找到結束標志)
.Do(context=>context.StartWith<DealStep>()
.waitfor(workflow唯一事件,僅需修改一個源代碼方法).input().output()
.Then<DealStep>().input().output()//提交審批核心業務可以寫在這里,
.If()可以增加一些判斷
.Then<ElseDealStep>()
.Then<SendMessageStep>()
..........
)
.Then<WorkflowEndStep>()
.EndWorkflow();
host.startEvent()//發起流程審批,
host.Register<,>//注冊流程,
host.start()//開啟流程,
五、總結:
提交訊息無狀態,狀態管理比較麻煩,比如審批后告訴api已經審批通過,可以展示審批人資訊和流程圖了,可自行實作,
最爽的是,流程可以嵌套,可實作比較復雜的也無需求,思路很清晰,比如串聯作業流,
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/253744.html
標籤:C#
上一篇:遍歷時間框賦值給文本框
