0.前言
开发背景
项目开发设计审批工作流,企业微信的审批不错,但是下拉列表不支持后期添加,所以只能自己实现,通过gitee查找相关工作流的开源项目,参考有
- 闲鹿(RuoYi+Activiti6) https://gitee.com/calvinhwang123/RuoYi-Process?_from=gitee_search ;前后端未分离,功能完善。画图使用Activiti Modeler,bilibili有教程
- 蜜獾工作流(基于闲鹿的,前后端分离) https://gitee.com/laya1989/ruo-yi-vue-process-3.4.0?_from=gitee_search
- 基于RuoYi分离版的工作流 https://gitee.com/smell2/ruoyi-vue-activiti?_from=gitee_search ; 功能不完善,需要自己完善,画图使用的是Bpmn.js+Activiti7 [目前开发是基于该版本的]
1.版本依赖
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starter</artifactId>
<version>7.1.0.M4</version>
</dependency>
<dependency>
<groupId>org.activiti.dependencies</groupId>
<artifactId>activiti-dependencies</artifactId>
<version>7.1.0.M4</version>
<type>pom</type>
</dependency>
2.解除Activiti7与SpringSecurity的强耦合
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class})
3.功能介绍
- 流程模型:创建、删除、通过bpmn文件导入、导出、部署模型转成定义、修改模型
- 流程定义:转模型、挂起(比如说财务每个月15-30号处理报销,在此之前不能报销,就不能创建根据定义创建流程实例)、激活(与挂起正好相反)、删除
- 流程实例:创建、撤销申请(有两种,根据业务而定。1.删除流程实例 2.将流程实例挂起 )、修改(如果流程图有调整申请这个节点的话)、查看审批历史、查看进度图(走过的节点高亮显示)
- 我的待办:审批(同意/驳回,如果是驳回是直接流程结束还是走向调整申请根据业务而定 [如果调整申请确认重新申请是回到最初的审批还是拒绝的上一层审批也看业务要求] )、查看审批历史、查看进度图(走过的节点高亮显示)
- 我的已办:这个和审批历史不同,该功能是说该审批人审批过哪些审批事件(一对多个流程实例),审批历史是针对一个流程实例而言
- 委托:这个功能有待商榷,不能委托给一个普通用户,假设这个用户没有我的代办的菜单权限,那么他也无法看到,还需要联系管理员开通菜单权限,如果是委托给和自己相同角色的用户又没有必要,因为这个审批必定是一个变量比如
${region}
,只要是经理都可以看到,而且是或签。 - 或签:只要有一人同意即可
- 会签:有多种情况:全员同意,一人拒绝,审批结束;指定具体审批数量,大于该数量则通过;百分比,自定义多少百分比等等。(项目中未用到)
- 抄送:这个需要在画模型图时调用系统的用户接口,因为抄送的人可能是不同角色、不同用户。百度有网友实现,在任务的下面创建子任务,然后
setAssignee=xx,yy,zz
,必须在bpmnjs额外添加搜索用户列表功能,暂未实现该功能