# 工作流引擎 **Repository Path**: subendong/workflow-engine ## Basic Information - **Project Name**: 工作流引擎 - **Description**: 该流程引擎完全开源免费,致力于打造与平台组织架构无关、高扩展的工作流引擎。 通过自定义用户选择器和条件处理器实现既有业务的组织架构关联和审批过程处理。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 73 - **Created**: 2021-10-09 - **Last Updated**: 2021-10-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 工作流引擎 该流程引擎完全开源免费,致力于打造与平台组织架构无关、高扩展的工作流引擎。 通过自定义用户选择器和条件处理器实现既有业务的组织架构关联和审批过程处理。 前台流程引擎用的是 https://gitee.com/xiaoka2017/easy-flow ,相关应用api需前往查看 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/211946_16de133b_1547296.jpeg "屏幕截图 2021-04-04 210931.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/211934_c6d60858_1547296.jpeg "屏幕截图 2021-04-04 210904.jpg") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0404/212004_ae4b7b5f_1547296.jpeg "屏幕截图 2021-04-04 211020.jpg") # 使用介绍 直接从git下载源码编译。 建议以分布式子系统或者微服务形式部署。 项目自带流程编辑器,以及 简单的流程模拟功能. ## 后台结构介绍 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/152645_fc78f0e0_1547296.png "屏幕截图.png") ### WorkFlowCore 是整个引擎的核心,核心通过抽象,允许 部分功能通过外部扩展 ### WorkFlowCore.Framework 是抽象的其中一个扩展,默认实现了以json文件为持久化的仓储 Repository和两个事件处理demo ### WorkFlowCore.Host 是web服务的启动项目,在这里写接口代码 ### WorkFlowCore.Selector 是抽象的其中一个扩展,默认实现两个 用户选择器和条件处理器, ### WorkFlowCore.Test 单元测试 ## 需要自己实现的内容: ### Repository 框架默认实现的只是一个以json文件为持久化的仓储,实际使用应该实现自己的持久化程序,实现 IBasicRepository 接口,将程序注册到容器服务中。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/154857_7981d612_1547296.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/154911_3ce47eca_1547296.png "屏幕截图.png") ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/154927_a2942b2b_1547296.png "屏幕截图.png") ### 实现自己的用户选择器 不同项目的组织架构不同,这也是为什么要写这个框架,就是要把用户的选择从框架中抽取出来。 实现自定义用户选择器需要实现 IUserSelector 接口: GetSelections 方法返回用户的选项类型,可以返回一些类型(比如角色,职位等组织架构信息)也可以直接返回用户列表 GetUsers 方法是在流程审批过程中,结合流程的各项参数去解析获取实际的用户数据,这里返回的是根据条件匹配到的用户列表。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/155650_8abf820b_1547296.png "屏幕截图.png") 自己实现的选择器需要注册到容器服务中 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/160736_83cb6b12_1547296.png "屏幕截图.png") ### 实现自己的条件处理器 一般的条件处理使用默认的条件处理可以完成,但是需要复杂的条件处理就需要自定义实现。比如需要根据表单中某个值去获取其它信息进行判断,就需要自己解析。 具体解析要看表单数据格式,具体问题具体分析。 要自定义 条件处理器 需要实现 ICondition 接口,该接口只有一个方法 CanAccept,结合流程数据判断某个路径是否能走。 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/160556_96bd8d01_1547296.png "屏幕截图.png") 注册选择器到容器服务中 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/160732_99b5eea7_1547296.png "屏幕截图.png") ### 事件扩展 目前系统提供 流程推送事件和流程结束事件,需要实现更多扩展功能比如通知处理流程,流程结束后推送消息之类的需求,需要自己实现 ISendTaskEventHandler 和 ITaskFinishedEventHandler 实现的事件扩展需要注册到服务中 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0409/160811_9b5965a3_1547296.png "屏幕截图.png")