条件分岐(ブランチ)
条件によって処理のフローを分岐させたいときは、条件分岐用のコンポーネントを使用します。条件で処理を分岐させて、複数方向のいずれか一方にストリームが出力するように設定します。このようなコンポーネントによる条件分岐を、「ブランチ」と呼びます。
BranchStart コンポーネントで条件分岐を設定する
1.対象のフローウィンドウで、パレットの「コントロール」タブから、BranchStartコンポーネント(「条件で分岐します」)をドラッグして配置する
2.BranchStartコンポーネントの右のコネクタから、条件が一致した場合の処理を接続する
3.BranchStartコンポーネントの下のコネクタから、条件が不一致の場合の処理を接続する
HINT
BranchStart コンポーネントでは、条件一致(True)の場合の流れが右方向となります。入力ストリームや各種変数を評価するための条件式を設定すると、結果が True の場合は右方向へ、False の場合は下方向へストリームが出力されます。
BranchStart コンポーネントは、ループの中でも外でも使用可能です。
4.BranchStartコンポーネントをダブルクリックする
5.「条件式プロパティの編集」ダイアログが表示されるので、条件式を入力する
6.「OK」をクリックしてダイアログを閉じる
フローを実行すると、設定した条件式の判定に従って処理が実行されます。
HINT
入力ストリームを判定する条件式
ストリームを判定する条件式の記述には、以下の 3 種類の記述方法のいずれかを使用します。このうち、MQL と RQL は本製品独自の記述方法です。XPath は、W3C 勧告の XPath 仕様に準拠しています。式の種類を特定するためのプレフィックスを、式の前に記述します。プレフィックスは省略可能で、省略した場合はストリーム型が MIME の場合は MQL、XML の場合は XPath、それ以外の場合は RQL で記述されたものと見なされます。なお、条件付きレイヤーで入力する条件式も同様ですが、条件付きレイヤーでは、評価対象として MIME を判定することはできません。
条件式の種類 | 評価対象のストリーム型 | プレフィックス | 説明 |
---|---|---|---|
RQL | すべてのストリーム型 | record: | レコード形式を評価 |
MQL | MIME | mql: | MIME 形式を評価 |
XPath | XML | xpath: | XML 形式を評価 |
条件式の詳細については、BranchStart コンポーネントのヘルプを参照してください。
「コントロール」タブの主なブランチコンポーネント
パレットの「コントロール」タブからはブランチに関して以下のようなコンポーネントを利用できます。
アイコン | コンポーネント名 | メニュー名 |
---|---|---|
Choice | 多分岐処理を開始しま | |
Switch | 値で処理を分岐します | |
SwitchRegexp | 正規表現で処理を分岐します | |
BranchStart | 条件で分岐します | |
BranchByComponentProperty | コンポーネントプロパティの値で分岐します | |
BranchByException | エラーの種別により分岐します | |
BranchByStreamType | ストリームの種別で分岐します | |
BranchEnd | 分岐した処理を合流します |
コンポーネントプロパティの値によって分岐するには
「コントロール」タブの BranchByComponentProperty コンポーネント(「コンポーネントプロパティの値で分岐します」)を使うと、プロパティの値で分岐する処理を設定できます。
Switch コンポーネントで多分岐処理を設定する
1.対象のフローウィンドウで、パレットの「コントロール」タブから、Switchコンポーネント(「値で処理を分岐します」)をドラッグして配置する
2.直前のMapperコンポーネントアイコンをダブルクリックして、マッピングウィンドウを表示する
HINT
Switch コンポーネントでは、文字列の値によって分岐する処理を設定できます。直前に Mapper コンポーネントを配置し、「評価する値」プロパティに、比較対象となる値をマッピングします。同じ文字列が存在しない場合は、一番右のデフォルト出力コネクタに分岐します。
3.「コンポーネント」の「評価する値」へ、比較対象とする入力値をマッピングする
4.フローウィンドウでSwitchコンポーネントアイコンを選択し、インスペクタの「分岐」タブをクリックする
5.入力値と比較する文字列を「値」欄に入力する
6.比較する文字列をすべて「値」欄に入力する
7.それぞれの出力コネクタからの分岐処理に合わせてコンポーネントを配置し、接続線でつなぐ
Switch コンポーネントを設定したフローを実行すると、評価する値と同じ文字列が存在した場合は対応する出力コネクタに分岐し、同じ文字列が存在しない場合は、一番右にある出力コネクタ(「デフォ」と表示されている)に分岐します。
HINT
多分岐処理の設定
Switch コンポーネントでは文字列の値によって多分岐処理を設定しましたが、「コントロール」タブのSwitchRegexp コンポーネント(「正規表現で処理を分岐します」)では、文字列の正規表現を使った多分岐処理が可能です。また、Choice コンポーネント(「多分岐処理を開始します」)では、インデックスによる多分岐処理を設定できます。
入力データの検証結果によって分岐するには
パレットの「ツール」タブの Validation コンポーネント(「入力データのチェック」)を利用すると、入力ストリームに対するバリデーションの結果によって、分岐処理を設定できます。
分岐の待ち合わせ
分岐を待ち合わせるには、「コントロール」タブの BranchEnd コンポーネント(「分岐した処理を合流します」)を使用します。入力するすべてのリンクのストリーム定義が同じである場合、次にマッパーを配置するとマッピング可能になります。ただし、ストリーム定義が異なる場合、マッピングはできません。マッピングする場合で BranchEnd コンポーネントの前に配置したコンポーネントの出力ストリームのフィールド定義を変更したときは、BranchEnd コンポーネントに反映するため、右クリックして表示されるメニューから「ストリーム定義の更新」を行います。
CAUTION
ブランチによって分岐を設定する場合、実行されるのはいずれか一方となるため、その両方に結果を返す終了コンポーネント(EndResponse)を配置できます。ただし、ループとブランチの組み合わせで、ループによって両方のルートが実行される場合には、2 つの EndResponse コンポーネントを配置することはできません。