Acerca del ejemplo SearchFilter

Este ejemplo muestra que un nodo de proceso de mensajes en Java definido por el usuario puede usarse como nodo de filtro. El nodo SearchFilter busca un nombre de cliente específico en un mensaje XML que contiene veinte nombres de clientes.

La siguiente figura muestra el flujo de mensajes del ejemplo SearchFilter:

Esta figura muestra el flujo de mensajes SearchFilter. El nodo SFInput está conectado al nodo SearchFilter y al nodo SFFailure. El nodo SearchFilter está conectado al nodo SFOutput, al nodo NotFound y al nodo SFFailure. El nodo NotFound está conectado al nodo SFOutput y al nodo SFFailure.

El nodo SearchFilter busca en el contenido del mensaje de entrada XML una serie de caracteres que está contenida en el elemento SearchName. Por ejemplo:

<SearchName>
Apodo de un cliente
</SearchName>

Si el nombre buscado aparece en el mensaje de entrada XML, el nombre completo del usuario se añadirá al final del mensaje. Por ejemplo, si "John Smith" es uno de los veinte nombres de clientes que hay en el mensaje de entrada y el elemento SearchName contiene la serie de caracteres "Smith", el nodo SearchFilter añade "John Smith" al final del mensaje.

En este ejemplo, cuando se encuentra el nombre completo del cliente, se añade al mensaje cinco veces. Esto presenta otra función del nodo SearchFilter. El siguiente código de ejemplo se toma del archivo de origen Java com.ibm.broker.ude.samples.SearchFilterNode.java y muestra cómo se añade el nombre del cliente al mensaje cinco veces.

// si se ha encontrado el nombre de la búsqueda, añada el código <Result> al mensaje de salida
         if (customerElement.getFirstChild().getValue().equals(searchName)) {
            // indica que se ha encontrado el nombre de la búsqueda
            result = true;

            // crea una concatenación de 5 nombres completos utilizando el almacenamiento intermedio de series de caracteres
            // ya que esto tiene un mejor rendimiento que la concatenación ordinaria de series de caracteres
            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);
            }

            // Añada un nuevo código <Result> al mensaje de salida como último hijo de <Message1>
            newtag = topOfBody.createElementAsLastChild(MbElement.TYPE_NAME, "Result", fiveNames.toString());

            terminal = getOutputTerminal("True");
         }

El archivo de origen Java com.ibm.broker.ude.samples.SearchFilterNode.java se encuentra en el proyecto Java UDESampleJavaCode.

Si el nombre buscado no se encuentra en el mensaje de entrada XML, la serie de caracteres "No encontrado" se almacenará en el árbol LocalEnvironment del nodo SearchFilter. El nodo de cálculo "NotFound" añade la serie "No encontrado" al mensaje de salida.

El ejemplo SearchFilter utiliza las siguientes colas:

Icono de la página principal Volver al ejemplo Acerca de la Ampliación definida por el usuario