前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >camunda 工作流学习笔记2 - 任务的多实例特性(Multiple Instance)

camunda 工作流学习笔记2 - 任务的多实例特性(Multiple Instance)

作者头像
张云飞Vir
发布2021-12-06 16:56:10
2.2K0
发布2021-12-06 16:56:10
举报
文章被收录于专栏:写代码和思考写代码和思考

1. 背景

在工作流中会有遇到这样一个"多个人处理同一个任务“的情形,在 camunda 中可以使用“任务的多实例”来实现。

2.知识

场景

比如遇到下面的场景:

  • 一个审批任务可由 经理或者副经理 其中的一个人审批即可通过。
  • 一个填报任务,要由组员A填报一半的内容,且组员B填报一半的内容,都填完了才算完成。

这时,可考虑使用“任务的多实例”

任务的多实例( Multiple Instance ):即一个任务task 可被多人顺序或并行处理。

多实例活动是将 “流程中的某个步骤” 定义为“重复执行” 的一种方式。

在编程概念中,多实例可以被遍历 执行( for each ) :它允许对给定集合中的每个子项 “ 依次 ” 或 “ 并行 ” 执行某个步骤。它定义了额外的属性(所谓的multi-instance characteristics),这将导致活动在运行时 “被多次执行”。

如果“ 任务 ”是多实例的,则在“ 任务 ” 底部用三条短线表示。三个垂直线表示实例将并行执行,而三个水平线表示顺序执行。

image.png

设置一个任务为“多实例”

操作步骤:

  • 1、点任务 - 设置(点小扳手) - 点 三个竖线或者横线。
  • 2、在右侧的属性面板填写: Collection:它表示一个集合 Element Variable:写一个变量名,它表示遍历上面的集合元素使用的标识。 然后就可以使用变量 ${ 变量名 } 了。
  • 3、在 Assignee (分配到任务的人)填写 ${ 变量名 }。

看下图:

image.png

小结: 由图上可以看到,我定义了一个 Collection = ${managers},遍历时的变量名是 manager, 也就是在执行到这个任务时产生 多个任务实例,每个实例都有自己的一个 manager 变量。

另外记得在启动流程时,传入这个变量 managers 的具体值,变量的值是一个数组,就完整了。

扩展:

可属性 Completion condition 指示任务的完成条件。

Completion condition:完成条件。可选。比如设置一个人完成后,那么其他人的代办任务都会消失。

先了解到,对于“多实例任务”, task 会自动生成以下几个流程变量:

  • nrOfActiviteInstances:当前活动的实例数量,即还没有完成的实例数量
  • loopCounter :循环计数器,办理人在列表中的索引
  • nrOfInstances:会签中总共的实例数
  • nrOfCompletedInstances:已经完成的实例数量

那么,在 Completion condition 中 可以这么填写:

  • $ {nrOfInstances == nrOfCompletedInstances} 表示所有人员审批完成后会签结束。
  • ${ nrOfCompletedInstances == 1} 表示一个人完成审批。

3.参考:

官网文档:https://docs.camunda.org/manual/7.15/reference/bpmn20/tasks/task-markers/

基于camunda开源流程引擎如何实现会签及会签原理解析

END

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2021/8/19 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 背景
  • 2.知识
    • 场景
      • 这时,可考虑使用“任务的多实例”
        • 设置一个任务为“多实例”
          • 扩展:
          • 3.参考:
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档