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