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.
El diagrama siguiente muestra el flujo de mensajes del ejemplo SearchFilter:
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 de búsqueda aparece en el mensaje de entrada XML, el nombre completo del cliente se añade 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. Este ejemplo muestra las funciones adicionales 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 de cliente al mensaje cinco veces.
// Si se ha encontrado el nombre de búsqueda, a continuación, añadir el código <Result> al mensaje de salida si (customerElement.getFirstChild().getValue().equals(searchName)) { // indicar que se ha encontrado el nombre de búsqueda result = true; // construir una concatenación de 5 nombres completo utilizando String Buffer // ya que ha mejorado el rendimiento respecto a la concatenación de 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 el ú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 está ubicado 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 NotFound añade la serie "No encontrado" al mensaje de salida.
El ejemplo SearchFilter utiliza las siguientes colas:
Volver a Acerca del ejemplo de Extensión definida por el usuario