<branch>
構文
<branch condition="myVar='1'" label="JumpToMe" />
詳細
属性または要素 | 説明 | 値 |
---|---|---|
condition 属性 | 必須項目。この式が真の場合、指定した <label> に制御フローがジャンプします。 | 整数値 1 (真の場合) または 0 (偽の場合) を求める式。この式では、この属性が含まれる <process> 要素で指定されているスクリプト言語を使用する必要があります。 |
label 属性 | 必須項目。ジャンプ先となる <label> の名前。 | 0 ~ 255 文字の文字列。 |
name、disabled、xpos、ypos、xend、yend 属性 | "一般的な属性と要素" を参照してください。 | |
<annotation> 要素 |
説明
<branch> 要素の condition 式が真の値の場合、実行フローが即座に変更されます。<branch> の label 属性に値として名前が指定されている <label> 要素に制御が渡されます。
以下の BPL 例では、condition 式が真の場合、condition 値が TraceSkipped である <branch> から、name 値が TraceSkipped である <label> に直接制御が渡されます。この間にある <trace> 要素は無視されます。
<branch condition="myVar='1'" label="TraceSkipped" /> <trace value="Ignore me when myVar is 1..." /> <label name="TraceSkipped" />
<branch> の condition 式が偽の場合は、<branch> の次に記述されている BPL 文に制御が渡されます。つまり、上記の例では <trace> に制御が移ります。
ジャンプ先の <label> は、これを参照する <branch> と同じスコープにあることが条件となります。例えば、以下のようになっているとします。
-
<flow> 内の各 <sequence> 要素には、それぞれ異なる <label> スコープが割り当てられます。BPL 実行エンジンでは、現在の <sequence> コンテナの外部にある <label> への <branch> は阻止されます。
-
実行時に実行フローを制御するその他の BPL コンテナ要素についても、同様の制約が適用されます。各コンテナには、それぞれ異なる <label> スコープが割り当てられます。
これらの制約に加え、各 <label> name 値は、現在のスコープ内だけでなく、BPL ビジネス・プロセス全体で一意にする必要があります。
すべてのプログラミング言語に言えることですが、BPL 分岐メカニズムの使用時には注意が必要です。BPL エディタは、無限ループや無効な分岐といった基本的なプログラミング・エラーを防ぐことができません。