Esta amostra demonstra como um nó de processamento de mensagem definido pelo usuário Java pode ser utilizado como um nó Filter. O nó SearchFilter procura um nome de cliente específico em uma mensagem XML que contém 20 nomes de clientes.
O diagrama a seguir mostra o fluxo de mensagens da amostra SearchFilter:
O nó SearchFilter procura o conteúdo da mensagem de entrada XML
em uma cadeia que está contida no elemento SearchName. Por exemplo:
<SearchName>
Surname of customer
</SearchName>
Se o nome de procura for exibido na mensagem de entrada XML, o nome do cliente completo é incluído no fim da mensagem. Por exemplo, se "John Smith" for um dos 20 nomes de clientes na mensagem de entrada e a cadeia "Smith" estiver contida no elemento SearchName, o nó SearchFilter incluirá "John Smith" no final da mensagem.
Nessa amostra, quando o nome completo do cliente for localizado, ele será incluído na mensagem cinco vezes. Essa amostra demonstra as funções adicionais do nó SearchFilter. O código de exemplo a seguir é obtido do arquivo de origem Java com.ibm.broker.ude.samples.SearchFilterNode.java e mostra como o nome do cliente é incluído à mensagem cinco vezes.
// 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"); }
O arquivo de origem Java com.ibm.broker.ude.samples.SearchFilterNode.java está localizado no projeto Javca UDESampleJavaCode.
Se o nome de procura não for localizado na mensagem de entrada XML, a cadeia "Not found" será armazenada na árvore LocalEnvironment do nó SearchFilter. O nó NotFound inclui a cadeia "Not found" a mensagem de saída.
A amostra SearchFilter utiliza as seguintes filas: