サブワークフロー
あるワークフローから別のワークフローを呼び出すことで、モジュール化されたマイクロサービスのようなワークフロー構造を構築できます。また、ワークフローが大きくなりすぎてメモリに関する問題が発生した場合にも、これを効果的に分割する手段となります。サブワークフローを作成するには、「ワークフローを実行」ノードと「別のワークフローから実行されたとき」(Execute Sub-workflow Trigger)ノードを使用します。
サブワークフローの実行回数は、ご利用プランにおける月間実行回数やアクティブなワークフロー数の上限には含まれません。
サブワークフローの設定と使用方法
このセクションでは、親ワークフローとサブワークフローの両方を設定する方法を説明します。
サブワークフローの作成
- 新しいワークフローを作成します。
既存のワークフローからサブワークフローを作成する
既存の親ワークフロー内にある「ワークフローを実行」ノードから直接サブワークフローを作成することも可能です。ノードの設定で データベース および リストから を選択し、リスト内で サブワークフローを作成 を選択してください。
また、右クリックメニューの「サブワークフローとして抽出」機能を使って、選択したノードを直接サブワークフローとして抽出することもできます。
-
(オプション) このサブワークフローを呼び出せるワークフローを制限します:
- オプション
メニュー > 設定 をクリックして、ワークフロー設定 ダイアログを開きます。 - このワークフローを呼び出せる対象 の設定を変更します。詳細な設定方法については、「ワークフロー設定」をご参照ください。
- オプション
-
別のワークフローから実行されたとき ノード(トリガーノード検索ではこの名称で表示されます)を追加します。
-
入力データモード を設定し、サブワークフローの入力データをどのように定義するかを選択します:
- 以下のフィールドで定義:このモードを選択すると、呼び出し元のワークフローが提供すべき個別の入力項目名とデータ型を定義できます。呼び出し元の「ワークフローを実行」ノードまたは「Call n8n Workflow Tool」ノードは、ここで定義されたフィールドを自動的に読み取ります。
- JSON サンプルで定義:このモードを選択すると、期待される入力項目とその型を示す JSON オブジェクトのサンプルを提供します。
- すべてのデータを受け入れる:このモードを選択すると、すべての入力データを無条件に受け入れます。サブワークフロー側では必須の入力項目を定義しないため、入力データの不整合や欠損値を自分で処理する必要があります。
-
必要に応じて他のノードを追加し、サブワークフローの機能を完成させます。
-
サブワークフローを保存します。
サブワークフローにエラーがあってはいけません
サブワークフロー内にエラーがある場合、親ワークフローはそれをトリガーできません。
サブワークフロー構築前にデータをロードする
この機能には、過去の実行履歴からデータをロードする機能が必要です。この機能は n8n Cloud および登録済みのコミュニティプランで利用可能です。
サブワークフローを構築する前にデータをロードしたい場合は、以下の手順に従ってください:
- サブワークフローを作成し、「別のワークフローから実行されたとき」ノードを追加します。
- ノードの 入力データモード を すべてのデータを受け入れる に設定するか、既知の入力項目がある場合はフィールドまたは JSON で定義します。
- サブワークフローの設定で、成功した本番実行を保存 を 保存 に変更します。
- 親ワークフローの設定に進み、それを実行します。
- 手順に従って、過去の実行履歴からデータをロードします。
- 必要に応じて、入力データモード を親ワークフローが送信する入力に合わせて調整します。
これにより、トリガーノードにサンプルデータを固定し、ワークフローの残り部分を構築する際に実際のデータを使って開発できるようになります。
サブワークフローの呼び出し
- サブワークフローを呼び出したい親ワークフローを開きます。
- ワークフローを実行 ノードを追加します。
- ワークフローを実行 ノードで、呼び出すサブワークフローを設定します。ワークフロー ID による指定、ローカルファイルからの読み込み、ノードパラメータとして JSON を直接入力、または URL による指定が可能です。
ワークフロー ID の確認方法
サブワークフローの ID は、その URL の末尾にある英数字の文字列です。
- サブワークフローで定義された必須の入力項目を記入します。
- ワークフローを保存します。
ワークフローを実行すると、データがサブワークフローに送信され、その実行がトリガーされます。
「ワークフローを実行」ノードを開き、子実行を表示 リンクをクリックすることで、親ワークフローからサブワークフローへの実行フローを追跡できます。同様に、サブワークフローの実行ログにも親ワークフローの実行ログへのリンクが含まれており、双方向に移動できます。
ワークフロー間でのデータの受け渡し方法
具体的な例で説明します:ワークフロー A に「ワークフローを実行」ノードがあり、ワークフロー B という別のワークフローを呼び出している場合:
- 「ワークフローを実行」ノードがデータを ワークフロー B 内の「別のワークフローから実行されたとき」ノードに渡します。
- ワークフロー B の最後のノードがデータを ワークフロー A の「ワークフローを実行」ノードに返します。
サブワークフローとして抽出する方法
既存のワークフローをサブワークフローに分割する方法については、「サブワークフローとして抽出する方法」をご参照ください。