Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

<branch>

条件に基づいて、実行フローを直接変更します。

Synopsis

<branch condition="myVar='1'" label="JumpToMe" />

詳細

属性または要素 説明
condition 属性 必須項目。この式が真の場合、指定した <label> に制御フローがジャンプします。 整数値 1 (真の場合) または 0 (偽の場合) を求める式。この式では、この属性が含まれる <process> 要素で指定されているスクリプト言語を使用する必要があります。
label 属性 必須項目。ジャンプ先となる <label> の名前。 0 ~ 255 文字の文字列。
namedisabledxposyposxendyend 属性 一般的な属性と要素” を参照してください。  
<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 ビジネス・プロセス全体で一意にする必要があります。

Caution:

すべてのプログラミング言語に言えることですが、BPL 分岐メカニズムの使用時には注意が必要です。BPL エディタは、無限ループや無効な分岐といった基本的なプログラミング・エラーを防ぐことができません。

FeedbackOpens in a new tab