一、基於workflow-core強勢開發審批流【已成功流轉50W筆單據】


一、基礎概念

  理論支撐概念: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已經審批通過,可以展示審批人信息和流程圖了。可自行實現。

最爽的是,流程可以嵌套,可實現比較復雜的也無需求,思路很清晰。比如串聯工作流。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM