Este tópico fornece informações específicas para tratar mensagens que pertencem ao domínio BLOB e que são analisadas pelo analisador BLOB.
Você não pode manipular o conteúdo de uma mensagem BLOB porque ela não possui estrutura predefinida. No entanto, é possível fazer referência a seu conteúdo utilizando sua posição conhecida no fluxo de bits e processar a mensagem com um mínimo de conhecimento de seu conteúdo.
O analisador do corpo da mensagem BLOB não cria uma estrutura de árvore da mesma forma que outros analisadores do corpo da mensagem criam. Ele possui um elemento raiz BLOB, que possui um elemento filho, também chamado de BLOB, que contém os dados.
Você pode fazer referência ao conteúdo da mensagem utilizando subcadeias se souber a localização de um determinado bloco de informações nos dados BLOB. Por exemplo, a expressão a seguir identifica o décimo byte do corpo da mensagem:
InputBody.BLOB.BLOB[10]
A expressão a seguir faz referência a 10 bytes dos dados de mensagens começando no deslocamento 10:
SUBSTRING(InputBody.BLOB.BLOB from 10 for 10)
Este exemplo mostra como é possível manipular uma mensagem BLOB de comprimento variável. O exemplo assume que você configurou um fluxo de mensagens que recebe uma mensagem BLOB de comprimento variável, analisa alguns dos campos chamando o analisador MRM e roteia a mensagem de saída para a fila de saída correta, com base nas informações analisadas.
A mensagem de entrada está em formato BLOB e supõe-se que ela contenha NULLs ('x00') incorporados, e portanto não pode ser definida como terminada em nulo.
Este exemplo mostra o ESQL necessário para:
Fazendo isso, você pode definir o modelo de mensagem com um campo de comprimento inteiro, seguido pela mensagem BLOB.
Este exemplo também mostra como converter a mensagem BLOB em CWF, processar a mensagem e remover o campo de comprimento adicionado.
Neste exemplo, o registro de entrada possui o seguinte formato:
Este campo deve ser utilizado como um inteiro para rotear a mensagem para filas diferentes, dependendo dos critérios definidos pelo cliente.
Defina uma nova mensagem BLOB_Example que inclua os seguintes elementos e tipos:
Esta seção descreve as características do fluxo de mensagens. Se desejar implementar este fluxo de exemplo, será necessário concluir a definição do fluxo de mensagens (por exemplo, criando os três subfluxos para substituir os nós de saída utilizados aqui para tratar casos falsos, desconhecidos e com falha) e fornecer suporte requerido para sua implementação e execução (por exemplo, criação de filas de entrada e de transmissão no gerenciador de filas para o intermediário no qual você implementa o fluxo).
Esse subfluxo trata uma mensagem que tem o formato esperado (o teste executado no nó Filter retornou true). A mensagem bem-sucedida é gravada na fila de saída em seu formato original; a mensagem é convertida novamente em BLOB a partir de MRM e os quatro bytes que foram incluídos (campo B_LEN) são removidos.
Para esse subfluxo: