您的位置:首页 > 其它

activiti的taskService.complete方法

2016-11-30 10:42 471 查看
官方提供了三种不同的方法



简单讲一下区别

1.
complete(String taskId)


参数:taskId

作用:直接完成此次正在运行的任务,对用ac_ru_task表

2.
complete(String taskId, Map<String,Object> variables)


参数:taskId(对应
act_ru_task
中的
id_
),variables(下一次任务所需要的参数)

作用:完成这一次任务,并且下一步任务需要流程变量的



上图所示则为variables所要填充的参数

3.
complete(String taskId, Map<String,Object> variables, boolean localScope)


参数:taskId(对应
act_ru_task
中的
id_
),variables(下一次任务所需要的参数),localScope(存储范围:本任务)

作用:同第二个,加上存储范围的设置

localScope官方解释:If true, the provided variables will be stored task-local, instead of process instance wide (which is the default for complete(String, Map)).(如果为true,通过的变量将会随着本任务存亡(本任务结束,变量删除,称之为任务变量(局部)),默认为false,即为
complete(String,Map)
那么这时候的变量为流程变量(全局))

关于流程变量和任务(exception)变量区别,可查看

流程变量与任务变量区别

提示:

那么就有个疑问了,如果在act_ru_variable表中存在相同的name,不同的值,一个为流程变量(全局),一个为任务变量(局部),那么在complete的时候会用哪个的????

经本人初步测试,在complete的时候会先用本任务(exception)的变量,如果没有才会用流程变量(全局)。但是在源码中并未找到!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息