---
pkg: '@nocobase/plugin-workflow-variable'
---

# 変数

## 概要

ワークフロー内で変数を宣言したり、宣言済みの変数に値を割り当てたりできます。これは通常、ワークフロー内で一時的なデータを保存するために使われます。

## ノードの作成

ワークフロー設定画面で、フロー内のプラス（「+」）ボタンをクリックして、「変数」ノードを追加します。

![変数ノードを追加](https://static-docs.nocobase/53b1e48e777bfff7f2a08271526ef3ee.png)

## ノードの設定

### モード

変数ノードは、プログラミングにおける変数と似ています。使用したり値を割り当てたりする前に、まず宣言する必要があります。そのため、変数ノードを作成する際には、変数のモードを選択する必要があります。選択できるモードは2種類あります。

![モードを選択](https://static-docs.nocobase.com/49d8b7b501de6faef6f303262aa14550.png)

- 新しい変数を宣言する：新しい変数を作成します。
- 既存の変数に値を割り当てる：フロー内で以前に宣言された変数に値を割り当てます。これは変数の値を変更することと同じです。

作成するノードがフロー内で最初の変数ノードである場合、まだ割り当て可能な変数が存在しないため、宣言モードのみを選択できます。

宣言済みの変数に値を割り当てることを選択した場合、ターゲット変数、つまり変数が宣言されたノードも選択する必要があります。

![値を割り当てる変数を選択](https://static-docs.nocobase.com/1ce8911548d7347e693d8cc8ac1953eb.png)

### 値

変数の値は任意の型にすることができます。文字列、数値、論理値、日付などの定数にすることもできますし、フロー内の他の変数にすることもできます。

宣言モードでは、変数の値を設定することは、変数に初期値を割り当てることと同じです。

![初期値を宣言](https://static-docs.nocobase.com/4ce2c508986565ad537343013758c6a4.png)

代入モードでは、変数の値を設定することは、宣言済みのターゲット変数の値を新しい値に変更することと同じです。その後の使用では、この新しい値が取得されます。

![宣言済み変数にトリガー変数を割り当てる](https://static-docs.nocobase.com/858bae180712ad279ae6a964a77a7659.png)

## 変数の値の使用

変数ノードの後のノードでは、「ノード変数」グループから宣言済みの変数を選択することで、その変数の値を使用できます。例えば、クエリノードで変数の値をクエリ条件として使用する場合です。

![クエリフィルター条件として変数の値を使用](https://static-docs.nocobase.com/1ca91c295254ff85999a1751499f14bc.png)

## 例

変数ノードがより役立つのは、いくつかの分岐において、新しい値を以前の値と計算または結合し（プログラミングにおける `reduce`/`concat` などと同様に）、分岐の終了後にそれを使用する場合です。以下に、ループ分岐と変数ノードを使用して、受信者文字列を連結する例を示します。

まず、「コレクション」をトリガーとするワークフローを作成します。「記事」データが更新されたときにトリガーされ、関連する「著者」関連データをプリロードします（受信者を取得するため）。

![トリガーを設定](https://static-docs.nocobase.com/93327530a93c695c637d74cdfdcd5cde.png)

次に、受信者文字列を保存するための変数ノードを作成します。

![受信者変数ノード](https://static-docs.nocobase.com/d26fa4a7e7ee4f34e0d8392a51c6666e.png)

次に、記事の著者を繰り返し処理し、その受信者情報を受信者変数に連結するためのループ分岐ノードを作成します。

![記事の著者をループ処理](https://static-docs.nocobase.com/083fe62c943c17a643dc47ec2872e07c.png)

ループ分岐内で、まず計算ノードを作成します。これは、現在の著者と既に保存されている著者文字列を連結するために使用します。

![受信者文字列を連結](https://static-docs.nocobase.com/5d21a990162f32cb8818d27b16fd1bcd.png)

計算ノードの後に、別の変数ノードを作成します。代入モードを選択し、代入ターゲットとして受信者変数ノードを選択し、値として計算ノードの結果を選択します。

![連結された受信者文字列を受信者ノードに割り当てる](https://static-docs.nocobase.com/fc40ed95dd9b61d924b7ca11b23f9482.png)

このようにして、ループ分岐が終了すると、受信者変数にはすべての記事著者の受信者文字列が保存されます。その後、ループの後にHTTPリクエストノードを使用してメール送信APIを呼び出し、受信者変数の値を受信者パラメーターとしてAPIに渡すことができます。

![リクエストノードを介して受信者にメールを送信](https://static-docs.nocobase.com/37f71aa1a63e172bcb2dce10a250947e.png)

これで、ループと変数ノードを使用して、シンプルなメール一括送信機能が実装されました。