# ワークフローを呼び出す

Source: https://openflow.run/ja/docs/nodes/workflow/
Language: ja
Product version: 0.1.0-beta.77

公開済みワークフローを、定義された入力と出力を通じて再利用します。

Call Workflow は、同じアカウントが所有し、公開済みの Start インターフェースを持つフローを呼び出します。ポートは公開インターフェースから生成されるため、呼び出し側で内部グラフを再構築する必要はありません。

## 呼び出し先を選ぶ

```json
{
  "op": "node.add", "as": "greeting", "type": "workflow", "name": "Call greeting",
  "config": { "flowId": "TARGET_FLOW_ID" },
  "inputs": { "name": { "kind": "value", "value": "Ada" } }
}
```

公開ノード型は `workflow` です。渡す入力に対応するフィールドを持つフローを選びます。Outputs がなければ、業務結果は空になります。

## 保存されたインターフェース

ノードは選択したインターフェースのスナップショットを保持します。通常の編集では変わりません。現在の公開インターフェースを読み直すには `node.refresh` を使います。

```json
{ "op": "node.refresh", "node": "CALL_NODE_REFERENCE" }
```

新しいリビジョンでも、名前付きスキーマと null の可否が同じなら、呼び出し側の更新は不要です。インターフェースが変わった場合は更新が必要です。名前は完全一致で照合し、解決できない参照は診断用に残します。

Call Workflow が別のフローに名前を渡し、定義された業務結果を受け取ります。

**入力**
{"name":"Ada"}

**想定される結果**
呼び出し先の message 出力が、このフローの message 結果になります。

**実行前の準備**
同じアカウントが所有する有効・公開済みフローで、name/message インターフェースが一致するものを選び、ノードを更新してください。保存済みの対象 ID は例示用です。

[ワークフローをダウンロード](https://openflow.run/docs/examples/call-workflow.openflow.json)

## 実行時の動作

実行時に、対象の有効な Live バージョンを確認し、子実行の定義を固定します。成功後、呼び出し側は子の業務出力を受け取ります。子の待機は子実行に属します。親が取り消しまたは失敗になると、未完了の子孫実行も取り消されます。

自己呼び出しと再帰的な呼び出しチェーンは拒否されます。ドラフトは利用できない選択を保持できますが、実行には対象条件を満たす公開済みフローが必要です。通常のタスク再試行には対応しません。

Agent と Code でも、明示的に宣言したワークフローツールを使えます。[Agent](https://openflow.run/ja/docs/nodes/agent/index.md) と [Code](https://openflow.run/ja/docs/nodes/code/index.md) を参照してください。

## 参照元

*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#call-workflow)
*   [docs/architecture.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/architecture.md#workflow-calls)
*   [packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/packages/open-flow/src/workbench/browser/runtime/editor/addNodeOptions.ts)
