elsa 分发子工作流
在构建工作流时,您可能希望在更大的工作流中重用现有的工作流。
在 Elsa 中,您可以使用 DispatchWorkflow 活动从其他工作流分发工作流。
分发工作流
要分发工作流,您需要向您的工作流添加一个 DispatchWorkflow 活动。此活动有一个 WorkflowDefinitionId 属性,您可以使用它来指定要分发的工作流的定义 ID。
当工作流执行时,DispatchWorkflow 活动将分发指定 ID 的工作流。被分发的工作流将在后台运行,而父工作流将继续执行,除非 WaitForCompletion 属性设置为 true 。
带输入分发工作流
您也可以向分发的工作流传递输入。为此,您需要将 Input 属性设置为包含要传递给工作流的输入的 JSON 对象。
当工作流执行时,DispatchWorkflow 活动将以指定的输入分发工作流。
分发工作流并接收输出
您还可以从分发的工作流接收输出。为此,您需要将 WaitForCompletion 属性设置为 true,并将 Output 属性设置为包含您想从工作流接收的输出的 JSON 对象。
尝试一下
当工作流执行时,DispatchWorkflow 活动将分发工作流并等待其完成。当工作流完成后,DispatchWorkflow 活动将接收来自工作流的输出并继续执行。
以下每个示例都假设从先前的工作流继续。
示例 1:分发工作流
在此示例中,我们将创建一个工作流,该工作流以无输入和无输出的方式分发另一个工作流。
子工作流
首先,使用 Elsa Studio 创建一个名为子工作流的新工作流,包含以下活动:
WriteLineText:Hello from Child。
确保发布该工作流。
父工作流
然后,使用 Elsa Studio 创建一个名为父工作流的新工作流,包含以下活动:
WriteLineText:Parent started。
DispatchWorkflowWorkflowDefinitionId: <从下拉菜单中选择子工作流工作流>。WaitForCompletion:true。
WriteLineText:Parent completed。
子工作流应如下所示:
从设计器运行父工作流,并注意控制台输出,应显示:
Parent started
Hello from Child
Parent completed
要尝试此示例,您可以从此处下载工作流 这里 并导入它们。
示例 2:带输入分发工作流
在此示例中,我们将更新子工作流以接收来自父工作流的输入。
子工作流
首先,向工作流添加以下输入属性:
Message(字符串)
然后,更新WriteLine活动如下:
WriteLineText(JavaScript):getMessage()。
父工作流
然后,更新父工作流中的 DispatchWorkflow 活动如下:
DispatchWorkflowWorkflowDefinitionId: <从下拉菜单中选择子工作流工作流>。WaitForCompletion:true。Input(JavaScript):return {"Message": "Hello from Parent"}。
确保发布工作流(至少是子工作流),然后从设计器运行父工作流,并注意控制台输出,应显示:
Parent started
Hello from Parent
Parent completed
要尝试此示例,您可以从此处下载工作流 这里 并导入它们。
示例 3:分发工作流并接收输出
在此示例中,我们将更新子工作流以向父工作流发送输出。
子工作流
首先,向工作流添加以下输出属性:
Response(字符串)
然后,向工作流中添加一个 SetOutput 活动,并设置其属性如下:
SetOutputOutput: <从下拉菜单中选择Response输出>。Value:"Hello from Child"。
确保将 WriteLine 活动连接到 SetOutput 活动并发布工作流。
父工作流
然后,更新父工作流中的 DispatchWorkflow 活动如下:
- 添加一个名为
ChildOutput的新变量,类型为ObjectDictionary。
然后更新 DispatchWorkflow 活动如下:
DispatchWorkflowWorkflowDefinitionId: <从下拉菜单中选择子工作流工作流>。WaitForCompletion:true。Output: <从下拉菜单中选择ChildOutput变量>。
在 DispatchWorkflow 和 WriteLine 活动之间添加一个新的 WriteLine 活动,并设置其属性如下:
WriteLineText(JavaScript):getChildOutput().Response。
确保发布工作流(至少是子工作流),然后从设计器运行父工作流,并注意控制台输出,应显示:
Parent started
Hello from Parent
Hello from Child
Parent completed
要尝试此示例,您可以从此处下载工作流 这里 并导入它们。
抠丁客
