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

1、基礎概念api

  理論支撐概念:petri網絡;DNG;彈性製造系統FMS.網絡

  Petri 1976年的異步系統理論。翻譯過來的庫所,託肯,變遷三個概念理解了就能夠進入FMS系統實戰理論學習。數據結構

  DNG是設計流程圖數據結構的理論基礎。就是流程長什麼樣子,如何解析,如何讀取,如何保存。美人魚(mermaid)採用MD保存流程,理解其原理就可設計數據結構,在下面會講解。異步

2、目標學習

  因接觸flowable有一年之久,被各類折騰,長此以往,發現實際業務又得上CMMN,太複雜了,不堪回首,符合BPMN的流程,但在小需求上費盡腦汁。細想半年,化繁爲簡,實際審批流僅僅須要如下幾個:測試

2.1)任務節點。ui

2.2)網關。交叉網關,並行網關。條件網關。翻譯

2.3)任務。定時任務,節點審批後任務。設計

  這三點就是咱們的目標。接口

3、繪製流程圖

3.1)根據mermaid結構例子以下:

A-->B

B-->C

D-->C

很是好理解,那麼數據結構有了,一棵樹就是一個流程圖。

id pid type之類的就能夠設計出來。

easyflow這個數據結構比較符合。能夠學習擴展下。

4、根據目標 

      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()//開啓流程。

5、總結:

提交消息無狀態,狀態管理比較麻煩,好比審批後告訴api已經審批經過,能夠展現審批人信息和流程圖了。可自行實現。

最爽的是,流程能夠嵌套,可實現比較複雜的也無需求,思路很清晰。好比串聯工做流。

相關文章
相關標籤/搜索