基於ASP.NET Core 國內首款開源的工作流引擎系統

2021-01-11 愛分享程式設計師

隨著信息技術的快速發展,工作流對於信息系統的作用變得越來越重要,特別是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」,源碼發你。

相關焦點

  • 基於ASP.NET Core 國內首款開源的工作流引擎系統
    隨著信息技術的快速發展,工作流對於信息系統的作用變得越來越重要,特別是OA系統、ERP系統等。今天我給大家分享一款的基於ASP.NET Core+ Layui的工作流系統openAuth.Core。OpenAu.Core是目前國內首款基於.NET Core開源的工作流系統。
  • ASP.NET CORE 版本的DTcms Core即將發布
    一直以來,作為DTcms的鐵桿粉絲,從DTcms 3.0到4.0,再從4.0到5.0,一直緊緊隨,如今DTcms 的.net core版本即將要發布了(我個人預計2020年10月份左右),真是非常期待!
  • 專訪開源WE FixFlow團隊:一群80後打造國內最好的工作流引擎
    【開源採訪】本期我們的採訪對象是國內開源工作流引擎FixFlow 的開發團隊(以下簡稱FFDT)。FixFlow 團隊致力於開發功能強大、應用範圍廣泛的國產工作流引擎,吸納國外工作流引擎的精髓,力爭做國內最好的工作流引擎。CSDN:首先來個團隊介紹吧!
  • asp .net core 中間件
    前言對中間件的一個概況,在《重新整理.net core 計1400篇》系列後面會深入。正文什麼是中間件呢?其實中間件這個概念來源於分布式,當然這是一個狹隘的概念了,現在中間件概念就非常廣泛了。官網給出了這樣一張圖,這張圖認為從請求到響應過程中間都是中間件,包括我們認為的路由。
  • Asp.net Core啟動流程講解(一)
    asp.net core默認項目包括項目根目錄級的Startup.cs、Program.csCore 3.0以及以後版本的替換依賴注入就得在Program內配置.net core 3.0之前的Program.cs.net core 3.0之後的Program.cs.net core 3.0之前的Program.cs
  • Asp.Net Core多榜逆襲,這是.NET最好的時代
    TechEmpowerTechEmpower第19輪程式語言框架性能排行榜2020年5月28日正式發布,詳見官方博客:https://www.techempower.com/blog/2020/05/28/framework-benchmarks-round-19/,asp.net
  • asp.net core 5.0 中的 JsonConsole
    asp.net core 5.0 中的 JsonConsoleIntroasp.net core 5.0 中日誌新增了 JsonConsole,還是輸出日誌到 Console,但是會應用 Json 格式的一個 Formatter 把日誌格式化成 json 再輸出到控制臺
  • .net core面試題
    第1題,什麼是ASP net core?首先ASP net core不是 asp net的升級版本。它遵循了dot net的標準架構, 可以運行於多個作業系統上。它更快,更容易配置,更加模塊化,可擴展性更強。 第2題,asp dot core有哪些好的功能?第一是依賴注入。
  • 開源軟體分享-基於.net core 3.1的快速開發框架
    曾幾何時.NET們很羨慕JAVA的生態,java開源生態裡面你用得著的幾乎都有開源的實現。比如大數據、微服務、以及各種各樣的快速開發框架,特別是spring boot出來以後,簡化了SSM那套繁瑣的配置文件,搭建框架也越來越方便了。不過現在.net core誕生以後,.net的生態也越來越好了,各種開源社區在為豐富.net生態世界努力。
  • 什麼是asp.net固定資產管理系統?
    什麼是asp.net固定資產管理系統?若是換一種說法,即基於asp.net語言開發的固定資產管理系統,相信更加容易企業用戶的理解。asp.net語言是目前較為常用的軟體開發語言,而基於asp.net語言研發的固定資產管理系統也佔據著大幅的軟體市場。
  • 一文簡述:asp .net core 中間件
    下圖為asp .net core 中默認的中間件順序,當然可以自己修改,但是這是一種推薦做法。因為這個endpoint 是不建議我們修改的,當然我們可以修改源碼中,畢竟開源了,but not must。官網中同樣給了我們這個endpoint 做了什麼,其實就是官方自己封裝了一些中間件。
  • Asp.net Core啟動流程講解(三)
    asp.net core其實內部依賴的是IStartup接口,至於Startup只是一個非IStartup硬性約束的實現 public interface IStartup { IServiceProvider ConfigureServices(IServiceCollection services); void Configure
  • 基於.NET CORE 3.1的精美後臺管理系統-RuoYi C 版
    若依(RuoYi)是碼雲上一款精美的開源快速開發平臺,作者毫無保留給個人及企業免費使用。RuoYi目前有三個版本:普通版本(RuoYi)、前後端分離版本(RuoYi-Vue)、微服務版本(RuoYi-Cloud)。.
  • 不用虛機不用Docker使用Azure應用服務部署ASP.NET Core程序
    應用服務概述Azure 應用服務是一項基於 HTTP 的服務,用於託管 Web 應用程式、REST API 和移動後端 。發布程序有了新建的.net訪問應用服務上面提到了新建資源的時候需要填寫名稱,這個名稱加上.azurewebsites.net就是服務對應的地址。讓我們訪問一下吧。
  • asp.net core 使用 TestServer 來做集成測試
    asp.net core 使用 TestServer 來做集成測試Intro之前我的項目裡的集成測試是隨機一個埠,每次都真實的啟動一個 WebServer,之前也有看到過微軟文檔上 TestServer 的介紹,當時沒仔細看過以為差不多就沒用,一直是啟動了一個真正的
  • .net core 的一些重要工具
    .net core雖然提供了很強大的類庫和編譯器,但是在開發過程中,仍然需要一些輔助工具來提升開發效率。下面介紹一些常用的.net core開發工具。開發者都有意願把自己的項目遷移到.net core 開發框架上來。
  • ASP.NET Core項目目錄結構介紹
    我們下面通過在Visual Studio 2017中創建一個空的Web應用程式來詳細說明下asp.net core項目目錄結構:1、項目結構說明(1)、依賴項這裡主要分兩部分SDK, 目前這兩部分下面都只有一項。
  • 微軟推出 VS for Mac ASP.NET Core 挑戰
    (微軟打錢)詳情查看原博客:https://devblogs.microsoft.com/visualstudio/join-the-visual-studio-for-mac-asp-net-core-challenge
  • Gfast 工作流引擎 1.0 正式發布
    Gfast管理系統採用go語言開發,基於GF(Go Frame)的後臺管理系統,現增加工作流引擎模塊開源發布,實現工作流引擎與業務解綁
  • 基於.NET CORE微服務框架surging示例 (開源)
    service到現在基於restful 協議的web api,wcf,再到現在rpc微服務。現在微軟又出了.NET CORE,為了緊跟微軟的步伐,研究了將近1年,從中看了不少開原始碼,如NetEscapades.Configuration,eShopOnContainers,rabbit.RPC等等,從中學到了不少知識,後面利用所學加上自己的想法,開發出分布式微服務框架surging。開源地址:點擊打開連結。