当前位置:网站首页>第五章:activiti流程分流判断,判断走不同的任务节点
第五章:activiti流程分流判断,判断走不同的任务节点
2022-08-05 10:05:00 【全栈程序员站长】
大家好,又见面了,我是你们的朋友全栈君。
这里我们承接专栏的上一篇博文,
请假流程中我们会有个判断,因为一般的请假班长有权直接审批通过,不用班主任批准,那这里就需要加个判断了;
这里我们辅助一个请假流程,如下:
流程图如下:
那么怎么判断走那天线的,也就是要不要走leave003这个节点呢,这里我们需要写内置表达式,类似el表达式:
另外一条线:
下面我们新建一个类,如下,需要修改部署流程定义方法里面的流程图文件名:
对了,还有要修改启动流程中的key,之前的测试案例流程图的key是StudentLeaveProcess00,现在改成StudentLeaveProcess02.如下:
代码如下:
package com.xiaoyexinxixn.ActivityLesson.flow;
import static org.junit.Assert.*;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.activiti.engine.ProcessEngine;
import org.activiti.engine.ProcessEngines;
import org.activiti.engine.RuntimeService;
import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.junit.Test;
import com.xiaoyexinxixn.ActivityLesson.model.Student;
public class StudentLeaveProcess2 {
//获取默认流程引擎实例,会自动读取activiti.cfg.xml ,所以我们要严格定义配置文件的名称
private ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();
/**
* 部署流程定义
*/
@Test
public void deploy() {
//获取部署相关service,这些都是activiti封装好的api接口,还有很多,下面也会用到很多
Deployment deployment=processEngine.getRepositoryService()
//创建部署
.createDeployment()
//加载流程图资源文件
.addClasspathResource("diagrams/StudentLeave2.bpmn")
//加载流程图片
.addClasspathResource("diagrams/StudentLeave2.png")
//流程名称
.name("leave02")
//部署流程
.deploy();
System.out.println("流程部署的ID: "+deployment.getId());
System.out.println("流程部署的Name: "+deployment.getName());
}
/*
* 启动流程实例
*/
@Test
public void start(){
//运行启动流程的servicee
ProcessInstance pi=processEngine.getRuntimeService()
//定义流程表的KEY字段值,key值是我们前面定义好的key,可在act_re_procdef表中的key_字段中找到,
.startProcessInstanceByKey("studentLeaveProcess02");
System.out.println(pi.getId());
System.out.println(pi.getProcessDefinitionId());
} }
运行deploy()方法,部署流程,成功后看看流程部署表:act_re_deployment:
是有leave02的;
然后再启动流程,
然后完成任务,去测试我们的判断。
到leave02节点;
然后我们利用上一章学习的知识,在节点leave02结束的时候设置msg变量的值,从而判断走哪个节点。
代码:
/**
* 完成任务时设置流程变量
*/
@Test
public void completeTaskVariablesTest(){
Map<String, Object> variables=new HashMap<String,Object>();
variables.put("msg", "common");
processEngine.getTaskService().complete("72502",variables);
}
运行后,发现任务表的数据没有了,说明没有走leave03节点,说明是没有问题的。
同理走设置msg为“important”机会走leave03节点。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/106142.html原文链接:https://javaforall.cn
边栏推荐
- First Decentralized Heist?Loss of nearly 200 million US dollars: analysis of the attack on the cross-chain bridge Nomad
- dotnet OpenXML 解析 PPT 图表 面积图入门
- [Unity] [UGUI] [Display text on the screen]
- 2022华数杯数学建模思路分析交流
- Keil升级到AC6后,到底有哪些变化?
- 开源一夏|OpenHarmony如何查询设备类型(eTS)
- MySQL事务
- egg框架使用(一)
- Tanabata romantic date without overtime, RPA robot helps you get the job done
- High-quality DeFi application building guide to help developers enjoy DeFi Summer
猜你喜欢
Pytorch Deep Learning Quick Start Tutorial -- Mound Tutorial Notes (3)
How can project cost control help project success?
微服务 技术栈
开源一夏|OpenHarmony如何查询设备类型(eTS)
leetcode: 529. 扫雷游戏
气象数据数据处理实例——matlab字符串切割匹配与R语言日期匹配(数据拼接)
皕杰报表的下拉框联动
mysql进阶(二十七)数据库索引原理
MySQL事务
The founder of the DFINITY Foundation talks about the ups and downs of the bear market, and where should DeFi projects go?
随机推荐
MySQL data view
无题三
无题四
【温度预警程序de开发】事件驱动模型实例运用
leetcode: 529. 扫雷游戏
【Unity】【UGUI】【在屏幕上显示文本】
创建一个 Dapp,为什么要选择波卡?
[Strong Net Cup 2022] WP-UM
【MindSpore Easy-Diantong Robot-01】You may have seen many knowledge quiz robots, but this one is a bit different
手写柯里化 - toString 理解
Our Web3 Entrepreneurship Project, Yellow
长达四年的减肥记录
Redis源码解析:Redis Cluster
dotnet OpenXML 解析 PPT 图表 面积图入门
ffmpeg drawtext add text watermark
Keil升级到AC6后,到底有哪些变化?
无题十
Pycharm 常用外部工具
仿SBUS与串口数据固定转换
What is SPL?