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 de procura foi localizado, incluir a tag <Result> na mensagem de saída
if (customerElement.getFirstChild().getValue().equals(searchName)) {
// indica que o nome de procura foi localizado
result = true;
// construir uma concatenação de 5 nomes completos utilizando Buffer de Cadeia
// porque isso aprimorou o desempenho sobre a concatenação Cadeia 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);
}
// Incluir 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: