您可以使用四种方法在一个工作流中调用其他工作流。每种调用工作流的方法都由不同的工作流架构元素来表示。

同步工作流

一个工作流可以同步启动另一工作流。被调用的工作流在运行时会作为调用方工作流运行的组成部分,并与调用方工作流在同一内存空间中运行。调用方工作流会启动另一工作流,等待被调用工作流运行结束,然后再继续运行其架构中的下一元素。通常,同步调用工作流的目的在于,调用方工作流需要将被调用工作流的输出结果作为后续架构元素的输入参数。例如,工作流可以调用“启动虚拟机并等待”工作流来启动虚拟机,然后获取该虚拟机的 IP 地址以传递给其他元素,或通过电子邮件传递给用户。

异步工作流

一个工作流可以异步启动另一工作流。调用方工作流会启动另一工作流,但调用方工作流会立即运行其架构中的下一元素,无需等待被调用工作流的结果。被调用工作流会使用由调用方工作流定义的输入参数运行,但被调用工作流的生命周期则与调用方工作流的生命周期无关。异步工作流可让您创建工作流链,将输入参数从一个工作流传递到下一个工作流。例如,工作流可以在运行期间创建各种对象。该工作流随后可启动异步工作流,这些异步工作流会在运行中使用这些对象作为自己的输入参数。原始工作流会在启动所有必需工作流并运行完剩余的元素后结束。但是,其启动的异步工作流会继续独立运行。

若要设置调用方工作流等待被调用工作流的结果,请使用嵌套工作流或创建一个可编辑脚本任务,用于检索被调用工作流的工作流令牌状态,然后检索工作流完成后的结果。

调度工作流

工作流在调用另一工作流时,可将该工作流推迟到稍后的时间和日期再启动。调用方工作流会继续运行,直到结束为止。调用被调度的工作流时,会创建一个任务,用于在给定的时间和日期启动该工作流。在调用方工作流运行后,您可以在 Orchestrator 客户端的调度程序我的 Orchestrator 视图中查看被调度的工作流。

被调度的工作流只会运行一次。您可以在同步工作流的可编辑脚本任务元素中调用 Workflow.scheduleRecurrently 方法,来调度某个工作流重复运行。

嵌套工作流

一个工作流可在单个架构元素中嵌套多个工作流,从而同时启动多个工作流。当调用方工作流到达架构中的嵌套工作流元素时,嵌套工作流元素中所列的所有工作流就会同时启动。值得注意的是,每个嵌套工作流启动时的内存空间均与调用方工作流不同。调用方工作流会等待所有嵌套工作流完成运行后,再启动自己架构中的下一元素。调用方工作流在运行剩余元素时,会使用嵌套工作流的结果作为输入参数。