---
pkg: '@nocobase/plugin-workflow-subflow'
title: "工作流节点 - 调用工作流"
description: "调用工作流节点：调用子流程、传递变量、复用流程逻辑、流程拆分。"
keywords: "工作流,调用工作流,Subflow,子流程,流程复用,NocoBase"
---

# 调用工作流

## 介绍

用于在一个工作流中调用其他的流程，可以使用当前流程的变量作为子流程的输入，并使用子流程的输出作为当前流程的变量在后续节点中使用。

调用工作流的处理过程如下图所示：

![20241230134634](https://static-docs.nocobase.com/20241230134634.png)

通过调用工作流可以复用一些通用的流程逻辑，例如发送邮件、短信等，或者将一个复杂的流程拆分为多个子流程，便于管理和维护。

本质上工作流不区分一个流程是否是子流程，任意一个工作流都可以作为子流程被其他流程调用，也可以调用其他流程。所有工作流都是平等的，只存在调用和被调用的关系。

同样的，调用工作流的使用分处于两个位置：

1. 主流程中：作为调用方，通过“调用工作流”节点，调用其他的工作流。
2. 子流程中：作为被调用方，通过“流程输出”节点，保存当前流程中需要输出的变量，可在调用当前流程的工作流中被后续节点使用。

## 创建节点

在工作流配置界面中，点击流程中的加号（“+”）按钮，添加“调用工作流”节点：

![添加调用工作流节点](https://static-docs.nocobase.com/20241230001323.png)

## 配置节点

### 选择工作流

选择要调用的工作流，可以通过搜索框快速查找：

![选择工作流](https://static-docs.nocobase.com/20241230001534.png)

:::info{title=提示}
* 未启用的工作流也可以作为子流程被调用。
* 当前工作流为同步模式时，也只能调用同步模式的子流程。
:::

### 配置工作流的触发器变量

选定工作流后，还需要配置触发器的变量，作为触发子流程的输入数据。可以直接选择静态的数据，也可以选择当前流程中的变量：

![配置触发器变量](https://static-docs.nocobase.com/20241230162722.png)

不同类型的触发器所需的变量不同，可以根据需要在表单上完成配置。

## 流程输出节点

参考[流程输出](./output.md)节点的内容，配置子流程的输出变量。

## 使用流程输出

回到主流程中，在调用工作流下方的其他节点，要使用子流程的输出值时，可以选择调用工作流节点的结果。如果子流程输出的是一个简单值，如字符串、数字、逻辑值、日期（日期为 UTC 格式的字符串）等，可以直接使用；如果是一个复杂对象（如数据表中的对象），需要先通过 JSON 解析节点进行映射后，才能使用其中的属性，否则只能按整个对象使用。

如果子流程没有配置流程输出节点，或者没有输出值，那么在主流程中使用调用工作流节点的结果时，只能获得一个空值（`null`）。
