【问题标题】:How to finish all parallel activities ViewFlow (Terminate End)?如何完成所有并行活动 ViewFlow (Terminate End)?
【发布时间】:2018-09-13 10:30:03
【问题描述】:

我想释放这个流程:

我尝试只使用一个节点 End,但另一个分支仍然处于活动状态。 一个分支完成后如何完成所有活动任务和整个流程?

【问题讨论】:

    标签: django-viewflow


    【解决方案1】:

    你需要的是BPMN中的event based gateway,Viewflow不支持开箱即用,你必须实现kmmbvnr提供的代码。

    此网关的作用是激活传出路径并等待任何任务完成,当第一个任务完成时,其他路径或任务被取消。

    当您使用返回某个路径的流程时,您必须考虑没有其他路径处于活动状态,只有第一个完成任务的路径。

    【讨论】:

      【解决方案2】:

      按照 BPNM 规范流程。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
                  )
              )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-07
        • 2011-06-13
        • 2012-12-09
        • 2011-09-06
        • 2011-09-13
        • 1970-01-01
        相关资源
        最近更新 更多