WebSphere Message Broker バージョン 8.0.0.5 オペレーティング・システム: AIX、HP-Itanium、Linux、Solaris、Windows、z/OS

製品の最新バージョンについては、IBM Integration Bus バージョン 9.0 をご覧ください。

Filter ノード

メッセージ内容に従ってメッセージをルーティングするには、Filter ノードを使用します。

このトピックには、以下のセクションが含まれています。

目的

メッセージがたどる経路を定義するフィルター式を ESQL 内に作成します。 フィルター式には入力メッセージまたはメッセージ・プロパティーのエレメントを含めることができますし、外部データベースに保持されているデータを使用して式を完成させることもできます。 メッセージがルーティングされる出力ターミナルは、フィルター式が true、false、または unknown のいずれに評価されるかによって異なります。

フィルター操作の結果として発生するすべての状態に対応するターミナルを接続します。 接続されていないターミナルにノードからメッセージを伝搬すると、トランザクションであってもメッセージは廃棄されます。

Filter ノードは、 Compute ノードや Database ノードと同じ方法で、ESQL ステートメントを受け入れます。 実行される最後のステートメントは、式がブール値に評価される RETURN <expression> ステートメントでなければなりません。 このブール値は、メッセージがルーティングされるターミナルを決定します。 多くの場合、ルーティング・アルゴリズムはメッセージ・フィールド値の単純な比較です。 比較は式によって記述され、RETURN ステートメントが唯一のステートメントになります。 式を指定せずに RETURN をコード化したり (RETURN;)、ヌル式を指定したりすると、ノードはメッセージを Unknown ターミナルに伝搬します。

さらに複雑なルーティング・オプションが必要なメッセージ・フローの場合は、 RouteToLabel および Label ノードを使用します。

Filter ノードはパレットの「ルーティング」ドロワーに含まれていて、WebSphere® Message Broker Toolkit 内では次のアイコンによって表されます。

Filter ノード・アイコン

メッセージ・フロー内でのこのノードの使用

このノードの使用方法の例に関しては、次のサンプルを参照してください。

サンプルに関する情報は、WebSphere Message Broker Toolkit に統合されているインフォメーション・センター、またはオンライン・インフォメーション・センターを使用する場合にのみ表示できます。 サンプルは、WebSphere Message Broker Toolkit に統合されているインフォメーション・センターを使用する場合にのみ実行できます。

10 の選択肢がある質問が含まれるオンライン・テストを作成したという状況について考慮します。 着信するそれぞれのメッセージには、候補者の名前と住所に続けて一連の応答が含まれています。 それぞれの応答は検査され、正しい場合には、フィールド SCORE に 1 が増分されます。 すべての応答が検査されると、フィールド SCORE は 5 より大きいかどうか調べるためにテストされます。 5 より大きい場合には、 Filter ノードは、成功した候補者入力を処理するフローにメッセージを伝搬し、そうでない場合には、メッセージはフィルターに掛けられて拒否プロセスに送られ、拒否メッセージが作成されます。

ターミナルおよびプロパティー

Filter ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。 値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。

Filter ノードのターミナルについては、次の表に説明されています。

ターミナル 説明
In ノードが処理するメッセージを受け入れる入力ターミナル。
Failure 計算時に障害が検出された場合、メッセージがルーティングされる出力ターミナル。
Unknown 指定されたフィルター式が unknown またはヌル値に評価された場合にメッセージがルーティングされる出力ターミナル。
False 指定されたフィルター式が false に評価された場合にメッセージがルーティングされる出力ターミナル。
True 指定されたフィルター式が true に評価された場合にメッセージがルーティングされる出力ターミナル。

以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルト値が定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。C の見出しの列は、プロパティーが構成可能 (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できる) かどうかを示します。

Filter ノードの「説明」プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明
ノード名 いいえ いいえ ノード・タイプ ノードの名前。
簡略説明 いいえ いいえ   ノードの簡単な説明
詳細説明 いいえ いいえ   メッセージ・フロー内のノードの目的を説明するテキスト

Filter ノードの「基本」プロパティーについては、次の表に説明されています。

