六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 693|回复: 0

SpringBoot+Activiti 创建自定义业务审批框架[转]

[复制链接]

升级  51.67%

29

主题

29

主题

29

主题

举人

Rank: 3Rank: 3

积分
355
 楼主| 发表于 2020-4-24 12:58:47 | 显示全部楼层 |阅读模式
SpringBoot+Activiti 创建自定义业务审批框架
流程开发主要分成两部分:
  • 通用的流程操作(基于Activiti 本身)。
  • 独立的业务开发。
    而在业务开发中,会伴随着很多与Activiti的代码耦合,会出现大量的同等功能的业务代码,但是由于操作的业务对象不同,又需要写很多冗余的CRUD操作。这样增加了大量低质量的耦合代码。
    为了减少业务代码中的通用性操作代码,可以编写一套自定义的业务代码审批框架。
    项目代码:
    GitHub  https://github.com/oldguys/ActivitiDemo


结构类图:

框架设计图.jpg

设计思路:
  • 基于设计模式规则: 依赖倒置原则 , 里氏代换原则,将通用的接口方法进行抽象,完成高层接口:WorkEntityMapperProcessInstanceService 设计。
  • 使用类似于 抽象工厂模式桥梁模式,对系统进行 解耦多态
    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 创建自定义业务审批框架

该会员没有填写今日想说内容.
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表