• 工作流Activiti5流程变量 任务变量 setVariables 跟 setVariablesLocal区别


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

  • 相关阅读:
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    福大软工 · BETA 版冲刺前准备(团队)
    福大软工 · 第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
  • 原文地址:https://www.cnblogs.com/haore147/p/5213453.html
Copyright © 2020-2023  润新知