コンテンツにスキップ

ポートと接続

ポートを理解することは、ボックスがいつ実行されるのかを理解することです。この ページはそのモデルのリファレンスです。

すべてのボックスが持っていますが、設定には現れません。

ポート向きフロー役割
in入力シグナルトリガー。複数 の入力接続を受け付けます
error出力値 + シグナル失敗ルート
done出力シグナルボックス とその下流のサブグラフ全体 が完了したあとに発火します

error ポートを持たないボックスが 3 つあります。出力現在、そして Retry(最後のものはそれ自体がエラー境界です)。done を持たないものは 2 つで、 出力Throw です。

フローイメージ振る舞い
データ値を運びます。トリガーも兼ねます
シグナル合図何も運ばず、発火させるだけです
両方値を運び、かつ 発火させます

禁じられている組み合わせは 1 つだけ です。純粋なシグナル の出力から 純粋な値 の入力へ、という接続です。値に入れるものが何もありません。

any · json · number · string · boolean · duration · response · status · list · object

型付けは主に見た目の分かりやすさのためですが、1 つだけ厳格な例外があります。 リスト 型の入力(リストに追加リストから削除 アクションの list ポート)は、 リストと互換性のないソースを拒否します。jsonlist は互いに互換ですが、 単純な object は互換ではありません。

  • 入力ポートは接続を 1 本しか受け付けません。 これがグラフを読みやすくして います。値は 1 つ、出どころも 1 つです。
  • in は例外 で、望むだけの接続を受け付けます。
  • 出力 は、望むだけの入力に値を供給できます。

順序のあるルールが 3 つあります。

  1. ルートから始まります。 入力接続を持たないボックスは、シナリオの起動時に 着火されます。「開始」ボックスというものはありません。
  2. 配線された入力だけが待たれます。 ボックスは、実際につながっている 各 入力ポートが値を受け取った時点で実行されます。配線されていないポートが待たれる ことはありません。値は記憶され続けます。入力は最後に受け取った値を保持します。
  3. in ポートはバリアになります。 複数の接続から供給されている場合、すべて が届くのを待ってから 一度だけ 発火します。このモデルにおける「この 3 つの 分岐が終わるまで待つ」に当たります。

例外:受信したイベントごとに再実行する

Section titled “例外:受信したイベントごとに再実行する”

受信したイベントごとに再実行」オプション(ボックスのコンテキストメニュー)は、 配線されたすべての入力をブロックしない「or」ゲートに変えます。ボックスは、どのポート であれ値を受け取る たびに 再び発火します。

用途は 2 つです。ストリームをメッセージごとに処理すること、そして完了サイクル (自分自身に戻ってくるグラフ)の行き詰まりを解消することです。

実際にいちばん役立つ区別です。

  • 値の出力 は、ボックスが結果を生み出した時点で発火します。
  • done はさらに、その結果を消費するすべて が終わるのを待ちます。

順序をつけたいとき ——「これを全部やってから片づける」—— は done から配線します。 データを渡したいときは値の出力から配線します。

これは別立ての仕組みではありません。役割を担った出力ポートであり、その役割が色を 決めています。

ボックス出力
Ifthen / else
WhileDo…Whilethen(本体)
Assertthen(成功)/ else(失敗)
Retryattempt / exhausted
Schema validatevalid / invalid / errors
Switchケースごとに 1 つ、加えて default
Socket.IO 接続宣言したイベントごとに 1 つ、加えて others

接続は セレクター を持てます。通過中の値に適用されるパスです。

data.items[0].id
body['user-id']
headers["content-type"]
status

a.ba[0]a['key']a["key"] の形が使えます。JSON を含むセグメントはその場で 解析され、何にも一致しないパスは undefined になります。

Restorm は配線の時点で セレクターを自動的に推測することがあります。ソースの 静的なプレビューが単一のプリミティブ値に収まる場合です。推測された内容は、いつでも 置き換えたり空にしたりできます。