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.
A figura 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. Exemplo:
<SearchName>
Surname of customer
</SearchName>
Se o nome de procura aparecer na mensagem de entrada XML, o nome completo do cliente será incluído no final 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. Isso demonstra a funcionalidade adicional do nó SearchFilter. O seguinte código de exemplo é obtido do arquivo de origem Java com.ibm.broker.ude.samples.SearchFilterNode.java
e mostra como o nome do cliente é incluído na mensagem cinco vezes.
// se o nome da procura foi localizado, inclua a tag <Result> na mensagem de saída if (customerElement.getFirstChild().getValue().equals(searchName)) { // indicar que o nome da procura foi localizado result = true; // construa uma concatenação de 5 nomes completos utilizando String Buffer // visto que ela aprimorou seu desempenho sobre a concatenação String comum 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); } // Inclua uma nova tag <Result> na mensagem de saída como o último filho de <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 Java 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ó Compute "NotFound" inclui a cadeia "Not found" na mensagem de saída.
A amostra SearchFilter utiliza as seguintes filas: