If #
Ifコンポーネントは、[ condition ]プロパティに設定したスクリプトにより真偽判別し、後のワークフローの挙動を変化させるために用います。
真の場合はnext(緑)に指定されたコンポーネント、偽の場合はelse(紫)に指定されたコンポーネントを
後続タスクとして登録して終了します。
Ifコンポーネントのプロパティは以下です。
プロパティ | 入力値 | プロパティ説明 |
---|---|---|
name | 文字列 | コンポーネント名 |
description | 文字列 | コンポーネントの説明文 |
inputFiles | ファイルまたはディレクトリ名 | 先行コンポーネントから受け取るファイル |
outputFiles | ファイル, ディレクトリ名またはglobパターン | 後続コンポーネントへ渡すファイル |
condition | ファイル名,またはJavascriptの式 | 条件判定を行うスクリプトのファイル名、またはJavascriptの式 *1 |
state clean | ボタン | コンポーネントの進行状態を初期状態に戻す *2 |
*1 conditionに指定されたスクリプトの終了コードが0の場合は真、それ以外の場合は、偽と判定して後続のノードへ遷移します。
ただし、conditionに指定された文字列と一致するファイルが存在しなかった場合は、Javascriptの式とみなしてそのコードを実行します。
この場合、実行結果がtruthyな値の場合を真、falseyな値の場合を偽とします。
また、Javascriptの式には、予約済環境変数$WHEEL_CURRENT_INDEX
(ループ系コンポーネントのループカウンタインデックス)が使用できます。
*2 コンポーネントの進行状態が"finished"もしくは"failed"の時のみ表示されます。
Ifコンポーネントの使用例 #
サンプルでは、calcTaskコンポーネントにより三角形の面積を計算し、その計算結果を元にsampleIfコンポーネントにて真偽判定を行います。
面積が20より大きい場合、trueTaskコンポーネントを、小さい場合、falseTaskコンポーネントを実行します。
(true/falseTaskは、“true”/"false"を標準出力するTaskです。)
このワークフローは下記の処理を行います。
- calcTaskコンポーネントにより、面積算出ソルバーを実行する
- 実行結果をifコンポーネントに渡す
- sampleIfコンポーネントで設定したスクリプトにより結果ファイルの真偽を判定する
- 真偽判定を踏まえ、trueTask, falseTaskのいずれかを実行する
ワークフロー構成図 #
各コンポーネントのプロパティ #
calkTask(Taskコンポーネント)
プロパティ名 | 設定値 |
---|---|
Name | calcTask |
Script | calc.sh |
InputFiles | - |
OutputFiles | result.txt *1 |
Remotehost | localhost |
Files | calc.sh, wheel_tutorial_solver.cc, inputdata.txt |
*1 計算結果データ
・calc.sh #
#!/bin/bash
g++ wheel_tutorial_solver.cc -o wheel_tutorial_solver
./wheel_tutorial_solver
exit 0
trueTask(Taskコンポーネント)
プロパティ名 | 設定値 |
---|---|
Name | trueTask |
Script | true.sh |
InputFiles | - |
OutputFiles | - |
Remotehost | localhost |
Files | true.sh |
・true.sh #
#!/bin/bash
echo true
exit 0
falseTask(Taskコンポーネント)
プロパティ名 | 設定値 |
---|---|
Name | falseTask |
Script | false.sh |
InputFiles | - |
OutputFiles | - |
Remotehost | localhost |
Files | false.sh |
・false.sh #
#!/bin/bash
echo false
exit 0
sampleIf(ifコンポーネント)
プロパティ名 | 設定値 |
---|---|
Name | sampleIf |
InputFiles | input.txt |
OutputFiles | - |
Condition | condition.sh |
Files | condition.sh |
・condition.sh #
#!/bin/bash
result=$(cut -f 2 -d "=" input.txt)
echo $result
if [ $result -gt 20 ] ; then
exit 0
else
exit 1
fi