4.2.17 JavaScript実行部品
機能
JSON形式の文字列を変換するためのJavaScriptコードを実行できます。指定したJavaScriptコードでは,サービスプロパティと部品プロパティの値を参照できます。また,「underscore.js 1.8.3」の関数が使用できます。
なお,JavaScriptコードで「print関数」を使用すると,JavaScriptコード内の任意の文字列をタスクログに出力できます。このとき,次の接頭語を付加することで,ログレベルを指定できます。例えば,「print("[Debug]xxxx")」のように指定します。接頭語の大文字と小文字は区別します。
-
[Severe]
print関数で指定した文字列は,ログレベルが0以上のときに出力されます。
-
[Information]
print関数で指定した文字列は,ログレベルが10以上のときに出力されます。
-
[Fine]
print関数で指定した文字列は,ログレベルが20以上のときに出力されます。
-
[Finer]
print関数で指定した文字列は,ログレベルが30以上のときに出力されます。
-
[Debug]
print関数で指定した文字列は,ログレベルが40のときに出力されます。
-
指定なし
print関数で指定した文字列は,ログレベルが10以上のときに出力されます。
注意事項
-
スクリプトはUTF-8で指定してください。また,無名関数を指定してください。
-
スクリプト内で例外をスローした場合,または例外が発生した場合は,部品は異常終了となります。また,例外が発生した場合,ログレベルが30以上のときは,スタックトレースがタスクログに出力されます。
-
スクリプトが正常終了し,次の値に「null」や「undefined」が含まれていた場合,「null」や「undefined」が文字列として出力プロパティに格納されます。
-
スクリプトからリターンされた値
-
スクリプト内で部品の出力プロパティに設定した値
-
-
部品の実行中にタスクを実行停止した場合は,JavaScript実行部品の処理が完了してからタスクの状態が「失敗」または「正常終了」になります。部品の実行が終了したときのステップおよびタスクの状態は,ステップの戻り値および後続ステップ実行条件によって決まります。後続ステップ実行条件は,[ステップ作成]ダイアログボックスまたは[ステップ編集]ダイアログボックスで設定できます。
-
部品の実行中にタスクを強制停止した場合は,実行中の処理が直ちに終了され,タスクの状態が「失敗」になります。なお,[タスク]画面の[フロー]エリアに表示されるステップの戻り値は,80になります。タスクログに出力される戻り値は,強制停止したタイミングによって異なります。
バージョン
01.00.03
タグ
Execute Script
戻り値
戻り値 |
説明 |
---|---|
0 |
正常に終了した。 |
1 |
JavaScriptコードが,出力プロパティ「notify」に空文字以外を指定して終了した。 |
60 |
JavaScriptライブラリの読み込みに失敗した。 |
61 |
JavaScriptコードのコンパイルに失敗した。 |
62 |
JavaScriptコードが関数型ではない。 |
63 |
内部エラーが発生した。 |
80 |
タスクの実行を停止した。 |
プロパティ一覧
プロパティを次の表に示します。
プロパティキー |
プロパティ名 |
説明 |
デフォルト値 |
入出力種別 |
必須区分 |
---|---|---|---|---|---|
scriptBody |
スクリプト本体 |
JavaScriptコードを指定します。 |
− |
入力 |
○ |
importedScript |
インポートスクリプト |
同一サービステンプレート上に配置したほかのJavaScript実行部品と共通で使用するメソッドや定数(JavaScriptのコード文字列)を指定します。 |
− |
入力 |
△ |
arg0 |
スクリプト引数(0) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg0」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg1 |
スクリプト引数(1) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg1」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg2 |
スクリプト引数(2) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg2」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg3 |
スクリプト引数(3) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg3」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg4 |
スクリプト引数(4) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg4」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg5 |
スクリプト引数(5) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg5」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg6 |
スクリプト引数(6) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg6」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg7 |
スクリプト引数(7) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg7」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg8 |
スクリプト引数(8) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg8」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
arg9 |
スクリプト引数(9) |
JavaScriptコードに渡す引数を指定します。JavaScriptコードに「arg9」を指定すると,プロパティに指定した値が代入されます。 |
− |
入力 |
△ |
notify |
通知フラグ |
指定したJavaScriptコードで異常を検知した場合,部品を異常終了させたいときは空文字以外を指定します。 スクリプトの実行後にこの値が空文字以外であれば,部品の戻り値に1を返却します。 |
− |
出力 |
△ |
returnValue |
スクリプト戻り値 |
指定したスクリプトの関数内で,返却されたオブジェクトの内容が出力されます。 |
− |
出力 |
△ |
out0 |
スクリプト出力(0) |
指定したスクリプト内で,第2引数のMapに「out0」として設定された値が出力されます。 |
− |
出力 |
△ |
out1 |
スクリプト出力(1) |
指定したスクリプト内で,第2引数のMapに「out1」として設定された値が出力されます。 |
− |
出力 |
△ |
out2 |
スクリプト出力(2) |
指定したスクリプト内で,第2引数のMapに「out2」として設定された値が出力されます。 |
− |
出力 |
△ |
out3 |
スクリプト出力(3) |
指定したスクリプト内で,第2引数のMapに「out3」として設定された値が出力されます。 |
− |
出力 |
△ |
out4 |
スクリプト出力(4) |
指定したスクリプト内で,第2引数のMapに「out4」として設定された値が出力されます。 |
− |
出力 |
△ |
out5 |
スクリプト出力(5) |
指定したスクリプト内で,第2引数のMapに「out5」として設定された値が出力されます。 |
− |
出力 |
△ |
out6 |
スクリプト出力(6) |
指定したスクリプト内で,第2引数のMapに「out6」として設定された値が出力されます。 |
− |
出力 |
△ |
out7 |
スクリプト出力(7) |
指定したスクリプト内で,第2引数のMapに「out7」として設定された値が出力されます。 |
− |
出力 |
△ |
out8 |
スクリプト出力(8) |
指定したスクリプト内で,第2引数のMapに「out8」として設定された値が出力されます。 |
− |
出力 |
△ |
out9 |
スクリプト出力(9) |
指定したスクリプト内で,第2引数のMapに「out9」として設定された値が出力されます。 |
− |
出力 |
△ |
スクリプト本体で指定できるJavaScriptコードの引数
JavaScriptコードとして次の引数を指定できます。
- serviceProperties(object型)
-
サービスの入力プロパティの値をマッピングできます。なお,スクリプトがこの引数の値を変更しても,サービスプロパティには反映されません。
- pluginProperties(object型)
-
JavaScript実行部品のプロパティの値をマッピングできます。
-
arg0〜arg9
部品プロパティに指定した値がマッピングされます。このとき,オブジェクトではなく文字列として取得されます。
-
notify
スクリプト内でこのメンバに空文字以外の値を設定すると,部品は戻り値1を返却します。
-
out0〜out9
スクリプト内でこのメンバに値を設定すると,部品プロパティ「out0」〜「out9」に値が反映されます。
-
- arg0〜arg9
-
部品プロパティ「arg0」〜「arg9」に指定した値がマッピングされます。このとき,JSON型の文字列を指定すると,オブジェクトとして取得されます。
引数は,「serviceProperties(object型)」,「pluginProperties(object型)」,「arg0〜arg9」の順で指定してください。
JavaScriptコードのサンプル
(function(serviceProperties, pluginProperties, arg0, arg1, arg2) { var obj = new Object(); print("[Debug] Function begin."); obj.mem1 = arg0; obj.mem2 = arg1; if (arg2 == "") { pluginProperties["notify"] = 999; pluginProperties["out1"] = "NOTE!: The arg2 is EMPTY."; } else { obj.mem3 = arg2; obj.status = "success"; pluginProperties["out1"] = "Finished successfully."; } print("[Debug] Function end."); return obj; })
インポートスクリプトについて
同一サービステンプレート上に配置したほかのJavaScript実行部品と共通で使用したいメソッドや定数がある場合,プロパティ「importedScript」に定義します。
プロパティ「importedScript」をサービス入力プロパティにマッピングし,ほかのJavaScript実行部品のプロパティ「importedScript」を同じサービス入力プロパティにマッピングすることにより,インポートスクリプトに定義したメソッドや定数を各JavaScript実行部品のスクリプト本体で共通に使用することができます。
-
スクリプト本体からの参照
インポートスクリプトに定義したメソッドや定数は,スクリプト本体でメソッドや定数を直接呼び出すことで利用できます。
-
インポートスクリプト内で利用可能な関数
スクリプト本体で利用可能な関数がインポートスクリプトでも利用可能です。
インポートスクリプトのサンプル
- スクリプト本体
function fn(serviceProperties, pluginProperties, arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) { hoge(CNST); }
- インポートスクリプト
var CNST = "hoge"; function hoge(a){ print(a + " from common js!"); }