activity 设置流程变量,查询流程变量_按照流程实例查询某个变量值-程序员宅基地

技术标签: activity  流程变量设置  Activiti  查询流程变量  

1  javaBean 需实现Serializable接口

package entity;

import java.io.Serializable;

public class Person  implements Serializable{
/**  
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	* 
	*/ 
	private static final long serialVersionUID = 1L;
private  String  id;
private String  name;
private int  day;
private String res;
public String getId() {
	return id;
}
public void setId(String id) {
	this.id = id;
}
public String getName() {
	return name;
}
public void setName(String name) {
	this.name = name;
}
public int getDay() {
	return day;
}
public void setDay(int day) {
	this.day = day;
}
public String getRes() {
	return res;
}
public void setRes(String res) {
	this.res = res;
}
@Override
public String toString() {
	return "Person [id=" + id + ", name=" + name + ", day=" + day + ", res=" + res + "]";
}

}

2  流程变量设置 

package activity003;

import java.io.InputStream;
import java.io.Serializable;
import java.util.zip.ZipInputStream;

import org.activiti.engine.ProcessEngine;
import org.activiti.engine.RepositoryService;

import org.activiti.engine.TaskService;
import org.activiti.engine.repository.Deployment;
import org.activiti.engine.repository.DeploymentBuilder;
import org.activiti.engine.runtime.ProcessInstance;
import org.activiti.engine.task.Task;
import org.activiti.engine.task.TaskQuery;
import org.junit.Test;

import entity.Person;
import utils.DbUtils;

/**
 * 流程变量  设置流程变量
 * 1  部署新流程  从zip文件部署流程
 * @Description: TODO(用一句话描述该文件做什么)  
* @author guochao 
* @date 2018年6月14日  
*
 */
public class Activtity003 {
	/**
	 * 通过zip文件部署流程 设置流程名 
	 * 执行结果  部署流程Id	1401	流程名称	test003
	 * 操作的表为   流程部署act_re_deployment   流程相关文件 act_re_procdef
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void deployProcess(){
		// 从类 加载目录下加载zip文件
		InputStream stream = this.getClass().getClassLoader().getResourceAsStream("helloworld.zip");
		//  获取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		//  获取RepositoryService实例对象
		RepositoryService repositoryService = processEngine.getRepositoryService();
		//  获取流程部署对象
		DeploymentBuilder deployment = repositoryService.createDeployment();
		//  部署流程设置流程名称为test003
		 Deployment deploy = deployment.addZipInputStream(new ZipInputStream(stream)).name("test003").deploy();
		 //  获取流程  Id
		System.out.println("部署流程Id"+"\t"+deploy.getId()+"\t"+"流程名称"+"\t"+deploy.getName());
		// 执行结果    		部署流程Id	1401	流程名称	test003
	}
	/**
	 *启动流程实例 
	 *根据字段ID_启动流程
	 *表  act_re_procdef  字段ID_
	 *结果流程实例   1501 
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  startProcess(){
		String processDefinitionId  ="helloworld:4:1404";
			//  获取流程引擎
			ProcessEngine processEngine = DbUtils.getProcessEngine();
			ProcessInstance startProcess = processEngine.getRuntimeService().startProcessInstanceById(processDefinitionId);
			System.out.println(startProcess.getId());
	}
	/**
	 * 设置流程实例的变量
	 *  使用基本类型
	 *  参数 涉及 的表  act_ru_variable
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  setParam(){
	//  获取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 获取流程执行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程办理人 
		String name ="张三";
		String processInstanceId ="1501";
		// 根据办理人和流程实例Id查询出当前流程正在执行的任务
		TaskQuery taskQuery = taskService.createTaskQuery();
		
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		taskService.setVariable(singleResult.getId(), "请假人", "王麻子");
		taskService.setVariable(singleResult.getId(), "请假天数", 5);
		taskService.setVariable(singleResult.getId(), "请假原因", "回家探亲");
		
		
	}
	/**
	 * 设置流程实例的变量
	 *  使用基JavaBen  bean实现 implements Serializable 接口
	 *  参数 涉及 的表  act_ru_variable
	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public  void  setParamByJavaBean(){
	//  获取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 获取流程执行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程办理人 
		String name ="张三";
		String processInstanceId ="1501";
		// 根据办理人和流程实例Id查询出当前流程正在执行的任务
		TaskQuery taskQuery = taskService.createTaskQuery();
		
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		Person per = new Person();
		per.setDay(1);
		per.setDay(5);
		per.setName("找钱");
		per.setRes("娶媳妇");
		
		taskService.setVariable(singleResult.getId(), "人员信息", per);
	}
	/**
	 * 获取流程变量
	 *结果 王麻子
	 		5
	 	回家探亲

	* @Description: TODO(用一句话描述该文件做什么)  
	* @author guochao 
	* @date 2018年6月14日  
	*
	 */
	@Test
	public void  getParam(){
		//  获取流程引擎
		ProcessEngine processEngine = DbUtils.getProcessEngine();
		// 获取流程执行Service
		TaskService taskService = processEngine.getTaskService();
		// 指定流程办理人 
		String name ="张三";
		String processInstanceId ="1501";
		// 根据办理人和流程实例Id查询出当前流程正在执行的任务
		TaskQuery taskQuery = taskService.createTaskQuery();
		// 根据办理人和流程实例Id查询出当前流程正在执行的任务
		Task singleResult = taskQuery.processInstanceId(processInstanceId).taskAssignee(name).singleResult();
		String personName = (String)taskService.getVariable(singleResult.getId(), "请假人");
		 Integer day =(Integer)taskService.getVariable(singleResult.getId(), "请假天数");
		String  res =(String)taskService.getVariable(singleResult.getId(), "请假原因");
		System.out.println(personName);
		System.out.println(day);
		System.out.println(res);
		
		//获取javaBean对象   从而得到流程变量
		Person p  =(Person)taskService.getVariable(singleResult.getId(), "人员信息");
		System.out.println(p);//Person [id=null, name=找钱, day=5, res=娶媳妇]
	}
}

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Master_chaoAndQi/article/details/80694093

