工作流Activiti集成构建自有平台方案


最近以为工作安排,让我研究工作流。说实话这个一直停留在用的阶段,但是能工作流Activiti网上资料也很多,真要基于这个构建自有工作流也是可以的。下面就说说我的方案与试验。
一、 可行性
经过4天的学习研究,集成试验,以及流程拆解,交互使用体验。做基本的二次开发改造后,是可行的,就是怎么改造、改造程度、使用深度等都决定二次开发的工作量,同时改造是否优秀、简单明确也是需要后续讨论制定最优方案才行。
二、 集成方式
集成方式有2种:
A、 使用Activiti的用户、角色管理方式,这种方式有工作流管理首页
工作流Activiti集成构建自有平台方案_第1张图片
工作流Activiti集成构建自有平台方案_第2张图片

实际就是直接部署Activiti-explore(当然这个也可以源码部署改造)
B、 不使用Activiti的用户、角色管理方式,工作流平台自己开发一个管理首页
工作流Activiti集成构建自有平台方案_第3张图片

实际就是自己集成activiti-modeler、activiti-designer,然后自行封装流程部署、启动,自己设计一个流程管理界面实现(内容可以自定义,更丰富)。
三、 关于Activiti版本
1、activiti版本与在线设计器
目前使用的是Activiti5.22,也是有Process Virtual Machine流程虚拟机的最后一个版本。在6.0.0已经移除替换为轻量级的模块,且6.0.0对全代码进行了重构,部分api实现可能不一样。6.x.x版本应该是依然可以使用activiti-modeler、activiti-designer组合编辑器的,只是封装Api的实现应该是不能使用pvm模块相关类了。7.x.x版本比较新,资料偏少,从目前我了解到的看,7.x.x已经放弃使用这个组合编辑器了,改用bpmn-js设计器了,但是这个设计器目前对activiti的元素支持的还比较少。
2、activiti版本表结构
activiti5是25张表,activiti6后就是28张表了。如果选定了基础版本,后续升级可能有麻烦。
四、 工作流平台交互时序图
工作流Activiti集成构建自有平台方案_第4张图片
以上是这几天学习研究activiti,结合我自己对我们要打造的工作流平台的理解,分析平台与业务系统的交互,设计的时序图。
五、 目前已封装API
目前我采用的是只要activiti-modeler、activiti-designer组合编辑器方式,所以简单封装了以下API:
1、 创建工作流模型
2、 创建工作流用户
3、 流程部署
4、 启动流程(流程启动有3种方式,目前使用id方式)
5、 获取我的待办(未分页)
6、 获取我的已办(未分页)
7、 待办处理(指派下一步处理人也有多种模式,目前是直接指派单人)
目前以上都是单线流程,没有考虑分支的协同、会签。
六、 解耦方案
1、 人员、角色解耦
试验了发起流程时,下一步处理人id不是activiti的用户表里用户。启动流程没有报错,下一步处理人获取我的待办可以获取到。那么人员、角色解耦,直接使用业务系统的人员、角色应该是可行的。
2、 节点处理参数解耦
先看表结构
工作流Activiti集成构建自有平台方案_第5张图片
每一步的参数都是以行存储的,如果依赖activiti,那后期业务系统自己组装对象显示(有性能问题)。或者其实业务系统可以自己记录下来,需要的时候组装显示。所以也是可以解耦的。
七、 总结
1、 使用activiti作为基础,进行二次开发,构建自有工作流平台可行
2、 activiti-modeler、activiti-designer组合编辑器元素非常丰富,但是友好性不太好,需要改造。逐步二开成我们自己的工作流平台需要对元素进行研究使用方法后,精简配置,封装、优化api(当然有可能一个元素的引入,原先的一些api也需要修改的情况)。
3、 activiti默认是使用的H2数据库,可以通过配置改成其他数据库支持。但是如果二开成我们自己的工作流平台,后面需要考虑数据量、性能问题。
目前这几天get这些,后面还有流程的完结归档、显示具体执行到哪一步高亮等等,还需要继续研究。如果是确定使用这个引擎了,相关问题还是需要讨论,制定方案与计划。
下次分享具体集成与已经实现的这几个接口。

你可能感兴趣的:(架构)