《Activiti工作流框架》专题(五)-Activiti工作流框架流程变量

1.流程变量概念

使用流程变量进行业务数据的传递,例如请假原因、天数等信息。
在这里插入图片描述

2.设置流程变量

2.1.在启动流程实例时设置

启动流程实例时,可以添加流程变量。这是添加流程变量的一种时机。

/**
 * 设置流程变量方式一:在启动流程实例时设置
 */
@Test
public void test1() {
    
    
	String processDefinitionKey = "HelloWorldKsy";
	Map<String, Object> variables = new HashMap<String, Object>();
	variables.put("key1", "value1");
	variables.put("key2", 200);
	ProcessInstance pi = pe.getRuntimeService().startProcessInstanceByKey(processDefinitionKey, variables);
	System.out.println(pi.getId());
}

说明:

1)	在启动流程实例时,通过重载startProcessInstanceByKey的方法可以加载流程变量。
2)	第二个参数要求是Map<String ,Object>类型,意味着可以添加多个流程变量。
3)	当这段代码执行完以后,会在数据库表act_ru_variable中添加两行记录。

2.2.在办理任务时设置

在办理任务时,有时候任务办理完成以后,要传递一些信息到系统中。这个时候可以利用TaskService这个类来添加流程实例。

/**
 * 设置流程变量方式二:在办理任务时设置
 */
@Test
public void test3() {
    
    
	String taskId = "50006";
	Map<String, Object> variables = new HashMap<String, Object>();
	variables.put("user", new User(1,"小王"));
	pe.getTaskService().complete(taskId, variables);
}

3.流程变量支持的类型

Jdk中提供的数据类型(StringIntegerListMap…)
自定义的实体类(要求实现序列化接口 Serializable
如图是从官网列出来的流程变量的类型:
在这里插入图片描述
从图中可以看出包括了大部分封装类型和Date、String和实现了Serializable接口的类的类型。

4.获取流程变量

使用RuntimeService的方法获取

可以通过runTimeService的方法来获取流程变量。说明:这些流程变量是从act_ru_variable这个表中读出来的。

/**
 * 获取流程变量方式一:使用RuntimeService的方法获取
 */
@Test
public void test6() {
    
    
	String executionId = "2501";
	Map<String, Object> variables = pe.getRuntimeService().getVariables(executionId);
	// System.out.println(variables);
	Set<String> set = variables.keySet();// key2 key1 user
	for (String key : set) {
    
    
		Object value = variables.get(key);
		System.out.println(key + " = " + value);
	}

	Object value = pe.getRuntimeService().getVariable(executionId, "user");
	System.out.println(value);
}

猜你喜欢

转载自blog.csdn.net/BruceLiu_code/article/details/113638496