智能推荐

《Linux内核设计与实现》读书笔记(十五)- 进程地址空间(kernel 2.6.32.60)_linux total_vm rss nr_ptes-程序员宅基地

文章浏览阅读323次。进程地址空间也就是每个进程所使用的内存,内核对进程地址空间的管理,也就是对用户态程序的内存管理。主要内容:地址空间(mm_struct)虚拟内存区域(VMA)地址空间和页表 1. 地址空间(mm_struct)地址空间就是每个进程所能访问的内存地址范围。这个地址范围不是真实的,是虚拟地址的范围,有时甚至会超过实际物理内存的大小。 现代_linux total_vm rss nr_ptes

攻防世界Re第一题Hello, CTF_hohctf-程序员宅基地

文章浏览阅读2.9k次。首先判断程序是32位的;用ida打开程序,对main反汇编分析发现一段可疑字符串,继续往下分析;发现scanf读入一段字符串 存于v9,且对该字符串有输入长度限制,初步怀疑v9为用户输入的flag往下分析发现v9赋与v4,且里用sprintf()函数将v4 16进制转换为字符串后面发现buffer赋与v10后,v10与可疑字符串有比较,所以v13可能为flag尝试将v13 进行16进制到字符串转换成功!!!!完结!..._hohctf

python识别验证码——一般的数字加字母验证码识别-程序员宅基地

文章浏览阅读1.7k次。转自:https://www.cnblogs.com/MrRead/p/7656800.html1、验证码的识别是有针对性的,不同的系统、应用的验证码区别有大有小,只要处理好图片,利用好pytesseract,一般的验证码都可以识别2、我在识别验证码的路上走了很多弯路,重点应该放在怎么把图片处理成这个样子,方便pytesseract的识别,以提高成功率3、原图为:思想..._python形状 数字 字母 验证码识别的代码

