zoukankan      html  css  js  c++  java
  • Activiti任务参数和流程参数的对比

    前言

    Activiti的参数有两种类型,一类是流程参数,一类是任务参数;流程参数是通过RuntimeService服务组件设置,在设置的过程中需要传入执行流ID;任务参数是通过TaskService服务组件设置,在设置的过程中需要传入任务ID;所以我们可以形象的认为流程参数是和执行流绑定到了一起,任务参数是和任务绑定到了一起。流程参数可以查看这篇文章《Activiti流程参数的设置方式和作用域》,任务参数可以查看这篇文章《Activiti任务参数的设置方式和作用域》

    一:参数的设置方式对比

    1:任务参数的设置方式

    流程启动之后,当走到某个任务节点时,用taskService.setVariable(任务Id,参数名,参数值)或者taskService.setVariableLocal(任务Id,参数名,参数值)的方式设置任务参数;

    2:流程参数的设置方式

    在流程启动之后,用runtimeService.setVariable(执行流Id,参数名,参数值)或者runtimeService.setVariableLocal(执行流Id,参数名,参数值)的方式设置参数;设置流程参数依靠执行流,可以是主执行流,也可以是子执行流。

    二:参数作用域的对比

    1:任务参数的作用域

    (1)、通过taskService.setVariable(任务Id,参数名,参数值)方式设置的参数,被放到了公共作用域中,整个流程结束之前,在整个流程的任何地方、通过任何方式都能获取到,即可以通过taskService.getVariable(任务Id,参数名,参数值)获取到,也可以通过runtimeService.getVariable(主/子执行流Id,参数名,参数值)或runtimeService.getVariableLocal(主执行流Id,参数名,参数值)获取到。

    (2)、通过taskService.setVariableLocal(任务Id,参数名,参数值)方式设置的参数,被放到了当前任务的私有作用域中,只能在当前任务中通过taskService.getVariableLocal(任务Id,参数名,参数值)或taskService.getVariable(任务Id,参数名,参数值)方式获取到;当前任务执行结束,或者被删除后,参数就会失效。

    2:流程参数的作用域

    (1)、通过runtimeService.setVariable(主/子执行流Id,参数名,参数值)方式设置的参数,被放到了公共作用域中,在整个流程结束之前,在整个流程的任何地方、通过任何方式都能获取到,即可以通过taskService.getVariable(任务Id,参数名,参数值)获取到,也可以通过runtimeService.getVariable(主/子执行流Id,参数名,参数值)或者runtimeService.getVariableLocal(主执行流Id,参数名,参数值)获取到。

    (2)、通过runtimeService.setVariableLocal(主执行流Id,参数名,参数值)方式设置的参数,被放到了公共作用域中,在整个流程结束之前,在整个流程的任何地方、通过任何方式都能获取到,即可以通过taskService.getVariable(任务Id,参数名,参数值)获取到,也可以通过runtimeService.getVariable(主/子执行流Id,参数名,参数值)或者runtimeService.getVariableLocal(主执行流Id,参数名,参数值)获取到。

    (3)、通过runtimeService.setVariableLocal(子执行流Id,参数名,参数值)方式设置的参数,被放到了当前执行流的私有作用域中,只能在当前执行流中通过runtimeService.getVariableLocal(子执行流Id,参数名,参数值)或者runtimeService.getVariable(子执行流Id,参数名,参数值)获取到;当前子执行流执行结束,参数就会失效。

    三:公共作用域,私有作用域

    1:任务参数可以被放到一个公共作用域中,也可以被放到当前任务的私有作用域中;

    2:流程参数可以被放到一个公共作用域中,也可以被放到当前执行流的私有作用域中;

    3:总结发现无论是 任务参数的公共作用域,还是流程参数的公共作用域,是同一个作用域,所以只要是放到公共作用域的任何参数,通过任何方式都可以获取到;

    4:任务参数的私有作用域只在当前任务下,只能通过当前任务获取;

    5:流程参数的私有作用域只在当前执行流下,只能通过当前执行流获取;

  • 相关阅读:
    【python】@property装饰器
    使用pycharm专业版创建虚拟环境
    scrapy爬虫框架入门实战
    LoadRunner10个用户并发测试时分别取不同的参数运行脚本
    selenium grid原理
    使用 PHP 过滤器(Filter)进行严格表单验证
    ios之gcd
    ios之runloop笔记
    ios之block笔记
    iOS APP网络分析之rvictl(可以捕捉除了Wifi以外的网络类型)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13302407.html
Copyright © 2011-2022 走看看