集成序言:

其它商业版的工作流引擎,我这里就不一一诉说了,用过才知道好坏,要不技术过硬各种资料查查查,要不金钱开道请商务入驻。但是Activiti系列网上的资料确实是最多的,毕竟市场占有率摆在那。

Activiti7相对前面几个版本,优缺点我就不概述了,这些可以自行百度,首先7的表结构和代码整理,就是一个大版本,这些都是隐性的。对照到最大的显性变化,可能就是推出了微流程的实现。但是这些和我们只是单纯工具使用者来说,压根不受影响,最起码80%的api调用方式还是依照之前版本的方式,总之大的变动不明显,小的优化一堆堆。这也是作者想用新技术的原因,就贪了那点性能。

至于集成做成什么产品,无非就是常见的oa,比如最近流行的钉钉用这玩意也能做,核心都是一样的,就是前端的渲染效果问题。

产品思路方向:

按照传统的集成方式无非就是: 通用的后端微服务引擎+通用的业务表单设计器+通用的前端回显表单内容的组件+专属的bpmn流程模型设计器+外部用户权限系统;这几者的关系很容易理解,就是字面意思。

  1. 首先你得实现适合自己公司ui界面的模型设计器,在设计器里需要集成bpmn的规范,如果有条件,还能集成外部用户权限系统到里面,这样就方便画流程的时候更方便的编写各种网关条件和设置默认的节点负责人。
  2. 接着要实现一套通用的业务表单设计器api,能让用户通过前端页面操作,可以快速的构造出一张业务表单,该表单记录着该业务的基础信息,并且需同时记录该业务表的全部属性信息,方便后期回显给前端。
  3. 然后要实现一套通用的前端回显表单内容的组件,前端通过后端返回的业务表数据(业务表基础数据+业务表属性信息),回显表单给用户查看。这一块市面是有很多类似组件,比如FormMaking。
  4. 最后就是核心的流程运转了,这一部分就是外部用户权限系统+通用的后端微服务引擎合作部分了。配置人员画好A流程,配置好A业务表单,然后就将A流程与A业务表单进行绑定,用户通过回显的A表单填写A业务数据,最后调取外部用户权限系统分配下一节点负责人,再点击同意或者拒绝使流程运转到下一步。

写道这里,想必对于集成这玩意已经有想法了把。大的方向就这4点,其中2,3可以不实现前端部分,自己后端写死就行了,唯一的麻烦就是缺少了动态配置的优点,集成者自己可以权衡选择。

制作了一个简易流程引擎演示视频,看完大概就知道需要集成到什么程度才算差不多了

链接:https://pan.baidu.com/s/161gL_EpI2to-e9b-vIsbGg 
提取码:1234 
演示网址地址如下(输入登陆码登录):Project View

activiti7的坑:

1,想集成必须看源码,开发者丧心病狂的在各大Service中强行植入了Security,常规方式是不可能绕过的,除非改源码。但是对于玩jwt+redis那一套的人,其实Security的存在并不重要。再加上微服务的架构盛行,集成之前肯定是已存在用户系统了,所以只需要考虑如何对接外部用户系统就够了,而这也是集成的核心。

2,既然被强行植入了Security,但是我确实不需要他,那么该怎么排除它并集成外部独立用户系统,再加上ACTIVITI内部的用户组系的干扰?你没看错,是完全排除,不是伪排除,网上很多都是伪排除的方式。

3,既然被强行植入了Security,但是我的外部用户权限系统本来就用的Security,那么该怎么集成?自己去写中间层转换把,把自己的Security用户角色体系写一个配置类,启动的时候塞到Activiti7的Security体系中。

4,Activiti7的代码被优化整理过,部分api和service产生了变动,导致以前的调用方式产生了错误。至于正确的调用的方式?比如流程会签,动态分配,动态预览下一节点,自由跳转(往前跳,往后跳),进度坐标添加悬浮说明展示等核心功能。

5,如果你是初学者,哪怕你看视频学会了基本操作,但是涉及到具体业务后,你会发现通过你学的基本操作再去构造各个API是多么费力的一件事,因为对它的理解并不深刻,所以在构造API的时候往往缺少了通用性,这是初学者不可避免的问题。

集成(请认真看图片标红文字,你能想到的功能其实全都有):

 先看一下源码目录结构,其中状态引擎放到最后讲,因为他是一套独立的流程引擎,和activiti没有任何关系。但是对于简单流程却很实用!如果不想集成activiti7的话。

springboot 整合activiti 不能自动创建表 springboot activiti7_java

看红色箭头的注解就能理解了,本人按照上诉的产品思路已经完成了那些模块。至于通用的表单回显和设计器,我也只是实现非常简陋的,目前只有回显。这一块就需要强大的前端功底了,如果没有这个条件,就前端写死把,反正后端数据是规整的。

前端效果

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud_02

springboot 整合activiti 不能自动创建表 springboot activiti7_activiti_03

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_04

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud_05

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_06

springboot 整合activiti 不能自动创建表 springboot activiti7_activiti_07

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud_08

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud_09

springboot 整合activiti 不能自动创建表 springboot activiti7_activiti_10

springboot 整合activiti 不能自动创建表 springboot activiti7_spring boot_11

以上就是activiti7的集成到实现的一系列效果了。是不是很解耦,集成者不需要太懂activiti,只要看得懂我写的api就行了,也就20多个吧,就能实现这一套东西了,并且还安全可靠不踩坑。

下面再来讲一讲状态引擎,状态引擎适合简单流程的实现,逻辑也很清晰,这套实现是我基于上一家公司产品,自己取其精华动手实现的。效果还是很不错的,流程走向也清晰。

springboot 整合activiti 不能自动创建表 springboot activiti7_activiti_12

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_13

springboot 整合activiti 不能自动创建表 springboot activiti7_spring boot_14

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_15

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_16

springboot 整合activiti 不能自动创建表 springboot activiti7_spring boot_17

springboot 整合activiti 不能自动创建表 springboot activiti7_spring cloud alibaba_18

提供的功能包括二方面:

1,黑盒操作,运行起来后,通过给与指定参数调取对应api,即可让画好的流程顺利运行下去。比如新开发一个报销流程,只需要通过源码提供的画图工具画好流程图,并导入流程引擎中,之后就是常规的启动,运行等一些列api的调用,直至流程运行结束,这中间都是不需要改动任何源码的,因为源码中的api都是朝着通用性设计的,真正实现零开发对接业务系统。

2,白盒操作,自己根据情况,适当的在api种增删改查自己的业务逻辑。因为api写的很具有层次感,所以只要阅读后,看名字也知道什么意思,改动起来难度不大。

最后提醒一下,我是个人开发者,拥有多年的工作流开发经验。