Fluxo de Pedido para o Padrão de Message Splitter para WebSphere MQ: Unidirecional (para XML)
Este padrão usa um único fluxo de mensagens.
- O nó de Entrada espera uma mensagem XML bem formada e é
configurado para usar o analisador XMLNSC. Se qualquer mensagem recebida contiver um cabeçalho MQRFH2 que
altera o domínio, ele causará um erro e a mensagem será revertida.
- A validação da mensagem é opcional e é especificada no parâmetro padrão
Validação requerida.
A validação não é imediata e é transportada conforme cada elemento é extraído.
- O fluxo de mensagens é executado como uma transação e não é confirmado,
a menos que todos os elementos necessários sejam extraídos e gravados com êxito em uma fila.
- O controle principal neste fluxo é o nó Propagar Cálculo do Elemento.
Este nó cria uma variável local para
conter uma árvore mutável que seja uma cópia da entrada.
Este fluxo faz loop através da árvore de mensagens, movendo para um
elemento filho em uma tag de contêiner e propagando-o para diante.
Conforme cada elemento é selecionado, o elemento anterior é excluído para reduzir o uso de memória.
- A estrutura da mensagem é determinada pelos parâmetros padrão e,
se uma mensagem não estiver em conformidade com esta estrutura, um erro será produzido.
- É feita uma verificação se a mensagem inclui o caminho de contêiner, ou seja, o contêiner para todos os
elementos a serem processados. Se este caminho de contêiner for especificado como *:*,
o contêiner será considerado como sendo a tag raiz, qualquer que seja seu nome, e
os elementos de mensagem que são filhos da raiz são extraídos.
- Se o parâmetro padrão Nome de Elemento de Mensagem for
*:*, todos os elementos
que são filhos do contêiner serão processados.
Se qualquer outro valor for especificado, apenas elementos de mensagens que possuem tags que correspondem ao
Nome de Elemento de Mensagem serão extraídos.
O elemento de mensagem extraído é transmitido para processamento adicional.
- O fluxo de mensagens inclui o subfluxo MessageProcessor, que por padrão não tem impacto
porque contém apenas um nó de Passagem. O subfluxo é incluído para fornecer um local no qual uma
instância padrão pode ser customizada usando o conjunto de ferramentas padrão, sem qualquer alteração na estrutura
do padrão.
- A mensagem é transmitida ao subfluxo Rota, que a direciona à fila do WebSphere MQ correta.
A falha em localizar uma rota, ou qualquer exceção, configura o status da falha e
direciona o controle ao nó de Falha.
- Se a Ação da Mensagem Inválida for Salvar,
o nó de Falha será conectado a um nó MQOutput para salvar
a mensagem. O controle retorna ao nó de Cálculo para extrair o próximo elemento.
- Se a Ação de Mensagem Inválida for Cancelar, o
nó de Falha não será conectado e o nó de Cálculo produzirá um erro do usuário
causando a reversão do fluxo.
- Quando uma movimentação para o próximo elemento falha, porque todos os elementos foram processados,
o subfluxo de Log é chamado, se a criação de log é requerida pelos parâmetros padrão.
Neste ponto, o fluxo de mensagens sempre para com êxito
e a transação é confirmada. Quaisquer erros que ocorrem na criação de log são capturados e processados
gravando em um nó Rastreio.
- Se o parâmetro Roteamento estiver
configurado como Consultar Rotas e o
parâmetro padrão Atualização de Cache
especificar que uma atualização de cache é necessária, o fluxo principal conterá um segundo nó
de Entrada que lê a partir da fila que é definida pelo parâmetro padrão
Fila de Atualização. Qualquer mensagem que é enviada para esta fila
limpa a variável compartilhada CacheQueueTable.valid, de forma que o cache seja
atualizado antes da próxima consulta.