activiti流程引擎使用总结

场景

最近在项目中使用到了activiti,用于业务的审核流程管理。
为了避免与业务过多耦合且能够支撑后续的其他业务流程,所以将activiti单独部署为一个服务,使用feign来调用。其中流程配置的web界面使用alfresco提供的流程配置界面:https://alfresco.com.cn/cn/cos/process-services
其本质是生成符合bpmn规范的xml文件,并由activiti读取解析并保存到数据库。数据库使用activiti默认的表,没有做相关修改。
在这里插入图片描述

问题

下面是在使用过程中遇到的几个问题:

1.如何做到对流程做到任意配置而不修改代码

这也是使用流程引擎的初衷,只需要配置相关步骤,而不修改代码就可以达到配置和修改业务流程的目的。由于某一个流程一定是和业务数据相关联的,那么为了满足可扩展的配置,就需要将业务参数注入到流程中,也就是之注入到流程变量中。关于流程变量,有两种类型,一种是全局的流程变量,这种变量数据存在于整个流程实例中,在任何一个任务节点都可以获取和修改这些值;另一个是局部流程变量,只存在于某个任务节点上。目前只用到了全局流程变量。我们在流程启动时就注入流程所需的变量,这样在配置流程时就可以通过变量名来获取到值,从而控制流程动作和走向。

2.如何自动完成一些事情

所谓自动完成一些事情,即不需要人工干预,满足或不满足某个条件时自动完成节点的功能。这种功能即“服务任务”
在这里插入图片描述
通过这个服务任务,配置“监听类”或者“表达式”便可以自动完成某些事情,比如修改流程变量的值等等。

3.如何配置当多个条件满足时才执行任务

多个条件同时满足,即且的关系,在刚开始时,是使用了一个任务节点,对条件进行判断,然后写入流程变量进行流向控制,这样虽然可以完成功能,但是与代码耦合,不可取。后来使用网关的方式来解决这个问题。网关的作用就是条件控制,它是自动完成的,不要要人工干预。常用的网关有互斥网关和并行网关,分别对应异或操作和与操作。
在这里插入图片描述
网关相关参考:https://blog.csdn.net/a67474506/article/details/40428709

4.如何在流程结束后进行业务处理

流程结束对应的结束任务,即有一个小圆圈(开始任务也是),结束任务节点有3个事件可以选择:end、start和take,我们选择take事件,并配置其监听类,即可完成业务逻辑的处理。

猜你喜欢

转载自blog.csdn.net/wxgxgp/article/details/97969308