如何更新多实例用户任务以添加/删除任务?

时间:2020-10-01 11:54:41

标签: camunda

我们有一个业务场景,我们希望能够在多实例环境中增加或删除任务。 我已经成功地基于集合workPartnerList

创建了一个多实例用户任务

如果某个流程正在工作流的多实例阶段-如何基于workPartnerList的计数/值增加或减少多实例状态,而该计数/值可以根据API的更新而增加或减少呼叫。 (我们需要在整体任务完成之前执行此操作)?

1 个答案:

答案 0 :(得分:1)

我假设您指的是并行多实例任务。

https://docs.camunda.org/manual/latest/reference/bpmn20/tasks/task-markers/

定义实例数量的另一种方法是指定名称 使用loopDataInputRef的过程变量的集合 子元素。对于集合中的每个项目,一个实例将是 已创建

实例的创建发生在执行到达并行多实例活动的时间点。创建的实例数由该特定时间点的集合大小确定。 (BPMN2流程引擎不会自动使任务实例与集合保持同步。)

要“删除”任务实例,您可以完成或取消任务(例如,通过附加的边界事件),也可以使用完成条件。

所有实例完成后,多实例活动结束。 但是,可以指定要计算的表达式 每次实例结束时。当此表达式的值为真时, 其余所有实例均被销毁,多实例活动 结束,继续该过程。这样的表达式必须在 completeCondition子元素。

要将其他任务实例动态添加到正在运行的流程实例中,可以使用实例事件子流程或将边界事件附加到任务。

https://docs.camunda.org/manual/7.13/reference/bpmn20/events/message-events/#message-boundary-event

边界事件是与活动关联的捕获事件。 这意味着在活动运行时,消息边界 事件正在监听命名消息。当发现这一点时,有两件事 可能会发生,具体取决于边界事件的配置:

中断边界事件:活动被中断,并且遵循从事件流出的顺序流。

不间断的边界事件:一个令牌保留在活动中,并在序列流之后创建另一个令牌 退出活动。

enter image description here

如果您愿意在API级别上使用此方法,则TaskService允许您创建一个new task(具有用户定义的任务ID)。 例: https://github.com/rob2universe/cam-multi-instance/blob/25f524be6a112deb1b4ae3bb4f28a35422e428e0/src/test/java/org/camunda/bpm/example/ProcessJUnitTest.java#L79

相关问题