プロパティー M C デフォルト 説明 mqsiapplybaroverride コマンド・プロパティー
データ・ソース いいえ はい   このノードに関連付けられた ESQL (「フィルター式」プロパティーで識別される) で参照する表が含まれるデータベースの ODBC データ・ソース名。 この名前は、このメッセージ・フローが実行されるシステム上で該当するデータベースを識別します。 ブローカーは、mqsicreatebrokermqsichangebroker、または mqsisetdbparms コマンドを使用してセットアップしたユーザー ID およびパスワード情報を使用して、このデータベースに接続します。

z/OS platformz/OS® システムの場合、ブローカーは、ブローカーが開始するタスクの ID を使用するか、または mqsisetdbparms コマンド JCL の、カスタマイズ・データ・セット <hlq>.SBIPPROC の BIPSDBP で指定されたユーザー ID とパスワードを使用します。

このノードに関連する ESQL に PASSTHRU ステートメントまたは SELECT 関数およびデータベース参照が含まれている場合には、「データ・ソース」プロパティーの値を指定する必要があります。

dataSource
トランザクション はい いいえ 自動 ノードのトランザクション・モードです。 値は以下のとおりです。
  • 「自動」(デフォルト)。 Filter ノードが属するメッセージ・フローが正常に行われると、そのメッセージ・フローがコミットされます。 つまり、ESQL モジュールで定義したアクションが実行され、メッセージはメッセージ・フローを通して継続します。 メッセージ・フローは、失敗するとロールバックされます。 そのため、「自動」を選択した場合、データベース上で Filter ノードのアクションをコミットするかロールバックするかは、メッセージ・フロー全体の成功または失敗に依存します。
  • 「コミット」。 メッセージ・フロー全体の成功または失敗に関係なく、このノードに接続しているデータベースのこのメッセージ・フローで実行されたコミットされていないアクションをコミットする場合は、「コミット」を選択します。 メッセージ・フロー自体が失敗しても、データベースへの変更はコミットされます。
 
フィルター式 いいえ いいえ Filter ノードで受信したメッセージに対して実行するステートメントを含む、ESQL リソース (ファイル) 内のモジュールの名前。デフォルトで <message_flow_name>.esql という名前を持つこの ESQL ファイルには、ESQL を必要とするメッセージ・フロー内のすべてのノード用の ESQL が含まれています。 特定のノードに関連したコードの部分はモジュールと呼ばれます。 モジュール名に 1 つ以上のスペースを含めるには、 「フィルター式」プロパティーで、それを二重引用符で囲みます。

Filter ノードの動作をカスタマイズするための ESQL ステートメントは、 この Filter ノードのインスタンスが含まれるメッセージ・フローに関連付けられた ESQL ファイル内にコーディングします。

このメッセージ・フロー用の ESQL ファイルが存在していない場合、Filter ノードをダブルクリックするか、 そのノードを右クリックしてから「ESQL のオープン」をクリックし、ESQL エディター・ビューに新しい ESQL ファイルを作成してオープンします。

ファイルが既に存在する場合には、「フィルター式」プロパティーの近くにある「参照」をクリックすると「モジュール選択」ダイアログ・ボックスが表示され、 このメッセージ・フローで使用可能な ESQL ファイルで定義されている、 使用可能な Filter ノード・モジュールがリストされます (ESQL ファイルは従属する他のプロジェクトで定義することができます)。 適切なモジュールを選択して、「OK」をクリックします。使用できる適切なモジュールがない場合は、リストは空になります。

指定するモジュールが存在しない場合、モジュールが作成されて、エディターに表示されます。 ファイルとモジュールが既に存在する場合、エディターは正しいモジュールを強調表示します。

新規または既存の ESQL ファイル内でこのノード用にモジュール・スケルトンが作成された場合、以下の ESQL が含まれます。 この例では、デフォルトのモジュール名が表示されています。

CREATE FILTER MODULE <flow_name>_Filter
       CREATE FUNCTION Main() RETURNS BOOLEAN
       BEGIN
               RETURN TRUE; 
       END;
END MODULE;

自分で ESQL モジュールを作成する場合、このスケルトンを正確に作成する必要があります。 デフォルトの名前を更新することができますが、指定する名前は、 対応するノード・プロパティー「フィルター式」と一致することを確認してください。

