随着信息技术的快速发展,工作流对于信息系统的作用变得越来越重要,特别是OA系统、ERP系统等。今天我给大家分享一款的基于ASP.NET CORE Layui的工作流系统openAuth.Core。OpenAu.Core是目前国内首款基于.NET Core开源的工作流系统。在讲解OpenAuth.Core之前我们先了解一下什么是工作流。

工作流与工作流系统

工作流(Workflow)就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”。

工作流系统(Workflow System)是可以将工作流程以软件的形式呈现出来,将各个工作流程可视化、可操作化,将工作流程自动运行起来。

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(1)

源码介绍

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

项目源码结构:

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(2)

源码的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; } }

项目运行
  1. 使用Visual Studio 2019打开解决方案文件OpenAuth.Core.sln。
  2. 然后编译项目,项目在我本地可以一次性编译通过。
  3. 创建OpenAuthDB数据库。项目包含SqlServer脚本与MySql脚本。
  4. 选择OpenAuth.Mvc Web项目,直接按F5键运行,就可以打开一个命令窗口,然后在浏览器中输入http://localhost:1802就可以看到管理后台的登录页面。

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(3)

项目界面

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(4)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(5)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(6)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(7)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(8)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(9)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(10)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(11)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(12)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(13)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(14)

asp.net服务端开发(基于ASP.NETCore国内首款开源的工作流引擎系统)(15)

结语

OpenAuth.Core是基于ASP.NET Core Layui 的快速后台开发框架 工作流引擎系统,是目前国内首款基于.NET Core开源的工作流系统,使用了很多良好的设计模式和开发理念,后台界面精美实用,非常适合需要整合工作流的信息系统开发。

不过该框架有一个比较遗憾的地方是,分了开源版本和企业版本,开源版本的功能估计没有企业版本的功能那么完善。

上面是我对OpenAuth.Core项目做一个简单的介绍,想要了解更多,可以下载源码学习。如果你对项目源码感兴趣,请关注我,转发后私信回复“openauth”,源码发你。

,