基於BPMN2.0的工單系統架構設計(中)
來自專欄我在微服務圈子裡混4 人贊了文章
在上篇基於BPMN2.0的工單系統架構設計(上)中,筆者帶大家學習了一下BPMN2.0的相關標準,也是筆者實現工單系統的至關重要的基礎部分。
在接下來兩篇文章中,將重點闡述整個工單系統是如何實現上篇提到的一部分BPMN2.0標準,以及整個工單流程是如何推動的。
對於這套工單系統,筆者給出的設計準則是:獨立而通用。
獨立,即意味著不依賴任何業務系統,自成體系。
通用,則表示這套工單系統是普遍適用於公司的業務體系的。
公司目前的工單類型達到了10種,根據上篇中所學到的知識,可以依次將這10種工單轉換成其對應的WDL文件,流程定版後,後續的每個工單流程都按這些配好的WDL進行。
經過整理和分析,這套工單系統包含了以下的實體:
這裡著重介紹一下自頂向下的主幹分支。
1、工單信息中包含了工單號,工單主題,工單描述內容,優先順序,狀態,類型,時效性等,都是數據一個工單必不可少的基本信息。
2、工單任務是一個可被執行的主體,主要包含了任務id,任務名稱,狀態,時效性等。工單系統的本質就是推動這些工單任務有條不紊的執行下去。
3、任務模板的概念需要重點理解一下。好比生產車間的流水線中,每個節點都配備了一個模具,把原材料放入模具中倒模,得到一個指定的產物。如此,任務模板就是流水線上的模具,其產物是上面提到的工單任務。在工單系統中,事先配置好若干個任務模板,使其作用於對應類型的任務。
4、模板欄位及欄位值。一個任務需要呈現哪些欄位,如何呈現,就在此定義。一個任務的欄位擁有哪些欄位,也是需要事先配置好的。至於欄位值,就好比是往模具中填充的原材料,在產出工單任務之前,有一個填充欄位值的過程。
值得一提的是,欄位是需要區分數據類型的,這裡大致分為了三類:numberic-數值型,string-字元串,date-日期。考慮到有些欄位還會有更特殊的含義,有提取出來了一個欄位含義的特徵,如:url-鏈接,map-地圖。
而對於欄位值,也要有所考慮。除了顯式的欄位值,客戶端是可以展示的,還有一些是隱式值,這些不直接顯示,對顯式欄位值有輔助作用。
還有一個細節要說明一下,這套工單系統內,還實現了基於角色的工單授權操作。工單的許可權粒度細化到了每個任務,許可權可以細分成5項:
讀(r):可以查看工單任務;
寫(w):可以修改工單任務信息;
執行(x):可以執行此工單任務;
指派(a):可以指派此工單任務;
無(_):沒有許可權。
值得一提的是,受Linux文件系統許可權的啟發,工單任務許可權的表示方法採用了一個char(4)欄位,比如:rwx_表示可讀可寫可執行,r__a表示可讀可派單,r___表示只讀。
最後總結出一個張業務流程圖,如下:
不難看出,發起工單流程是整個工單系統的入口,其次是每個任務的推進是需要業務系統根據實際需求去填充模板欄位,生成工單任務。
如果WDL配置了消息邊界事件,業務系統就可以接收到來自工單系統的通知。
這篇文章將工單系統的業務需求做了進一步的抽象,提取出了一些必要的實體,進而整理出了整個系統的業務流程脈絡,算是工單系統的概念設計。下篇文章將進入技術實現的環節,閱讀後對於整個系統的實現會有很明確的指導作用。
推薦閱讀:
※政府辦公室工作規範手冊和工作流程
※採購部工作流程及崗位職責
※什麼叫相火歸位——兼論人體的工作流程
※縣、鄉鎮人大、政府換屆工作流程
※工作流|Evernote高速調用grasshopper電池組