版權聲明:
本文爲博主原創文章,未經博主容許不得轉載。關注公衆號 技術匯(ID: jishuhui_2015) 可聯繫到做者。
在上篇基於BPMN2.0的工單系統架構設計(上)中,筆者帶你們學習了一下BPMN2.0的相關標準,也是筆者實現工單系統的相當重要的基礎部分。segmentfault
在接下來兩篇文章中,將重點闡述整個工單系統是如何實現上篇提到的一部分BPMN2.0標準,以及整個工單流程是如何推進的。架構
對於這套工單系統,筆者給出的設計準則是:獨立而通用。學習
獨立,即意味着不依賴任何業務系統,自成體系。ui
通用,則表示這套工單系統是廣泛適用於公司的業務體系的。url
公司目前的工單類型達到了10種,根據上篇中所學到的知識,能夠依次將這10種工單轉換成其對應的WDL文件,流程定版後,後續的每一個工單流程都按這些配好的WDL進行。spa
通過整理和分析,這套工單系統包含了如下的實體:架構設計
這裏着重介紹一下自頂向下的主幹分支。設計
一、工單信息中包含了工單號,工單主題,工單描述內容,優先級,狀態,類型,時效性等,都是數據一個工單必不可少的基本信息。blog
二、工單任務是一個可被執行的主體,主要包含了任務id,任務名稱,狀態,時效性等。工單系統的本質就是推進這些工單任務有條不紊的執行下去。事件
三、任務模板的概念須要重點理解一下。比如生產車間的流水線中,每一個節點都配備了一個模具,把原材料放入模具中倒模,獲得一個指定的產物。如此,任務模板就是流水線上的模具,其產物是上面提到的工單任務。在工單系統中,事先配置好若干個任務模板,使其做用於對應類型的任務。
四、模板字段及字段值。一個任務須要呈現哪些字段,如何呈現,就在此定義。一個任務的字段擁有哪些字段,也是須要事先配置好的。至於字段值,就比如是往模具中填充的原材料,在產出工單任務以前,有一個填充字段值的過程。
值得一提的是,字段是須要區分數據類型的,這裏大體分爲了三類:numberic-數值型,string-字符串,date-日期。考慮到有些字段還會有更特殊的含義,有提取出來了一個字段含義的特徵,如:url-連接,map-地圖。
而對於字段值,也要有所考慮。除了顯式的字段值,客戶端是能夠展現的,還有一些是隱式值,這些不直接顯示,對顯式字段值有輔助做用。
還有一個細節要說明一下,這套工單系統內,還實現了基於角色的工單受權操做。工單的權限粒度細化到了每一個任務,權限能夠細分紅5項:
讀(r):能夠查看工單任務;
寫(w):能夠修改工單任務信息;
執行(x):能夠執行此工單任務;
指派(a):能夠指派此工單任務;
無(_):沒有權限。
值得一提的是,受Linux文件系統權限的啓發,工單任務權限的表示方法採用了一個char(4)字段,好比:rwx_表示可讀可寫可執行,r__a表示可讀可派單,r___表示只讀。
最後總結出一個張業務流程圖,以下:
不難看出,發起工單流程是整個工單系統的入口,其次是每一個任務的推動是須要業務系統根據實際需求去填充模板字段,生成工單任務。
若是WDL配置了消息邊界事件,業務系統就能夠接收到來自工單系統的通知。
這篇文章將工單系統的業務需求作了進一步的抽象,提取出了一些必要的實體,進而整理出了整個系統的業務流程脈絡,算是工單系統的概念設計。下篇文章將進入技術實現的環節,閱讀後對於整個系統的實現會有很明確的指導做用。