工作流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局部变量实现的。

工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别的更多相关文章

  1. 7、Python变量流程基础(变量、赋值、格式化、运算符、流程控制、range()函数)

    一.执行Python程序的两种方式 1.交互式 在终端内输入“python3”,然后输入python代码 2.命令行式 在终端内输入“python3 文本文件路径” 二.变量 1.变量的组成 Pyth ...

  2. 工作流Activiti5.13学习笔记(一)

    了解工作流 1.工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档.信息或任务的过程自动进行,从而实现某 ...

  3. .NET Core采用的全新配置系统[5]: 聊聊默认支持的各种配置源[内存变量,环境变量和命令行参数]

    较之传统通过App.config和Web.config这两个XML文件承载的配置系统,.NET Core采用的这个全新的配置模型的最大一个优势就是针对多种不同配置源的支持.我们可以将内存变量.命令行参 ...

  4. C#中根据变量获取变量名字符串

    /// <summary>         /// 获取当前变量的变量名 字符串         /// 调用:GetVarName(p=>test.str1); 返回 " ...

  5. js对象私有变量公有变量问题

    0 js对象私有变量公有变量问题5 小弟初学JS面向对象编程 现有一问题 请教各位大虾: Person=function (){ //私有变量定义 var name; vae age; var Ale ...

  6. SQL server 子查询、设置主键外键、变量及变量查询

    一.子查询 子查询,又叫做嵌套查询. 将一个查询语句做为一个结果集供其他SQL语句使用,就像使用普通的表一样,被当作结果集的查询语句被称为子查询. 子查询有两种类型: 一种是只返回一个单值的子查询,这 ...

  7. bash脚本编程之一 变量、变量类型等

    变量的内容 1.变量命名:            1.只能包含字母.数字和下划线,并且不能以数字开头,    2.不应该跟系统中已有的环境变量重名    3.最好能见名知意 2.变量赋值: 设置变量: ...

  8. 根据PHP手册什么叫作变量的变量?

    在最近做的一个项目中,发现了一个新的概念,关于在PHP中使用变量的变量.在的程序中,需要在一个页面同时更新多个记录,在经过相当长时间的痛苦思索之后,脑海中偶然地闪现出了变量的变量(variable v ...

  9. sqlserver中表变量和变量表之间区别

    sqlserver中表变量和变量表之间区别

随机推荐

  1. .bat后台运行

    可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序. ------------------------------------------------------------ Set ws = C ...

  2. ExtJs之工具栏及菜单栏

    先培养一下大概的感觉吧. 基本按书上都弄出来了. <!DOCTYPE html> <html> <head> <title>ExtJs</titl ...

  3. Jmeter 快速入门教程(三-3) -- 使用参数化

    参数化:简单的来理解一下,我们录制了一个脚本,这个脚本中有登录操作,需要输入用户名和密码,假如系统不允许相同的用户名和密码同时登录,或者想更好的模拟多个用户来登录系统. 这个时候就需要对用户名和密码进 ...

  4. spring_150803_service

    实体类: package com.spring.model; public class DogPet { private int id; private String name; private in ...

  5. Hadoop基础教程之分布式环境搭建

    前面,我们已经在单机上把Hadoop运行起来了,但我们知道Hadoop支持分布式的,而它的优点就是在分布上突出的,所以我们得搭个环境模拟一下. 在这里,我们采用这样的策略来模拟环境,我们使用3台ubu ...

  6. NVDIMM典型应用及技术发展

    1.典型应用之全系统保护 全系统保护采用超级内存作为系统主存.在系统异常掉电时,将整个系统的运行状态(包括CPU,芯片组,其他外设以及所有进程的信息)存入超级内存.在供电恢复后,利用超级内存中的数据, ...

  7. WPF之快速实现拖拽功能

    场景:工具栏上有很多图标(一个图标代表一种控件),可以左键按下图标,然后拖拽到设计区域创建一个个的控件. 实现:1.给工具栏上的图标添加MouseLeftDown和MouseMove事件,前者事件是为 ...

  8. Bridging signals---hdu1950(最长上升子序列复杂度n*log(n) )

     题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1950 一直只知道有除n*n的算法之外的求LIS,但是没学过,也没见过,今天终于学了一下,dp[i]表 ...

  9. Spring中 @Autowired注解与@Resource注解的区别

    Spring中 @Autowired注解与@Resource注解的区别在Spring 3.X中经常使用到@Autowired和@Resource进行装配.这两个注解的差异在何处???相同点:@Reso ...

  10. POJ3176——Cow Bowling(动态规划)

    Cow Bowling DescriptionThe cows don't use actual bowling balls when they go bowling. They each take ...