大家好,又见面了,我是你们的朋友全栈君。
这里我们承接专栏的上一篇博文,
请假流程中我们会有个判断,因为一般的请假班长有权直接审批通过,不用班主任批准,那这里就需要加个判断了;
这里我们辅助一个请假流程,如下:
流程图如下:
那么怎么判断走那天线的,也就是要不要走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节点。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/106142.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...