ポートと接続
ポートを理解することは、ボックスがいつ実行されるのかを理解することです。この ページはそのモデルのリファレンスです。
3 つの暗黙のポート
Section titled “3 つの暗黙のポート”すべてのボックスが持っていますが、設定には現れません。
| ポート | 向き | フロー | 役割 |
|---|---|---|---|
in | 入力 | シグナル | トリガー。複数 の入力接続を受け付けます |
error | 出力 | 値 + シグナル | 失敗ルート |
done | 出力 | シグナル | ボックス とその下流のサブグラフ全体 が完了したあとに発火します |
error ポートを持たないボックスが 3 つあります。出力、現在、そして
Retry(最後のものはそれ自体がエラー境界です)。done を持たないものは 2 つで、
出力 と Throw です。
フローの種類
Section titled “フローの種類”| フロー | イメージ | 振る舞い |
|---|---|---|
| 値 | データ | 値を運びます。トリガーも兼ねます |
| シグナル | 合図 | 何も運ばず、発火させるだけです |
| 両方 | 値を運び、かつ 発火させます |
禁じられている組み合わせは 1 つだけ です。純粋なシグナル の出力から 純粋な値 の入力へ、という接続です。値に入れるものが何もありません。
any · json · number · string · boolean · duration · response ·
status · list · object。
型付けは主に見た目の分かりやすさのためですが、1 つだけ厳格な例外があります。
リスト 型の入力(リストに追加 と リストから削除 アクションの list ポート)は、
リストと互換性のないソースを拒否します。json と list は互いに互換ですが、
単純な object は互換ではありません。
- 入力ポートは接続を 1 本しか受け付けません。 これがグラフを読みやすくして います。値は 1 つ、出どころも 1 つです。
inは例外 で、望むだけの接続を受け付けます。- 出力 は、望むだけの入力に値を供給できます。
ボックスが実行されるとき
Section titled “ボックスが実行されるとき”順序のあるルールが 3 つあります。
- ルートから始まります。 入力接続を持たないボックスは、シナリオの起動時に 着火されます。「開始」ボックスというものはありません。
- 配線された入力だけが待たれます。 ボックスは、実際につながっている 各 入力ポートが値を受け取った時点で実行されます。配線されていないポートが待たれる ことはありません。値は記憶され続けます。入力は最後に受け取った値を保持します。
inポートはバリアになります。 複数の接続から供給されている場合、すべて が届くのを待ってから 一度だけ 発火します。このモデルにおける「この 3 つの 分岐が終わるまで待つ」に当たります。
例外:受信したイベントごとに再実行する
Section titled “例外:受信したイベントごとに再実行する”「受信したイベントごとに再実行」オプション(ボックスのコンテキストメニュー)は、 配線されたすべての入力をブロックしない「or」ゲートに変えます。ボックスは、どのポート であれ値を受け取る たびに 再び発火します。
用途は 2 つです。ストリームをメッセージごとに処理すること、そして完了サイクル (自分自身に戻ってくるグラフ)の行き詰まりを解消することです。
done と値の出力の違い
Section titled “done と値の出力の違い”実際にいちばん役立つ区別です。
- 値の出力 は、ボックスが結果を生み出した時点で発火します。
doneはさらに、その結果を消費するすべて が終わるのを待ちます。
順序をつけたいとき ——「これを全部やってから片づける」—— は done から配線します。
データを渡したいときは値の出力から配線します。
これは別立ての仕組みではありません。役割を担った出力ポートであり、その役割が色を 決めています。
| ボックス | 出力 |
|---|---|
| If | then / else |
| While、Do…While | then(本体) |
| Assert | then(成功)/ else(失敗) |
| Retry | attempt / exhausted |
| Schema validate | valid / invalid / errors |
| Switch | ケースごとに 1 つ、加えて default |
| Socket.IO 接続 | 宣言したイベントごとに 1 つ、加えて others |
接続のセレクター
Section titled “接続のセレクター”接続は セレクター を持てます。通過中の値に適用されるパスです。
data.items[0].idbody['user-id']headers["content-type"]statusa.b、a[0]、a['key']、a["key"] の形が使えます。JSON を含むセグメントはその場で
解析され、何にも一致しないパスは undefined になります。
Restorm は配線の時点で セレクターを自動的に推測することがあります。ソースの 静的なプレビューが単一のプリミティブ値に収まる場合です。推測された内容は、いつでも 置き換えたり空にしたりできます。