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 ノードの追加機能を示しています。 以下のコード例は、com.ibm.broker.ude.samples.SearchFilterNode.java Java ソース・ファイルから取られたものであり、顧客名をメッセージに 5 回追加する方法を示しています。

// if the search name was found then add <Result> tag to output message
         if (customerElement.getFirstChild().getValue().equals(searchName)) {
            // indicate that the search name has been found
            result = true;
            
            // construct a concatenation of 5 full names using String Buffer
            // as this has improved performance over ordinary String concatenation
            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);
            }
            
            // Add a new <Result> tag to output message as the last child of <Message1>
            newtag = topOfBody.createElementAsLastChild(MbElement.TYPE_NAME, "Result", fiveNames.toString());            

            terminal = getOutputTerminal("True");
         }

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

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

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

『User-defined Extension サンプルについて』に戻る

サンプルのホームに戻る