第五章:activiti流程分流判断,判断走不同的任务节点

第五章:activiti流程分流判断,判断走不同的任务节点第五章:activiti流程分流判断,判断走不同的任务节点

大家好,又见面了,我是你们的朋友全栈君。

这里我们承接专栏的上一篇博文,

请假流程中我们会有个判断,因为一般的请假班长有权直接审批通过,不用班主任批准,那这里就需要加个判断了;

这里我们辅助一个请假流程,如下:

第五章:activiti流程分流判断,判断走不同的任务节点

流程图如下:

第五章:activiti流程分流判断,判断走不同的任务节点

那么怎么判断走那天线的,也就是要不要走leave003这个节点呢,这里我们需要写内置表达式,类似el表达式:

第五章:activiti流程分流判断,判断走不同的任务节点

另外一条线:

第五章:activiti流程分流判断,判断走不同的任务节点

下面我们新建一个类,如下,需要修改部署流程定义方法里面的流程图文件名:

第五章:activiti流程分流判断,判断走不同的任务节点

对了,还有要修改启动流程中的key,之前的测试案例流程图的key是StudentLeaveProcess00,现在改成StudentLeaveProcess02.如下:

第五章:activiti流程分流判断,判断走不同的任务节点

代码如下:

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:

第五章:activiti流程分流判断,判断走不同的任务节点

是有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.net/106142.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux移除包的命令,linux的yum卸载包命令说明

    linux移除包的命令,linux的yum卸载包命令说明Linux中的yum命令可以通过相关命令对包进行安装、卸载或者更新等,下面由学习啦小编为大家整理了Linux的yum卸载包命令说明的相关知识,希望对大家有帮助!linux的yum卸载包命令说明1>使用yumremove卸载包.如下所示:使用’yumremove包名’命令卸载包.Shell代码#yumremovepostgresql.x86_64ResolvingDepen…

    2022年4月28日
  • access数据库入门教程_数据库access基础教学

    access数据库入门教程_数据库access基础教学access数据库入门<<Access2010中文版入门与实例教程.张强等>>

    2022年8月29日
  • 毕业六年

    今年工作变化。这一年可以说命途多舛,下半年短短几个月,换了3条业务4个老板,有被动调整,也有主动转岗,面临比较重要的选择,还是相当煎熬的。这个过程有些坑,空了单独分享。运气不好的是频繁拥抱变化,有些努力白费了,意外之中又有意外,不过运气好的是年终没吃太多亏,权当是走个弯路,浪费了一年时间吧。惰性。技术上来说,转后端一年多,工作够用了,不过这两年从客户端折腾到前端又到后端,把技术热情磨没了,可能也是各方面原因,今年第一次感觉到了惰性,有点佛,感觉够用就行,不再试图知其所以然…

    2022年3月11日
  • 非禁用validateRequest=false使用Page_Error()错误处理

    非禁用validateRequest=false使用Page_Error()错误处理ASP.Net1.1后引入了对提交表单自动检查是否存在XSS(跨站脚本攻击)的能力。当用户试图用之类的输入影响页面返回结果的时候,ASP.Net的引擎会引发一个HttpRequestValidationExceptioin。默认情况下会返回如下文字的页面:以下是引用片段:ServerErrorin”/YourApplicationPath”Applicat

    2022年6月7日
  • SpringSecurity配置跨域访问[通俗易懂]

    SpringSecurity配置跨域访问[通俗易懂]说明java后端web服务有很多种方法可以实现跨域访问,配置很简单,今天这里我们用SpringSecurity的方式配置跨域访问,配置方法如下:packagecom.wisea.config;importorg.springframework.context.annotation.Bean;importorg.springframework.security.config.annotation.web.builders.HttpSecurity;importorg.springframe

    2022年9月1日
  • 常见数据结构与算法整理总结(下)_c语言数据结构查找算法

    常见数据结构与算法整理总结(下)_c语言数据结构查找算法查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。定义:根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。分类

    2022年8月16日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号