2

我正在使用 ViewFlow/Django,并且我定义了 Flow,其中包括 10 个步骤。

假设我拥有前 5 个步骤的所有相关数据。

如何以编程方式启动我的流程、保存这些步骤的数据并直接跳到第 6 步?

问题是我的流程与前端一起工作,但现在我想从 API 执行前 5 个步骤。我将此添加到我的流程中:

类我的流(流):

@method_decorator(flow_start_func)
def create_request(self, activation, **kwargs):
    activation.prepare()
    activation.done()
    return activation

start_from_code = StartFunction(this.create_request). \
    Next(this.my_first_step_in_a_flow)

但我做错了什么,因为当我尝试运行时:

MainOnBoardingFlow.start_from_code.run()

我得到 NotImplementedError

4

2 回答 2

0

你不需要跳过。只需添加连接到您的流程中间的第二个起始节点。它可能是StartFunction,您将在其中传递准备好的数据

在此处输入图像描述

于 2018-05-08T09:14:58.373 回答
0

正如措辞所言,这个问题可以用两种方式解释:

  1. 当想法是开始一个全新的 Viewflow 流程时。这是@kmmbvnr 使用StartFunction节点回答的解释。更完整的答案是如何以编程方式创建 django ViewFlow 进程
  2. 当想法是在给定任务(可能在视图节点任务)处继续现有的 Viewflow 流程时。在后一种情况下,关键是使用Function节点。就我而言,我有以下视图和相应的功能:
class MyFlow(Flow):
    approve_run_as_payroll_approver = flow.View(
        ProcessApproval, form_class=ProcessApproval.Form). \
        Permission(). \
        Assign(). \
        Next(this.check_pay_run_approved)
    approve_run_as_payroll_approver_fn = flow.Function(process_approve). \
        Next(this.check_pay_run_approved)

process_approve处理程序装饰如下:

@flow_func
def process_approve(activation: FuncActivation, *, approved, **kwargs):
   ...

该过程恢复如下:

   MyFlow.approve_run_as_payroll_approver_fn.run(...)

有关参数,请参阅文档。

于 2022-01-04T00:38:25.850 回答