关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 11472|回复: 0

工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLoca...

[复制链接]
发表于 2014-8-1 12:50:24 | 显示全部楼层 |阅读模式
工作流Activiti5流程变量 任务变量 setVariables 和 setVariablesLocal区别
因为网上的资料比较少。结合源码把相关API写下来。
设置流程级别变量:
runtimeService.startProcessInstanceById(
template.getTemplateId(), variables);
runtimeService.setVariables(executionId, variables);
taskService.complete(String.valueOf(taskId), variables); //流程变量 这个开始我以为是设置任务变量 看了一下源码才发现是流程级别的
设置任务级别变量:
taskService.setVariable(String.valueOf(taskId), "va", "2"); //任务级别 变量
变量表:
select * from act_hi_varinst
setVariables 和 setVariablesLocal区别?
可以简单认为,variable都是针对processInstance的。
local可能是针对某个execution分支的,也可能针对task的。
这里就要谈一下变量的作用域,变量肯定是依附于某个流程里的概念而存在的,所以才能在流程流转过程中使用这些变量。
默认的变量都是流程实例级别的,也就是说,分支execution和task都可以读取到对应processInstance里的变量。
与之相对的就是local变量,简单来说就不是processInstance范围的变量,如何区分global和local呢?差别就是local的作用范围小,如果是分支execution的local变量,就只能在execution分支生存期使用。
比如并发分支结束了,变量也就没了
比如task结束了,变量也就没了。
local变量的好处是,可以在每个分支使用同名的变量,互相之间不受影响,会签multi-instance就是通过local局部变量实现的。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表