本文介绍如何将springboot+activiti进行整合,并配合eureka,zuul和feign实现activiti的微服务化,将流程控制和业务逻辑分离. 并实现了几个比较特殊的功能,比如时间段委托(某人请假或出差,出差时间内,所有待办交给被委托人处理),比如节点的无限级加签功能(流程本身有不确定性,临时增加审核人)
整理了一下整个流程,共分以下四个步骤:
注1:整合不需要太多的操作,只需引入指定pom索引,并简单添加配置就能直接使用;
注2:整合包括了activiti的模型编辑插件activiti-moleder的整合和简单修改;
注3:附件中存在几个可以直接运行的bpmn文件,分别对应了几个功能
注1:流程使用者需要自己编写对应的业务流程,工作流模块只负责流程管理,将业务和流程控制最大限度解耦分离。
注2:核心功能包括模型创建,编辑,定义,导出,用户用户组的整合;
注3:流转功能包括提交,完成,查询流程变量,获取流程自定义表单,获取待办已办事项等;
注1:例如某人需要请假或者出差,请假出差期内,他的所有待办事项将交于被委托人处理。
注2:一旦委托,将只有被委托人可以看到任务,委托人将失去该任务的审核权限(待完善);
注3:只能实现办理人和候选人的委托,候选组内人员的委托未实现;
注4:实现方法是通过全局事件监听器对用户实体创建的时间进行监听,然后修改
注1:功能有些变态,因为个人理解,如果业务部门没有固定的流程,没有必要使用工作流引擎,手写流程他不香吗?
注2:限制比较高,需要用户任务节点使用多实例串行类型;
注3:加签的实现方式有很多,有手动增加节点,并持久化(持久化是为了日志),有多实例任务加签(非串行)等,这里只实现了串行多实例加签;
注1:自定义表单分为内置表单和外置表单,一个保存字段信息,一个保存的是外部制作好的表单的key
注2:本demo只实现了内置表单,即字段信息保存;
注3:这种方法需要前端拿到字段之后,进行手动渲染;
成功!第一步结束!
第二步骤结束
成功!第三步结束!
至此,全部结束,项目最终结构如下,具体实现在demo,demo可直接运行,并包含几个模型文件,可以直接使用