Sequential Loopノードは、ある条件を満たしている間、逐次的にノードインスタンスを生成します。Activityノード、SubprocessノードおよびCompound ActivityノードをSequential Loopノードに定義できます。
Sequential Loopノードを定義する方法について説明します。
Sequential Loopノードとして定義したいノードを選択します。
[プロパティ]ビューの[一般]タブで、[Looping]の[Sequential Loop]を選択します。
ノードインスタンスを生成する繰り返しの条件と最大繰り返し回数を、以下の方法で設定します。
繰り返し条件を設定する場合は、[条件]チェックボックスをオンにして、条件とするJavaScript式を入力します。フィールドに直接入力することも、[式の作成]ダイアログを使用して作成することもできます。入力した繰り返し条件が真(有効)の間、ノードインスタンスを生成します。
注意
条件はノードインスタンスの生成の前に評価されます。条件が1回目から偽の場合、ノードインスタンスは1つも生成されません。
最大繰り返し回数を設定する場合は、[カウント]チェックボックスをオンして、フィールドに数値を入力するか、ドロップダウンリストからINTEGER型のユーザ定義属性を選択します。入力した数値、または選択されたユーザ定義属性の整数値が、生成するノードインスタンス数とみなされます。最大繰り返し回数のカウンタは、加算か減算かを選べます。
[カウンタ加算]を選択した場合、繰り返し回数のカウンタは1から始まり最大繰り返し回数の値まで増加していきます。繰り返し回数のカウンタが最大繰り返し回数になったときにループが終了します。
[カウンタ減算]を選択した場合、繰り返し回数のカウンタは最大繰り返し回数の値から始まり1まで減少していきます。繰り返し回数のカウンタが1になったときにループが終了します。
注意
繰り返しの条件と最大繰り返し回数のカウントは、どちらか一方、または両方を指定できます。両方を指定した場合は、どちらかの条件に達したときにループが終了します。
どちらも指定されない場合、選択されたノードはSequential Loopノードとして定義されません。
繰り返しノードインスタンスを実行している間の例外処理をドロップダウンリストから選択します。
[プログラムに基づいて例外を処理する]: ノードの例外処理設定に応じて、例外は処理されます。詳細は“例外処理オプションの動作”を参照してください。
[無視してループを続ける]:エラーを無視してループを続行します。
[ループを抜ける]:ループを終了します。
以下の例ではSequential Loopで[条件]と[カウント]の両方を定義しています。
図6.25 Sequential Loopの定義
注意
Sequential Loopノードから引ける矢印(外向きの矢印)の数は1つだけです。
Sequential Loopノードを定義したActivityノードに、期限、またはタイマーを設定することはできません。
Sequential Loopノードを無効にするには、[Looping]で[なし]を選択してください。
Sequential Loopノードは、丸い矢印で表現されます。Sequential Loopノードとして定義した、Activityノード、SubprocessノードおよびCompound Activityノードを以下に示します。
図6.26 Activity ノード
図6.27 Subprocess ノード
図6.28 Compound Activity ノード
例外処理オプションの動作
以下の表に、ActivityノードをSequential Loopノードとして使用し、指定された例外処理が実行された際のループの動作、プロセスインスタンスおよびループノードインスタンスの状態を示します。
エラーが発生した処理 | 指定した例外処理 | ループの動作 | ループノードインスタンスの状態 | プロセスインスタンスの状態 |
---|---|---|---|---|
開始アクション | プログラムに基づいて例外を処理する | エラーが発生したループノードインスタンスで停止 | エラー | エラー |
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続 | 終了 | 実行中 | |
ループを抜ける | ループを抜け、次のノードを活性化 | 中止 | 実行中 | |
終了アクション | プログラムに基づいて例外を処理する | 選択操作の失敗 | 実行中 | 実行中 |
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続 | 終了 | 実行中 | |
ループを抜ける | ループを抜け、次のノードを活性化 | 中止 | 実行中 |
以下の表に、SubprocessノードをSequential Loopノードとして使用し、指定した例外処理が実行された際のループの動作、プロセスインスタンスおよびループノードインスタンスの状態を示します。
エラーが発生した処理 | 指定した例外処理 | ループの動作 | ループノードインスタンスの状態 | 親プロセスの状態 | 子プロセスの状態 |
---|---|---|---|---|---|
開始アクション | プログラムに基づいて例外を処理する | エラーが発生したループノードインスタンスで停止 | エラー | エラー | 作成されない |
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続 | 終了 | 実行中 | 作成されない | |
ループを抜ける | ループを抜け、次のノードを活性化 | 中止 | 実行中 | 作成されない | |
終了アクション | プログラムに基づいて例外を処理する | エラーが発生したループノードインスタンスで停止 | 一時停止 | エラー | 一時停止 |
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続 | 終了 | 実行中 | 終了 | |
ループを抜ける | ループを抜け、次のノードを活性化 | 中止 | 実行中 | 終了 |
以下の表に、Compound ActivityノードをSequential Loopノードとして使用し、指定した例外処理が実行された際のループの動作、プロセスインスタンスおよびループノードインスタンスの状態を示します。
エラーが発生した処理 | 指定した例外処理 | ループの動作 | ループノードインスタンスの状態 | プロセスインスタンスの状態 |
---|---|---|---|---|
開始アクション | プログラムに基づいて例外を処理する | エラーが発生したループノードインスタンスで停止、Compound Activityノードの子ノードのインスタンスがそのまま残ります。 | エラー | エラー |
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続、Compound Activityノードの子ノードのインスタンスがそのまま残ります。 | 終了 | 実行中 | |
ループを抜ける | ループを抜け、次のノードを活性化、Compound Activityノードの子ノードのインスタンスがそのまま残ります。 | 中止 | 実行中 | |
終了アクション | プログラムに基づいて例外を処理する | すべての子ノードインスタンスの完了によってCompound Activityノードが正常終了した場合、ループはその特定のループノードインスタンスで停止となり、Compound Activityノードおよびその有効な子ノードの状態は一時停止となります。 | 一時停止 | エラー |
Compound Activityノードのワークアイテムを選択すると、エラーとなります。 | サブプロセスで待機 | 実行中 | ||
エラーを無視してループを続ける | ループ条件、ループカウントの上限値の設定に従いループを継続、子ノードインスタンスの状態は以下のとおりです。
| 終了 | 実行中 | |
ループを抜ける | ループを抜け、次のノードを活性化、子ノードインスタンスの状態は以下のとおりです。
| 中止 | 実行中 |