このページの内容

JavaScript スクリプト

隔離された JavaScript モジュールで入力を変換し、明示的に定義した出力を返します。

JavaScript ノードは、データ変換、計算、対応する機能呼び出しの組み合わせに使います。変換なしの単一 HTTP 呼び出しなら、HTTP Request の方が少ない設定で済みます。

モジュールとポート

Code は ES モジュールです。デフォルトのエクスポート関数が (inputs, context) を受け取り、業務出力またはその Promise を返します。

export default ({ name, prefix }) => ({
  message: `${prefix}, ${name}!`
});

config.outputs で独自の出力スキーマを定義します。名前付き入力は直接バインドでき、必要なら config.inputs で制約を指定します。モジュール ID とランタイムの組み立ては公開インターフェースが管理します。

{
  "op": "node.add", "as": "greet", "type": "code", "name": "Compose greeting",
  "code": "export default ({name, prefix}) => ({message: `${prefix}, ${name}!`});",
  "config": { "outputs": { "message": { "schema": { "type": "string" }, "nullable": false } } },
  "inputs": {
    "name": { "kind": "value", "value": "Ada" },
    "prefix": { "kind": "value", "value": "Hello" }
  }
}
Start が名前を、Value が接頭辞を渡し、Code が組み合わせ、Outputs が最終結果を定義します。

Start が名前を、Value が接頭辞を渡し、Code が組み合わせ、Outputs が最終結果を定義します。
入力
{"name":"Ada"}
想定される結果
{"message":"Hello, Ada!"}
実行前の準備
インポートや実行には Open Flow サービスが必要です。プレビュー自体はオフラインで動作します。
ワークフローをダウンロード

ランタイムの制限

対応する Node 組み込みモジュールは互換サブセットです。各タスクには /tmp を起点とする新しいメモリ内ファイルシステムが用意されます。ホストのディスクにはアクセスできず、次の呼び出しにも残りません。任意のパッケージ、動的インポート、CommonJS の require は使えません。

Connector のアクション、ワークフロー呼び出し、HTTP ホストは、Code の機能として明示的に宣言します。context.fetch は宣言済みホストと現在の Engine Contract に制限されます。プラットフォームの認証情報を継承せず、無制限のネットワーク接続も許可しません。

永続的な結果と失敗

業務出力は JSON で返します。実行に属するバイトデータには Artifact インターフェースを、実行間の業務値には明示的な Flow State を使います。仮想ファイルやローカルのグローバル変数は永続ストレージではありません。

Code はタスク再試行とエラー処理に対応します。再試行はモジュール全体を繰り返すため、外部操作も重複する場合があります。リソース制限、取消し、結果不明の扱いはランタイム仕様に従います。

参照元

検索