我正在使用 Django-viewflow 以编程方式创建工作流。
这是我的流量课。
class Workflow(Flow):
start = (
flow.StartFunction(function1)
.Next(this.shipment_create)
)
shipment_create = (
flow.Function(function2)
.Next(this.request_quotes)
)
request_quotes = (
flow.Handler(function3)
.Next(this.move_package)
)
move_package = (
flow.Function(function4)
.Next(this.end)
)
end = flow.End()
我所做的是,我以编程方式启动流程,当对端点 E1 发出 POST 请求时,我运行
WorkFLow.start.run(**some_kwargs)
它正确启动,并在处理start
完成后,将响应返回给客户端。
现在,shipment_create
在端点 E2 上发出 POST 请求时运行,我通过编程再次运行它,
activation.flow_task.run(**some_kwargs)
它正确运行并完成流程直到move_package
.
问题
我通过端点 E3 上的 PUT 请求更新了 的详细信息shipment
,并且我想在 node 之后重新运行完整的流程shipment_create
。我怎样才能做到这一点?
如何在特定节点之后重新运行流程?
Point(1) 是手动步骤,即以编程方式重新运行后节点。有没有办法,我可以
shipment_update
在 Workflow 类本身中包含节点,以便它自动重新运行后节点?我将如何以及在哪里提到update_shipment
节点?
我在第(2)点看到的问题是,在一种情况下,我shipment_create
在启动后声明节点(其余处理程序将处理),在另一种情况下,我必须在启动后提及shipment_update
节点(其余处理程序将处理)。工作流类将如何根据 HTTP 方法的类型工作?
更新
如何返回 Handler(即function4
)的响应?
def function1():
return 1
def function2():
return 2
def function3():
return 3
def function4():
return 4
运行时shipment_create
,Handler 会自动执行。但是,返回的响应是shipment_create
节点的响应,即function2。
function3(Handler)
在将其发送回客户端之前,如何返回或如何获取最后执行节点的响应?