このノードをカスタマイズするには、BEGIN ステートメントと RETURN ステートメントの間に独自の ESQL を追加します。 RETURN ステートメントの式が TRUE または FALSE ではない場合、メッセージが伝搬されるターミナルを決定するためにその値は解決されます。 式が解決されてヌル値になったり、RETURN; をコード化したり、または RETURN ステートメントを省略する場合、ノードはメッセージを Unknown ターミナルに伝搬します。

 
       

このモジュールでは、 SET、WHILE、DECLARE、および IF を含む ESQL ステートメントすべてを使用できますが、 (Compute ノードとは異なり) Filter ノードは、 入力ターミナルで受信したメッセージを変更せずに出力ターミナルに伝搬します。 ですから、Database ノードと同様に、 Filter ノードには参照されるメッセージが 1 つしかないということです。

Filter ノードで使用する ESQL 相関名は、 Compute ノードで使用されるものとは異なります。 相関名について詳しくは、関連リンクを参照してください。

メッセージのどのような部分も変更できないため、割り当てステートメント (INSERT ステートメントの SET 文節ではなく、SET ステートメント) では、一時的な変数への値の割り当てしか行うことができません。 したがって、割り当てステートメントで行えるアクションの有効範囲は限られています。

 
警告をエラーとして扱う はい いいえ 選択されていない データベース警告メッセージをエラーとして扱い、ノードからの出力メッセージを Failure ターミナルに伝搬するには、「警告をエラーとして扱う 」を選択します。 最初、このチェック・ボックスはチェックされていません。

このチェック・ボックスを選択した場合、ノードはデータベースからのすべての正の戻りコードをエラーとして扱い、負の戻りコードに対する処理と同じ方法で例外を生成するか、問題がより重大である場合はエラーを生成します。

このチェック・ボックスを選択しなかった場合、ノードは警告を通常の戻りコードとして扱い、例外を生成しません。 生成される最も重大な警告は「見つかりません」であり、これはほとんどの環境で正常な戻りコードとして支障なく扱うことができます。

 
データベース・エラーで例外をスローする はい いいえ 選択されている データベース・エラーが検出されたときにブローカーが例外を生成するように設定する場合は、「データベース・エラーで例外をスローする」を選択します。 最初、このチェック・ボックスは選択されています。

このチェック・ボックスのチェックを外す場合、データベース呼び出しを行うたびに返される可能性のあるデータベース・エラーを調べるために ESQL を含める必要があります (これには SQLCODE および SQLSTATE を使うことができます)。 エラーが発生した場合、メッセージ・フロー内のエラーを処理してブローカーとデータベースの整合性を確認する必要があります。ブローカーによるデフォルト・エラー処理を呼び出さないように選択してあるため、自分でエラーを処理しない限り、エラーは無視されます。 例えば、このノードで例外をスローするために ESQL THROW ステートメントを含めることができます。 あるいは、Throw ノードを使用して後で独自の例外を生成することができます。

 

フロー開始前に接続

いいえ

はい

選択されていない

デフォルトでは、メッセージ・フロー内で必要とされるときに、ブローカーがデータ・ソースに接続します。

このチェック・ボックスを選択すると、メッセージ・フローの処理中ではなく、フローがメッセージを受け取るよりも前にデータ・ソース接続が行われます。

 
ノードのモニター・プロパティーが、次の表に説明されています。
プロパティー M C デフォルト 説明
イベント いいえ いいえ なし ノードに対して定義したイベントが、このタブに表示されます。 デフォルトでは、メッセージ・フローのどのノードに対してもモニター・イベントは定義されません。 ノードのモニター・イベントを作成、変更、または削除するには、「追加」「編集」、および「削除」を使用します。詳しくは、モニター・プロパティーを使用したモニター・イベント・ソースの構成を参照してください。

「使用可能」チェック・ボックスを選択またはクリアすることによって、ここに表示されているイベントを使用可能および使用不可に設定できます。

特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        最終更新:
        
        最終更新: 2015-02-28 17:45:27


参照トピック参照トピック | バージョン 8.0.0.5 | ac04780_