本节将结合官方绘图工具和API进行一次整合
- 首先绘制流程图如下
图中${pass==1}和${pass==0}为网关执行条件,当pass==1时候执行t2任务当pass==0时t4路线,设置方法为点击那条连接线,选择Flow condition输入 ${pass==1},那么在后续中只要我们将activiti中改变pass的变量的值就能控制流程的走向
设置message事件,点击图中空白处,选择message definitions 添加一个消息事件,这边添加了一个mes1事件
点击图中t3里面边界消息事件图标
点击message reference 下拉框选择上一步添加的mes1事件,这样这个边界消息事件就和mes1消息做了绑定,当流程走到t3时我们就可以手动发出mes1消失,由于t3订阅了mes1消息那么流程就会完成回退,回到t2节点
-
设置监听器
将监听器所在路径填入t1的
选择Event事件类型为complete,同理你可以设置为create,在任务到达这个节点时触发监听器,这里设置的是任务完成时候触发监听器
-
接下来把流程打包发布
点击顶部Apps按钮,点击create App按钮
设置发布的包名
点击下图按钮将你刚才保存的流程图导入,然后点击左上角的保存即可
点击右上角publish既完成发布,现在后端管理流程维护基本结束
回到首页点击 Task App模块
点击方面的Processes按钮,再点击 start a process就可以看见我们之前发布的atest流程我们可以在这个模块中开启流程,完成流程,接下来这些步骤我们通过调用官方提供的API来实现
调用前端API步骤
首先新建一个maven工程,在pom中引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<version>1.5.19.RELEASE</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.44</version>
</dependency>
<dependency>
<groupId>org.activiti</groupId>
<artifactId>activiti-spring-boot-starters</artifactId>
<version>6.0.1-SNAPSHOT</version>
</dependency>
注入如果你使用的是中央仓库,则无法引入6.0.1这个activiti版本的starter,需要参考前面章节自行下载便也打包
接下来是设置SpringBoot配置文件中的数据源,这个数据源必须和前面不是的activiti-app工程的数据源相同,因为这两个工程是公用一个数据库(不然在后端部署的流程前端怎么看的见)。
接下来编写测试代码
-
第一步我们先刚才我们部署的流程是否成功
我们可以通过debug模式查看Deployment中的数据结构,可以发现里面包含了一些部署信息
-
接下来我们设置流程的发起人并且开始一个这个流程 ,并返回一个流程实例,由于我们这个流程的key设置为atest所以我们把atest传入api,api中还提供了很多种开启流程的方法,这个可以自行去RuntimeService接口中查找
-
接下来我们根据任务发起人去查询该用户下有多少任务,并且去完成任务
我们看到当执行complete方法时之前设置的监听器已经生效并且打印出代码
我们执行最后一段代码发现现在任务已经到达一下个节点t2
-
下面我们继续进行回退
调用API taskService.complete()方法将任务执行到t3任务节点,现在我们要发起回退,现在流程已经到达t3节点
调用api发起一个回退时间mes1
接下来调用查询方法发现现在流程已经回退到t2节点
最后附上代码github地址