隨著信息技術的快速發展,工作流對於信息系統的作用變得越來越重要,特別是OA系統、ERP系統等。今天我給大家分享一款的基於ASP.NET CORE+ Layui的工作流系統openAuth.Core。OpenAu.Core是目前國內首款基於.NET Core開源的工作流系統。在講解OpenAuth.Core之前我們先了解一下什麼是工作流。
工作流與工作流系統
工作流(Workflow)就是「業務過程的部分或整體在計算機應用環境下的自動化」,它主要解決的是「使在多個參與者之間按照某種預定義的規則傳遞文檔、信息或任務的過程自動進行,從而實現某個預期的業務目標,或者促使此目標的實現」。
工作流系統(Workflow System)是可以將工作流程以軟體的形式呈現出來,將各個工作流程可視化、可操作化,將工作流程自動運行起來。
源碼介紹
openAuth.Core官方介紹說採用經典DDD架構(用沃恩.弗農大神的話,其實這是DDD-Lite)思想進行開發,簡潔而不簡單,實用至上,並且所寫每一行代碼都經過深思熟慮,符合SOLID規則!
下載源碼後,感覺項目並不是那麼DDD(領域驅動開發),這個與原本的DDD思想還是有很多的差距。可能是因為這個項目是開源版本,所以有些功能被閹割掉了。
縱觀整個源碼,還是有一些值得借鑑的地方,我看源碼都有一個很重要的原則,就是取其精華,去其糟粕。
運行環境
IDE:VisualStudio 2019
資料庫:SqlServer2012+,Mysql5.6+
.net core框架升級至.net core sdk 3.1.100
layui升級到2.5.6
項目源碼結構:
OpenAuth.Repository 系統倉儲層,包含了領域對象和用於資料庫操作的類OpenAuth.App 應用層,為界面提供接口OpenAuth.IdentityServer 集成IdentityServer4,實現基於OAuth2的登錄體系OpenAuth.Mvc Web站點Infrastructure 通用工具集合OpenAuth.WebApi SSO服務及為第三方提供接口服務
源碼的2個亮點
1.實現了一套「工作單元」提交的機制。
領域驅動開發思想中有一個非常重要的概念,叫做工作單元(UnitOfWork),弄清楚這套機制,也是理解領域驅動思想重要的一環。其實工作單元提交的本質就是多個資料庫操作(如新增、修改、刪除)在一個上下文會話裡面一起提交。
/// <summary>/// 添加或更新入庫通知單/// </summary> /// <param name="req"></param> public void Add(AddOrUpdateWmsInboundOrderTblReq req) { var obj = req.MapTo<WmsInboundOrderTbl>(); //todo:補充或調整自己需要的欄位 obj.CreateTime = DateTime.Now; var user = _auth.GetCurrentUser().User; obj.CreateUserId = user.Id; obj.CreateUserName = user.Name; UnitWork.Add(obj); if (req.WmsInboundOrderDtblReqs != null && req.WmsInboundOrderDtblReqs.Any()) { foreach (var detail in req.WmsInboundOrderDtblReqs) { detail.OrderId = obj.Id; _wmsInboundOrderDtblApp.AddNoSave(detail); } } UnitWork.Save(); }
2.EntityFramework Core的深入應用
下面這段代碼非常有代表性,在進行實體更新的時候,判斷一下實體的狀態是否發生過變化,如果沒有變化,則不做修改,大大的提高了系統的性能。如果你想深入學習EF Core方面的技術,可以研究這個代碼。
/// <summary>/// 實體/// </summary> /// <typeparam name="T"></typeparam> /// <param name="entity"></param> public void Update<T>(T entity) where T:class { var entry = this._context.Entry(entity); entry.State = EntityState.Modified; //如果數據沒有發生變化 if (!this._context.ChangeTracker.HasChanges()) { entry.State = EntityState.Unchanged; } }
項目運行
使用Visual Studio 2019打開解決方案文件OpenAuth.Core.sln。然後編譯項目,項目在我本地可以一次性編譯通過。創建OpenAuthDB資料庫。項目包含SqlServer腳本與MySql腳本。選擇OpenAuth.Mvc Web項目,直接按F5鍵運行,就可以打開一個命令窗口,然後在瀏覽器中輸入http://localhost:1802就可以看到管理後臺的登錄頁面。
項目界面
流程管理
流程中心——我的流程
流程中心——流程進度
表單設計
用戶管理
部門管理
模塊管理
定時任務
結語
OpenAuth.Core是基於ASP.NET Core+Layui 的快速後臺開發框架+工作流引擎系統,是目前國內首款基於.NET Core開源的工作流系統,使用了很多良好的設計模式和開發理念,後臺界面精美實用,非常適合需要整合工作流的信息系統開發。
不過該框架有一個比較遺憾的地方是,分了開源版本和企業版本,開源版本的功能估計沒有企業版本的功能那麼完善。
上面是我對OpenAuth.Core項目做一個簡單的介紹,想要了解更多,可以下載源碼學習。如果你對項目源碼感興趣,請關注我,轉發後私信回復「openauth」,源碼發你。