我们有一个业务场景,我们希望能够在多实例环境中增加或删除任务。
我已经成功地基于集合workPartnerList
如果某个流程正在工作流的多实例阶段-如何基于workPartnerList
的计数/值增加或减少多实例状态,而该计数/值可以根据API的更新而增加或减少呼叫。 (我们需要在整体任务完成之前执行此操作)?
答案 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
边界事件是与活动关联的捕获事件。 这意味着在活动运行时,消息边界 事件正在监听命名消息。当发现这一点时,有两件事 可能会发生,具体取决于边界事件的配置:
中断边界事件:活动被中断,并且遵循从事件流出的顺序流。
不间断的边界事件:一个令牌保留在活动中,并在序列流之后创建另一个令牌 退出活动。
如果您愿意在API级别上使用此方法,则TaskService允许您创建一个new task(具有用户定义的任务ID)。 例: https://github.com/rob2universe/cam-multi-instance/blob/25f524be6a112deb1b4ae3bb4f28a35422e428e0/src/test/java/org/camunda/bpm/example/ProcessJUnitTest.java#L79