OpenAuth.Net基于.NET Core/.NET 5的开源权限工作流快速开发框架,汲取了Martin Fowler企业级应用开发思想,集成了IdentityServer、EF Core、Quartz、AutoFac、WebAPI、Swagger等技术。提供强大的自定义权限控制功能,支持完整的字段权限控制,还支持可拖拽的表单设计、可视化流程设计、基于Quartz.Net的定时任务控制等功能,适合中小企业快速开发权限工作流应用,支持多租户和OAuth2登录体系,便于构建分布式应用。
OpenAuth.Net最初由深圳奥派软件技术有限公司开发。早期版本主要专注于实现基本的权限管理功能,为企业应用系统提供统一的身份认证和授权解决方案。
随着时间推移,社区不断参与到项目中,贡献代码和提出改进建议,使其功能逐渐丰富和完善。在后续的发展中,逐渐增加了对多种数据库的支持、更灵活的权限配置方式以及与其他框架的集成能力等。
项目地址是:http://www.openauth.net.cn
一、基本功能
1.权限管理功能
用户管理:允许管理员创建、编辑和删除用户账户,同时可以为用户分配基本信息,如用户名、密码、联系方式等。此外,还能设置用户的启用/禁用状态,方便对用户账户进行管控。
角色管理:可以定义不同的角色,如管理员、普通用户、审计员等。每个角色可以被赋予特定的权限集合,方便进行批量的权限分配。例如,管理员角色可以拥有系统的所有操作权限,而普通用户角色可能只有部分数据的查看权限。
权限控制:提供细粒度的权限控制,可对系统的菜单、按钮、数据访问等进行权限设置。比如,某些敏感数据的删除操作只有特定角色的用户才能执行,确保系统数据的安全性。
部门管理:支持对部门进行管理,包括部门的创建、编辑和删除。可以设置部门之间的层级关系,方便进行组织架构的管理,同时可以将用户分配到不同的部门中。
数据权限管理:除了功能权限,还支持数据权限的管理。例如,不同部门的用户只能查看和操作本部门的数据,或者某些用户只能查看特定范围的数据。
2.工作流管理功能
流程设计:提供可视化的流程设计器,用户可以通过拖拽、连线等方式轻松设计工作流流程,定义流程的节点、分支、条件等。例如,设计一个请假审批流程,包含员工提交申请、部门经理审批、人力资源审核等节点。
流程实例管理:能够创建、启动、暂停、终止工作流实例。可以实时跟踪工作流的执行状态,查看每个节点的处理情况和处理时间。例如,在请假审批流程中,可以查看某个员工的请假申请当前处于哪个审批环节。
任务分配与处理:根据工作流的设计,自动将任务分配给相应的用户或角色。用户可以在系统中查看自己的待办任务,并进行处理,如审批、驳回、转办等操作。
流程监控与统计:提供对工作流的监控和统计功能,如统计每个流程的平均处理时间、各个节点的处理效率等,帮助企业优化工作流程。
3.代码生成功能
实体类生成:根据数据库表结构自动生成对应的实体类代码,减少开发人员手动编写实体类的工作量。
数据访问层代码生成:生成与数据库交互的代码,如增删改查操作的方法,支持多种数据库类型,如 SQL Server、MySQL 等。
业务逻辑层代码生成:根据业务需求和数据库表结构,生成基本的业务逻辑代码,如数据验证、业务规则处理等。
前端页面代码生成:生成前端页面的代码,包括列表页、详情页、表单页等,支持多种前端框架,如 Vue.js、Element UI 等。
二、技术架构
1.整体架构
OpenAuth.Net 采用分层架构设计,主要分为表示层、业务逻辑层、数据访问层和基础设施层,各层之间职责明确,便于开发和维护。
表示层(Presentation Layer):负责与用户进行交互,接收用户的请求并显示处理结果。通常采用 Web API 或 MVC 模式,支持多种前端技术,如 Vue.js、React 等。
业务逻辑层(Business Logic Layer):实现系统的核心业务逻辑,处理业务规则和流程。该层调用数据访问层获取数据,并对数据进行处理和转换,为表示层提供服务。
数据访问层(Data Access Layer):负责与数据库进行交互,执行数据的增删改查操作。使用 ORM(对象关系映射)框架,如 Entity Framework Core,将数据库表映射为实体类,方便开发人员进行数据操作。
基础设施层(Infrastructure Layer):提供系统的基础服务和工具,如日志记录、缓存管理、配置管理等。该层为其他层提供支持,确保系统的稳定运行。
2.技术选型
后端技术:基于.NET Core 或.NET Framework 开发,具有跨平台的特性,支持多种操作系统。使用 Entity Framework Core 作为 ORM 框架,实现数据库的访问和操作。采用依赖注入和面向接口编程的思想,提高代码的可测试性和可维护性。
前端技术:支持多种前端框架,如 Vue.js、Element UI 等,提供良好的用户体验。使用 Axios 进行前后端的数据交互,实现异步请求和响应。
数据库:支持多种数据库类型,如 SQL Server、MySQL、Oracle 等,方便企业根据自身需求选择合适的数据库。
三、不足之处
1.技术栈复杂:OpenAuth.Net 基于.NET 平台,结合了多种技术,如.NET Core、Entity Framework Core、前端框架(Vue.js 等)。对于不熟悉这些技术的开发者来说,学习曲线较陡,需要花费较多时间去掌握相关技术和框架的使用。
2.复杂工作流支持有限:虽然框架提供了基本的工作流功能,但在处理一些复杂的、具有高度定制化需求的工作流场景时,可能显得力不从心。例如,对于涉及大量条件判断、动态分支和复杂任务分配规则的工作流,框架的灵活性和扩展性可能无法满足需求。
3.第三方系统集成困难:在与一些常见的第三方系统(如企业现有的 LDAP 认证系统、其他业务系统等)进行集成时,可能会遇到一些问题。框架可能没有提供足够便捷的集成接口和工具,需要开发者进行大量的自定义开发来实现与第三方系统的对接。
4.高并发处理能力欠佳:在高并发场景下,框架的性能可能会受到一定影响。例如,当大量用户同时进行权限验证、工作流操作时,可能会出现响应时间过长、系统卡顿甚至崩溃的情况,这对于一些对性能要求较高的大型企业应用来说是一个明显的不足。
四、应用场景
1.企业资源规划(ERP)系统
权限管理:在ERP系统里,不同部门的员工对系统功能和数据的访问需求不同。借助OpenAuth.Net,可对用户进行精准的权限分配。比如,财务部门员工有查看和处理财务数据的权限,采购部门员工能进行采购订单的创建与管理,而普通员工可能仅具备查看部分基础数据的权限。
工作流管理:ERP系统涉及众多业务流程,像采购审批、销售订单处理等。利用该框架的工作流功能,能实现这些流程的自动化。以采购审批流程为例,从采购申请的提交,到部门经理、财务人员的审批,再到最终的采购订单生成,整个过程可依据预设规则自动流转,提高工作效率。
2.客户关系管理(CRM)系统
权限管理:CRM系统包含大量客户信息,需要对不同级别和岗位的员工设置不同的访问权限。例如,销售人员可查看和编辑自己负责客户的详细信息,销售经理能查看团队所有客户的数据,而客服人员只能查看与客户服务相关的部分信息。OpenAuth.Net能很好地满足这种细致的权限管理需求。
工作流管理:在CRM系统中,客户线索的分配、商机跟进等流程都可以通过工作流进行管理。当有新的客户线索进入系统时,可根据预设规则自动分配给合适的销售人员,销售人员在跟进过程中,每个阶段的进展和操作都能在工作流中体现,便于团队协作和管理层监控。
3.办公自动化(OA)系统
权限管理:OA系统涵盖了企业日常办公的各个方面,不同用户角色对系统功能的使用权限差异较大。管理员可以使用OpenAuth.Net为不同岗位(如行政人员、人力资源人员、普通员工等)设置不同的权限,确保敏感信息和重要功能的安全访问。
工作流管理:OA系统中的请假申请、报销审批、文件审批等流程是其核心功能。通过OpenAuth.Net的工作流引擎,可以轻松实现这些流程的自动化。员工提交请假申请后,系统会自动按照预设流程发送给上级领导审批,领导审批通过或拒绝后,系统会及时更新申请状态并通知相关人员。
4.项目管理系统
权限管理:项目管理系统涉及多个项目和不同角色的人员,如项目经理、项目成员、客户等。使用OpenAuth.Net可以为每个角色分配特定的权限,例如项目经理可以对项目的所有方面进行管理和设置,项目成员只能查看和操作自己负责的任务,客户可能只能查看项目的进度和相关文档。
工作流管理:项目管理中的任务分配、进度跟踪、里程碑审批等流程都可以通过工作流进行自动化管理。当项目经理分配新任务时,系统会自动通知相关项目成员,成员完成任务后提交审核,审核通过后更新项目进度,整个过程在工作流的控制下有序进行。
5.电子商务系统
权限管理:在电子商务系统中,有不同类型的用户,如管理员、商家、普通用户等。管理员可以使用OpenAuth.Net对系统进行全面管理,包括商品管理、订单管理、用户管理等;商家可以管理自己的店铺信息和商品;普通用户只能进行商品浏览、下单等操作。
工作流管理:电子商务系统中的订单处理流程(如订单确认、发货、收货确认等)可以通过工作流进行自动化管理。当用户下单后,系统会自动触发订单处理流程,依次通知仓库发货、物流跟踪等环节,提高订单处理效率和客户满意度。