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:
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:
Volver al ejemplo
Acerca de la Ampliación definida por el usuario