我们知道,当任务被激活时,应该为n
项目启动子流程,但是,在NSubprocess
任务的生命周期中,可以找到其他项目。
假设我们有Order
和OrderItem
。当客户提交订单并且流程到达fulfill_orderitems
( NSubprocess
-flow FulfillOrderItem
) 任务时,我们为每个订单项目启动子流程。
但是,在此fulfill_orderitems
任务的生命周期内,客户可以联系我们为订单添加额外的项目。在这一点上,我们被迫创建Order
一个有点乏味的新进程;而如果我们可以简单地启动一个新的FulfillOrderItem
子流程,那么事情就会变得简单得多。
显然,一旦fulfill_orderitems
完成并且客户随后致电以添加其他项目,那么我们将不得不回滚(不切实际)或进行新Order
流程。
这只是一个简单的示例,但一般来说,这种行为非常有用。有人可能会争辩说这应该是一个核心功能NSubprocess
(即能够n+1
在任务的提升时间内添加额外的子流程)。怎么做呢?
我们需要处理两件事(据我所知):
- 启动此附加过程的函数。据我了解,它可能很简单:
@Activation.status.transition(source=STATUS.STARTED)
def start_subprocess(self, item):
self.flow_task.subflow_task.run(self.task, item)
item
通过表单提交的视图。或者直接通过代码提交。这一点我很难想出。它应该相对简单,因为它与StartSubprocess
...非常相似(但我们需要调用前面提到的start_subprocess(item)
?但是,我更感兴趣的是能够直接调用该方法(例如通过DRF
)。