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 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 búsqueda
result = true;

// construye una concatenación de 5 nombres completos usando StringBuffer
// ya que tiene una rendimiento superior a la concatenación String normal
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ñadir 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:

Acerca del ejemplo de extensión definida por el usuario

Icono de la página principal Volver a la página de presentación de ejemplos