# 入力と出力

Source: https://openflow.run/ja/docs/concepts/inputs-and-outputs/
Language: ja
Product version: 0.1.0-beta.77

実行経路とは別に、名前付きの値をバインドし、スキーマを定義します。

ポートは 1 つの値に名前を付け、JSON スキーマと null の可否を定義します。ノードの実行時に、バインドされた取得元が値を提供します。

## 入力元

| 入力元 | 意味 |
| --- | --- |
| 固定値 | ノードに保存された JSON のリテラル値。 |
| 上流の出力 | 選択された実行経路で利用できる名前付きの業務出力。 |
| 変数 | デプロイ先が実行用に解決するアカウント所有の値。 |
| デフォルト | 対応する入力で、保存済みのデフォルト値を継承。 |
| 未設定 | バインドを明示的に解除し、デフォルト値も継承しない。 |

すべてのノードがすべての入力元に対応するわけではありません。アプリのトリガー設定は実行の作成前に使うため、その実行内で生成される結果は利用できません。ノードスキーマで対応範囲を確認してください。

## 上流の出力をバインドする

次の公開編集操作は、実行エッジを追加せずに入力をバインドします。

```json
{
  "op": "input.set",
  "node": "TARGET_NODE_REFERENCE",
  "input": "message",
  "source": { "kind": "output", "node": "SOURCE_NODE_REFERENCE", "port": "message" }
}
```

業務出力が 1 つのノードでは、公開インターフェースが省略されたポートを解決できます。出力が複数ある場合は明示的に選択してください。

Start が名前を、Value が接頭辞を渡し、Code が組み合わせ、Outputs が最終結果を定義します。

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

**想定される結果**
{"message":"Hello, Ada!"}

**実行前の準備**
インポートや実行には Open Flow サービスが必要です。プレビュー自体はオフラインで動作します。

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

## スキーマと欠損値

スキーマ制約と null の可否は個別に検証されます。キャンバスで接続しただけでは、数値を文字列入力に渡せません。下流でオブジェクトのフィールドを選ぶ場合は `properties` を宣言します。

フィールドセレクターが選ぶのは、出力スキーマに名前が定義された直接のプロパティ 1 つです。名前のドットやスラッシュは通常の文字で、入れ子の JSON パスではありません。

利用可能な取得元がなければ `null` になります。明示的な null 出力も利用可能な取得元に数えます。1 つの入力に複数の取得元が利用可能だとエラーになります。その後、ポート検証で値を受け付けられるか判断します。

## ワークフローのインターフェース

[Start](https://openflow.run/ja/docs/nodes/start/index.md) が入力を、[Outputs](https://openflow.run/ja/docs/nodes/outputs/index.md) が出力とそのマッピングを定義します。Outputs には下流向けのデータポートがなく、呼び出し側が値をワークフローの業務結果として受け取ります。

## 参照元

*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#edits-and-input-sources)
*   [docs/control/contracts/control-api.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/control/contracts/control-api.md#execution-graphs-and-input-sources)
*   [docs/authoring/node-authoring.md](https://github.com/oomol-lab/open-flow/blob/e25a738d170322734572a0b8a1323cb00b9d355a/docs/authoring/node-authoring.md)
