activity中Variable和VariableLocal在taskService和runtimeService中的设置和获取

 1.taskService中的变量  

Variable全局可用,同一key值被后面相同的key值覆盖

//全局变量设置
taskService.setVariable
(taskId,"variableKey1","variableValue1");



//全局变量获取
taskService.getVariable(taskId,"key");

VariableLocal局部变量,只在某一节点可用,该节点任务完成后只能在历史中查询

//局部变量
taskService.setVariableLocal
(taskId,"variableKey","variableValue");


//局部变量的获取-1
//该方法只能在执行 taskService.complete(taskId)之前才能获取到,否则会报空指针异常
//taskService只能查询运行中的任务,已完成的不可查询到
//执行complete后该节点任务已完成,所以查询不到
 Map map=taskService.getVariablesLocal(taskId);

//局部变量的获取-2
//该方法无论节点任务是否执行complete都可以查询到局部变量的值
 List<HistoricVariableInstance> historicVariableInstances=historyService.createHistoricVariableInstanceQuery().taskId(taskId).list();

 当局部变量和流程变量存在于同一个任务节点则查询时得到的是最后赋予该key的值,但是当该任务节点完成后,下一个节点获取的流程变量仍然是最初的流程变量的值,而不是局部变量的值,如:

taskService.setVariable(taskId, "key",value1);
taskService.setVariableLocal(taskId, "key",value2)
//此时map中得到的值是value2
 Map map=taskService.getVariables(taskId);
//完成该任务
taskService.complete(taskId);

//下一节点再次获取
//map中的key值是value1
Map map=taskService.getVariables(“下一个任务节点的ID”);

2.runtimeService中的变量设置

runtimeService.setVariable(exclutionId,"key1","value1");
runtimeService.setVariable(exclutionId,"key2","value2");

Map map=runtimeService.getVariables(exclutionId);
Map map2=runtimeService.getVariablesLocal(exclutionId);

//map和map2的值一样
//对于runtimeService来说variable和variableLocal没有区别

PS:taskService变量绑定的是task ID二runtimeService的变量绑定的是exclutionId,

       taskId变化,而exclutionId对于一个流程实例来说是不变的

默认情况下getVariable(String str)和setVariable(String str,String str2)方法会获取所有的变量,并放到缓存中

可用“boolean fetchAllVariables” 参数指定是否要设置变量缓存:

Object getVariable(String variableName, boolean fetchAllVariables); void setVariable(String variableName, Object value, boolean fetchAllVariables);

 

 

 

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值