前言:
又是一年一度的聖誕節,可這關我什么事呢 :( ,好不容易周末了,還是說說NBPM吧,前不久我發布了一篇關於工作流的文章:《程序猿閉門造車》之NBPM工作流引擎 - 開篇,很多愛好工作流的小伙伴對該組件表示感興趣,所以我打算寫一個系列文章來介紹該組件的一些情況,給關心該組件的小伙伴們一些參考和幫助。
先列個目錄吧(由於我工作比較忙,只能周末抽空來分享相關資料,進度上還希望大家理解):
01.《程序猿閉門造車》之NBPM工作流引擎 - 開篇
02.《程序猿閉門造車》之NBPM工作流引擎 - 項目整體架構
03.《程序猿閉門造車》之NBPM工作流引擎 - 引擎結構分析(整體思路)
04.《程序猿閉門造車》之NBPM工作流引擎 - 引擎結構分析(動態表單實現)
05.《程序猿閉門造車》之NBPM工作流引擎 - 引擎結構分析(流程設計器實現)
06.《程序猿閉門造車》之NBPM工作流引擎 - 引擎結構分析(流程執行流程實現)
07.《程序猿閉門造車》之NBPM工作流引擎 - 系統集成實踐
08.《程序猿閉門造車》之NBPM工作流引擎 - 系統組件擴展實踐
09.《程序猿閉門造車》之NBPM工作流引擎 - 簡易OA審批系統案例開發
10.《程序猿閉門造車》之NBPM工作流引擎 - 項目發展規划
------------------------------------------我是分割線------------------------------------------------
《程序猿閉門造車》之NBPM工作流引擎 - 項目整體架構
廢話不說,先奉上架構設計圖
說明:
1.基礎環境層
這個沒什么太多可說,很多系統架構圖都是這么設計的,我也這樣子畫吧。不過有三點:
a. 目前使用.NET4.0開發,不過可以換成任意版本,只是部分工具依賴問題需要解決(如Newtonsoft.Json等);
b. 該項目目前使用.NET(C#)開發,以后等項目成熟了,時間充足了,也 許 可 能 大 概 會實現其他語言的版本(如java,php等),不過那是后話,看后面發展的怎么樣,說不定中途就沒戲了也有可能;
c. 目前使用.NET開發,但是我在組件依賴上,刻意留意了跨平台支持,理論上允許在Linux等平台部署(by mono),不過需要后續的測試和驗證。
2.基礎設施層
該層作為程序的最底層,提供了如下幾類組件:
- 流程中的數據庫實體(Entity)
- 流程中的視圖模型(ViewModel)
- 流程中可能會用到的配置文件值的讀取(Config)
- 外部數據對象接口
- 外部數據提供程序接口
- 流程數據訪問接口
- 日志記錄接口
- 規則計算接口
- 流程異常
3.數據持久層
該層的目的就是為流程引擎提供數據庫底層訪問支持,該層實現了“基礎實施層”中的“流程數據訪問接口”,默認我實現了EF6和ADO.NET版本兩個數據庫訪問層(需要配置一下配置文件,如數據庫類型,數據庫連接字符串等);
當然,該層完全可以由第三方實現提供,因為該系統采用了IOC(控制反轉)的編程方式,只要實現了“基礎實施層”中的“流程數據訪問接口”的類,都可以作為組件使用,具體實現方式后面的文章“08.《程序猿閉門造車》之NBPM工作流引擎 - 系統組件擴展實踐”會介紹原理以及如何實現;
該層需要注意的是:由於作為IOC組件存在,所以可以使用任意類型的數據庫。
4.核心業務層
該層為NBPM最重要的靈魂組件,實現了表單管理,流程管理,規則計算,流程執行等重要操作,具體原理請參考后續文章。
該層需要以下IOC組件:流程數據庫訪問組件、日志記錄組件、規則計算組件。以上三類組件我都默認提供了,不過完全可以第三方自行實現,只需要依賴“基礎設施層”並實現相關接口即可。
5.資源層
該層主要包含前端資源和SDK及常用工具:
前端資源有圖片,樣式表,js腳本等,表單設計器,流程設計器,流程表單自動生成,都大量使用了js;
SDK封裝了“核心業務層”中的重要服務類,主要含:管理類服務(Manager)、操作類服務(Client);管理類服務,主要實現對表單流程等維護工作;操作類服務主要實現流程實例的發起、驅動、計算待辦等工作;
工具主要實現“基礎實施層”中的“日志記錄接口”和“規則計算接口”,常用工具組件默認實現在NBPM.Util程序集中,其中日志采用了log4net,規則計算采用了Lua。
6.應用層
該層為最終應用程序,通過對資源層的引用,實現對流程的維護,使用等;
該層需要實現“基礎實施層”中的“外部數據接口”和“外部數據提供程序接口”,用於將第三方系統數據與NBPM集成,比如用戶組織、參數、字典等數據;
該層可以是Webform項目,也可以Asp.net MVC項目。
以上就是NBPM架構設計的大體思路,如果各位小伙伴有好的建議,望不吝指點。
------------------------------------------我也是分割線----------------------------------------------
附: NBPM項目解決方案圖
這篇就到這里吧,下一篇將介紹流程引擎結構