前言
Activiti的参数有两种类型,一类是流程参数,一类是任务参数;流程参数是通过RuntimeService服务组件设置,在设置的过程中需要传入执行流ID;任务参数是通过TaskService服务组件设置,在设置的过程中需要传入任务ID;所以我们可以形象的认为流程参数是和执行流绑定到了一起,任务参数是和任务绑定到了一起。流程参数可以查看这篇文章《Activiti流程参数的设置方式和作用域》
一:任务参数的设置方式
流程启动之后,当走到某个任务节点时,用taskService.setVariable(任务Id,参数名,参数值)或者taskService.setVariableLocal(任务Id,参数名,参数值)的方式设置任务参数;
二:任务参数的作用域
1:通过setVariable和setVariableLocal设置参数的作用域不同,按两种情况分开介绍:
(1)如果在某个任务中通过setVariable方式设置参数,则在同流程的所有任务中都可以通过getVariable方式获取到;
(2)如果在某个任务中通过setVariableLocal方式设置参数,则在当前任务中可以通过任何方式(getVariable或者getVariableLocal)获取到,在同流程的其他任务中不可以获取到;因为参数的作用域仅仅局限于当前设置的任务中,而且任务被删除,或者执行结束之后,参数就会失效。
2:任务参数作用域的个人理解
(1)在一个流程实例中,任务参数的作用域可以理解为有两类区域,一类共有区域(只有一个共有区域,所有任务共享),一类私有区域(每个任务都有自己的私有区域);
(2)任务通过setVariable和getVariable操作共有区域,通过setVariableLocal和getVariableLocal操作自己的私有区域;但是getVariable也可以操作自己的私有区域;
(3)任务通过setVariable设置的参数,被设置到了共有区域;任务通过getVariable方式是从共有区域里获取参数(也会从自己的私有区域获取参数);
(4)任务通过setVariableLocal设置的参数,被设置到了自己的私有区域里;任务通过getVariableLocal从自己的私有区域里获取参数。