我尝试只使用一个节点结束,但另一个分支仍然处于活动状态。完成一个分支后,如何完成所有活动任务和整个流程?
问问题
301 次
2 回答
0
通过 BPNM 规范 flow.End 仅完成进入其中的任务令牌。并行任务未完成。
如果您遇到需要取消其中一个并行流的情况,在 BPMN 中,此类流程由复杂的拆分网关建模,该网关等待后续任务完成并取消其他任务。这是视图流拆分优先节点的草图实现。您可以根据您的具体情况对其进行调整。
class SplitFirst(flow.Split):
shape = {
'width': 50,
'height': 50,
'svg': """
<path class="gateway" d="M25,0L50,25L25,50L0,25L25,0"/>
<text class="gateway-marker" font-size="32px" x="25" y="35">1</text>
"""
}
def on_signal(self, sender, **signal_kwargs):
task = signal_kwargs['task']
split_first = task.previous.filter(flow_task=self).first()
if split_first:
for leading in split_first.leading.all().exclude(pk=task.pk):
activation = leading.activate()
if hasattr(activation, 'cancel') and activation.cancel.can_proceed():
activation.cancel()
def ready(self):
super(SplitFirst, self).ready()
task_finished.connect(
self.on_signal,
sender=self.flow_class,
dispatch_uid="sample.splitfirst/{}.{}.{}".format(
self.flow_class.__module__, self.flow_class.__name__, self.name
)
)
于 2018-09-18T08:09:05.717 回答