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" }
}
}


- 入力
- {"name":"Ada"}
- 想定される結果
- {"message":"Hello, Ada!"}
- 実行前の準備
- インポートや実行には Open Flow サービスが必要です。プレビュー自体はオフラインで動作します。
ランタイムの制限
対応する Node 組み込みモジュールは互換サブセットです。各タスクには /tmp を起点とする新しいメモリ内ファイルシステムが用意されます。ホストのディスクにはアクセスできず、次の呼び出しにも残りません。任意のパッケージ、動的インポート、CommonJS の require は使えません。
Connector のアクション、ワークフロー呼び出し、HTTP ホストは、Code の機能として明示的に宣言します。context.fetch は宣言済みホストと現在の Engine Contract に制限されます。プラットフォームの認証情報を継承せず、無制限のネットワーク接続も許可しません。
永続的な結果と失敗
業務出力は JSON で返します。実行に属するバイトデータには Artifact インターフェースを、実行間の業務値には明示的な Flow State を使います。仮想ファイルやローカルのグローバル変数は永続ストレージではありません。
Code はタスク再試行とエラー処理に対応します。再試行はモジュール全体を繰り返すため、外部操作も重複する場合があります。リソース制限、取消し、結果不明の扱いはランタイム仕様に従います。