SearchFilter サンプルについて

このサンプルは、Java のユーザー定義メッセージ処理ノードを Filter ノードとして使用する方法の例を示しています。 SearchFilter ノードは、20 の顧客名を含む XML メッセージ内から特定の顧客名を検索します。

下の図は、SearchFilter サンプル・メッセージ・フローを示しています。

この図は、SearchFilter メッセージ・フローを示しています。
SFInput ノードは、SearchFilter ノードと SFFailure ノードに接続されています。
SearchFilter ノードは、SFOutput ノード、NotFound ノード、および SFFailure ノードに接続されています。
NotFound ノードは、SFOutput ノードと SFFailure ノードに接続されています。

SearchFilter ノードは、XML 入力メッセージの内容から、SearchName エレメント内に含まれているストリングを検索します。 以下に例を示します。
<SearchName>
顧客の姓
</SearchName>

検索名が XML 入力メッセージに現れる場合、メッセージの末尾に顧客の氏名が追加されます。 たとえば、"John Smith" が入力メッセージ内の 20 の顧客名の 1 つであり、ストリング "Smith" が SearchName エレメントに含まれている場合、SearchFilter ノードは "John Smith" をメッセージの末尾に追加します。

このサンプルでは、顧客の氏名が検出された場合、それがメッセージに 5 回追加されます。 これは SearchFilter ノードの追加機能を示しています。 以下のコード例は、Java ソース・ファイル com.ibm.broker.ude.samples.SearchFilterNode.java から取られたものであり、顧客名をメッセージに 5 回追加する方法を示しています。

// 検索名が見つかった場合は、<Result> タグを出力メッセージに追加します
if (customerElement.getFirstChild().getValue().equals(searchName)) {
// 検索名が見つかったことを示します
result = true;

// ストリング・バッファーを使用して 5 つのフルネームの連結を構成します
// 通常のストリング連結よりもパフォーマンスが向上します
StringBuffer fiveNames = new StringBuffer();
fiveNames.append(customerElement.getLastChild().getValue());
fiveNames.append(" ");
fiveNames.append(searchName);
fiveNames.append(" ");

searchName = fiveNames.toString();

for (counter = 0; counter < 4; counter++) {
fiveNames.append(searchName);
}

// 新しい <Result> タグを、<Message1> の子として出力メッセージに追加します
newtag = topOfBody.createElementAsLastChild(MbElement.TYPE_NAME, "Result", fiveNames.toString());

terminal = getOutputTerminal("True");
}

Java ソース・ファイル com.ibm.broker.ude.samples.SearchFilterNode.java は、Java プロジェクト UDESampleJavaCode 内にあります。

検索名が XML 入力メッセージ内で見つからない場合、ストリング「Not found」が SearchFilter ノードの LocalEnvironment ツリーに保管されます。 「NotFound」Compute ノードはストリング「Not found」を出力メッセージに追加します。

SearchFilter サンプルは以下のキューを使用します。

ユーザー定義拡張サンプルについて

メインページのアイコン サンプルのホームに戻る