|
SpringBoot+Activiti 创建自定义业务审批框架
流程开发主要分成两部分:
- 通用的流程操作(基于Activiti 本身)。
- 独立的业务开发。
而在业务开发中,会伴随着很多与Activiti的代码耦合,会出现大量的同等功能的业务代码,但是由于操作的业务对象不同,又需要写很多冗余的CRUD操作。这样增加了大量低质量的耦合代码。
为了减少业务代码中的通用性操作代码,可以编写一套自定义的业务代码审批框架。
项目代码:
GitHub https://github.com/oldguys/ActivitiDemo
结构类图:
框架设计图.jpg
设计思路:- 基于设计模式规则: 依赖倒置原则 , 里氏代换原则,将通用的接口方法进行抽象,完成高层接口:WorkEntityMapper,ProcessInstanceService 设计。
- 使用类似于 抽象工厂模式 与 桥梁模式,对系统进行 解耦 与 多态。
CommonWorkEntityService:进行通用的服务调度,像桥梁一样来适配调度多个ProcessInstanceService。
ProcessInstanceService由基于不同业务对象进行实现,通过不同实例,再关联到DAO层的不同业务对象上。 - CommonWorkEntityService 继承于 AbstractWorkEntityService,通过调用 init 方法来通用注入业务对象,而实现类则成为统一调度入口。
调度方式:TaskController 调用 CommonWorkEntityService的getWorkEntityInfo(),最终可以分别获取到Entity1ProcessEntity实体或Entity2ProcessEntity实体

调用图.jpg
关联与对象注入:由于基于SpringBoot,自然要利用Spring的容器进行管理。
Step1: 由于服务对象实现于接口 ProcessInstanceService,可以去Spring容器中,获取所有实现于该接口的对象。
Step2: 利用泛型来获取:
Entity1ProcessInstanceService 继承于 AbstractProcessInstanceService<T> 实现于 ProcessInstanceService<T>
获取实现类上的泛型,就可以知道业务实体为 Entity1Process,利用Map将对象与业务类别进行关联标识。同理可使用于 DAO层。
摘自:https://www.jianshu.com/p/99dd7731d6a3
SpringBoot+Activiti 创建自定义业务审批框架
|
|