我们有一个业务场景,希望能够在多实例上下文中增加或删除任务。我成功地创建了基于集合workPartnerList的mutli实例用户任务。
如果一个进程处于工作流的多实例阶段--如何根据workPartnerList的计数/值来增加或减少多实例状态,这可以根据API调用的更新来增加或减少。(我们需要在完成总体任务之前做到这一点)?
发布于 2020-10-06 04:43:51
我想你指的是并行多实例任务。
https://docs.camunda.org/manual/latest/reference/bpmn20/tasks/task-markers/
另一种定义实例数量的方法是指定流程变量的名称,该变量是使用loopDataInputRef子元素的集合。对于集合中的每个项,将创建一个实例。
实例的创建发生在执行到达并行多实例活动的时间点。创建实例的数量取决于集合在此特定时间点的大小。( BPMN2进程引擎不会自动使任务实例与集合保持同步。)
要“删除”任务实例,您可以完成或取消它们(例如,通过附加的边界事件)或我们完成条件。
多实例活动在所有实例完成后结束。但是,可以指定每次实例结束时计算的表达式。当该表达式的计算结果为true时,所有剩余的实例都被销毁,多实例活动结束,并继续该过程。这样的表达式必须在completionCondition子元素中定义。
若要向正在运行的流程实例动态添加其他任务实例,可以使用实例事件子进程或将边界事件附加到任务。
https://docs.camunda.org/manual/7.13/reference/bpmn20/events/message-events/#message-boundary-event
边界事件是捕捉附加到活动的事件。这意味着在活动运行时,消息边界事件正在侦听命名消息。当捕捉到这一点时,可能会发生两件事,这取决于边界事件的配置: 中断边界事件:活动被中断,然后是从事件中流出的序列流。 不中断边界事件:在活动中保留一个令牌,并创建一个附加令牌,该令牌遵循事件的序列流。

如果您愿意在API级别上处理这个问题,那么TaskService允许您创建一个新任务 (带有用户定义的任务id)。示例:https://github.com/rob2universe/cam-multi-instance/blob/25f524be6a112deb1b4ae3bb4f28a35422e428e0/src/test/java/org/camunda/bpm/example/ProcessJUnitTest.java#L79
迁移API甚至允许您向已经创建的一组任务实例中添加其他实例-请参阅:https://docs.camunda.org/manual/latest/user-guide/process-engine/process-instance-modification/#modify-multi-instance-activity-instances。
https://stackoverflow.com/questions/64154874
复制相似问题