Activiti-流程变量

1.流程变量

1.1. 概念
流程变量在整个工作流中扮演很重要的作用。例如:请假流程中有请假天数、请假原因等一些参数都为流程变量的范围。流程变量的作用域范围是流程实例。也就是说各个流程实例的流程变量是不相互影响的。流程实例结束完成以后流程变量还保存在数据库中(存放到流程变量的历史表中)。

2 怎么设置流程变量

4种设置
1.启动设置
2.任务完成设置
3.runtimeService.setvars…()
4.taskservice.setvars…()

@Test
public void  setVarTest() throws Exception {
	ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
	TaskService taskService = processEngine.getTaskService();
	String processInstanceId="2501";
	String assignee="小莉";
	
	//通过任务服务获取这个流程实例中  小莉的唯一的一个任务
	Task task = taskService.createTaskQuery()
	.processInstanceId(processInstanceId)//在一次流程实例中一个人的任务是唯一的
	.taskAssignee(assignee)
	.singleResult();
	System.out.println(task);
	
	//设置一个流程变量
	String taskId = task.getId();
	taskService.setVariable(taskId, "请假人", assignee);
	Map<String,Object> variables=new HashMap<>();
	variables.put("请假原因","想男朋友了");//设置String
	variables.put("请假天数", 3);//设置Integer
	variables.put("是否扣工资",true);//设置boolean:存long型:1true;0false
	variables.put("请假开始时间", new Date());//设置Date类型
	variables.put("扣多少钱", 666.666d);//设置Double
	//设置多个流程变量:
	taskService.setVariables(taskId, variables);
	
	//完成任务的时候设置:
	Map<String,Object> variables1=new HashMap<>();
	variables1.put("叫老板", "亲爱的老板,我真的要回去找男朋友,很急的。。。。。");
	taskService.complete(taskId, variables1);
}

说明:
1)流程变量的作用域就是流程实例,所以只要设置就行了,不用管在哪个阶段设置
2)基本类型设置流程变量,在taskService中使用任务ID,定义流程变量的名称,设置流程变量的值。
3)Javabean类型设置流程变量,需要这个javabean实现了Serializable接口
4)设置流程变量的时候,向act_ru_variable这个表添加数据

3. 怎么获取的流程变量值

2种
runtimeService.getvars…,();
taskservice.getvars…()

/**
	 * 获取流程变量的方式:
	 * @throws Exception
	 */
	@Test
	public void  getVarTest() throws Exception {
		ProcessEngine processEngine = ProcessEngines.getDefaultProcessEngine();
		TaskService taskService = processEngine.getTaskService();
		String processInstanceId="2501";
		String assignee="美丽";
		//一个流程实例中,一个办理人只有一个任务
		Task task = taskService.createTaskQuery().
				processInstanceId(processInstanceId).
				taskAssignee(assignee)
				.singleResult();
		String taskId=task.getId();
		
		Map<String, Object> variables = taskService.getVariables(taskId);
		System.out.println("所有的流程变量:"+variables);
		Map<String, Object> variables2 = taskService.getVariables(taskId, Arrays.asList("请假天数","叫老板"));
		System.out.println("批量获取流程变量&
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值