第一次作业-程序员宅基地

文章浏览阅读67次。第一次作业:1-1数据压缩的一个基本问题是“我们要压缩什么”,对此你是怎样理解的? 我对数据压缩的理解是在这个大数据的时代,数据量实在是太大,信息在传输的过程中过于缓慢,因此我们需要对数据进行压缩。数据压缩我们要压缩的是信号空间,主要对象包括①物理空间②时间空间③电磁频段1-2 数据压缩的另一个基本问题是“为什么进行压缩”,对此你又是怎样理解的?我个人理解的是进..._数据压缩技术的流程建模表达

Mysql的timestamp(时间戳)详解以及2038问题的解决方案_mysql timestamp范围-程序员宅基地

文章浏览阅读10w+次,点赞34次,收藏161次。mysql的timestamp 虽然好用,但是会有一个2038年的问题,本文将带你们详细了解 mysql的timestamp 以及2038问题_mysql timestamp范围

JSP基础语法-程序员宅基地

文章浏览阅读94次。学习视频来自:https://www.imooc.com/video/2940page指令语法实例:page指令学习 主要就是<%@ page language="java" import = "java.util.*" contentType="text/html; charset=utf-8"%>最常用的就是 language 使用的语言 impo..._j p的基本语法

随便推点

ubuntu使用pip安装时报错HTTPError404解决方法_ubantu pip install pandas 404-程序员宅基地

文章浏览阅读5.1k次,点赞3次,收藏3次。运行命令:pip3 install xxx出现错误:pip._vendor.requests.exceptions.HTTPError: 404 Client Error: Not Found for url:xxxx解决方法:更换pip源为国内镜像(例为清华镜像)# 1 在当前用户主目录下创建.pip文件夹sudo mkdir ~/.pip# 2 在~/.pip文件夹下创建p..._ubantu pip install pandas 404

Spark落地到hive表时saveAsTable与insertInto的区别-程序员宅基地

文章浏览阅读4.8k次。SaveAsTable//Api的解释Saves the content of the `DataFrame` as the specified table.** In the case the table already exists, behavior of this function depends on the* save mode, specified by the `mod...

Cyswin 和 NCL 安装流程_cysgmwx-程序员宅基地

文章浏览阅读1.1k次。NCL 官网有提供详细的安装手册,详见:http://www.ncl.ucar.edu/Download/cygwin.shtml#RunCygwinX安装Cygwin/X 时注意:由于手册时间太老,里面很多jar包都找不到,安装Cygwin/X jar包时选择如下,安装Category "Devel","Editors","Graphics","Libs", "Net",_cysgmwx

缺包总结_写代码缺包怎么办-程序员宅基地

文章浏览阅读523次。学习SSH时,跟着书的代码写WEB应用,老是由于缺包而出错,而书上又没有相关的信息,真是郁闷。从今天开始,自己总结。java.lang.NoClassDefFoundError: antlr/ANTLRException缺失了antlr-2.7.6rc1.jar包_写代码缺包怎么办

@[],@()的使用-程序员宅基地

文章浏览阅读1.3k次。原文地址:City *city=[City new];_@[]

一. leetcode_简单题_3_char *str = (char *)malloc(max_string_length)-程序员宅基地

文章浏览阅读116次。38.给定一个正整数n(1 ≤n≤ 30),输出外观数列的第n项。(外观数列的详细定义见leetcode) 这是我见过相对困难的简单题。思路比较简单,但编程较难,这需要我们要有“状态机”的思维,也就是状态转换。因为需要一系列的状态转换,这就需要非常细心,对于那些边界条件要仔细检查。往往这类型题会让人思考有没有便捷的方法,因为这些状态转换会让人第一感觉繁琐,但事实上这道题的状态转换并不算非常困难,以后遇到这些思路简单,依赖于状态转换的题目还是要仔细思考深入一步,看是否状态转换繁琐,即..._char *str = (char *)malloc(max_string_length)

推荐文章

热门文章

相关标签