A finalidade do componente Aggregator é permitir que vários documentos (TXT ou XML) sejam agregados em uma única unidade de envio. A partir de um componente Aggregator existem duas possibilidades de conexão com outros componentes:
Enviar a informação para algum componente sender (File, Email, FTP, etc);
Realizar a identificação e análise do conteúdo para que sejam tomadas algumas decisões.
O componente Aggregator está disponível a partir da atualização Fluig ESB 12.3.x.
Campo | Descrição |
---|---|
Name | Inserir uma identificação para a configuração do componente. |
Completion Size | Número máximo de mensagens agregadas. Esta é definida com um valor numérico entre 1 e 9999. |
Completion Timeout | Tempo, em segundos, que o componente deve ficar inativo (sem receber mensagens) antes de encerrar a agregação. Esta opção pode ser definida como um valor entre 1 e 9999. Não é possível utilizar esta opção juntamente com o parâmetro CompletionInterval, apenas um dos dois pode ser utilizado. |
Completion Interval | Período, em segundos, que o componente será agendado para encerrar a agregação. O ESB mantém uma tarefa em background que é ativada a cada período configurado. Não é possível utilizar esta opção juntamente com o parâmetro completionTimeout, apenas um deles pode ser utilizado. |
Use Persistence | Quando selecionado, o ESB persistirá o conteúdo das mensagens agregadas em memória secundária até que o processo de agregação seja concluído. Esta opção é recomendada quando houver o requisito de continuar agregando mensagens mesmo após o reinício do serviço do ESB para agregações que não foram concluídas anteriormente. As mensagens agregadas são mantidas em persistência local no diretório: ${ESB_HOME}/data/hawtdb.dat. |
Ignore Invalid Correlation Keys | Quando selecionado, configura o componente para ignorar os tokens de correlação, que não podem ser avaliados para um valor. Por padrão, o ESB vai lançar uma exceção quando não encontrar um identificador na mensagem para agregação, mas é possível ativar esta opção para ignorar esta situação. |
Type | Configura o componente para agregar tipos de conteúdos de mensagens distintas. Os valores possíveis são:
|
Campo | Descrição |
---|---|
Correlation Type | Especifica qual a regra de agregação das mensagens. Pode assumir dois (2) valores:
|
Contains Token | Agrega as mensagens que contém o token especificado neste parâmetro. |
Use Line Break | Insere caractere de quebra de linha nas mensagens. |
Campo | Descrição |
---|---|
CorrelationType | Especificar qual o tipo de conteúdo da mensagem. Pode assumir dois (2) valores:
|
XPath | Agrega as mensagens que contém o XPath informado neste parâmetro. |
Root Tag Name | Cria uma tag XML raiz para a agregação contendo o nome especificado neste parâmetro. |
A seguir é apresentado um exemplo de mensagens de entrada do componente Aggregator contendo duas notas fiscais distintas.
<?xml version="1.0"?> <ESBMessage> <MessageHeader> <DocType>Nota Fiscal</DocType> <DocVersion>Nota Fiscal</DocVersion> </MessageHeader> <infNFe> <NFSer>009</NFSer> <NFNum>0001</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> </ESBMessage> <?xml version="1.0"?> <ESBMessage> <MessageHeader> <DocType>Nota Fiscal</DocType> <DocVersion>Nota Fiscal</DocVersion> </MessageHeader> <infNFe> <NFSer>009</NFSer> <NFNum>0002</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> </ESBMessage> |
Ao configurar os campos completionSize com o valor "2", Type com o valor "XML", XmlCorrelationType com o valor "XPath", XPath com o valor "/ESBMessage/infNFe/NFSer" e rootTagName com o valor "NFeLote", o componente unirá as mensagens originas em uma mensagem de saída conforme abaixo:
<NFeLote> <infNFe> <NFSer>009</NFSer> <NFNum>0001</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> <infNFe> <NFSer>009</NFSer> <NFNum>0002</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> </NFeLote> |
A seguir é apresentado um exemplo de duas mensagens de entrada do componente Aggregator contendo pedidos de clientes:
PD| 48082|PEDIDO CLIENTE 2|21/11/2012|002 - Cliente Varejo|Açougue IT| 48082| 2,00|01619002 | 3,0000| 6,0000 IT| 48082| 1,00|01619006 | 20,0000| 20,0000 TT| 48082| 26,0000 END |
PD| 48083|PEDIDO CLIENTE 3|23/11/2012|002 - Cliente Varejo|Açougue IT| 48083| 2,00|01619002 | 12,0000| 12,0000 IT| 48083| 1,00|01619006 | 30,0000| 30,0000 TT| 48083| 42,0000 END |
Para configurar o componente para agregar somente as informações do cliente código "002 - Cliente Varejo" acima em uma única mensagem, é necessário configurar as seguintes propriedades:
completionSize = 2
Type = "TXT"
TxtCorrelationType = "Contains"
containsToken = "002 - Cliente Varejo"
useLineBreak = "true"
PD| 48082|PEDIDO CLIENTE 1|23/11/2012|Valdir|Panificadora XYZ IT| 48082| 2,00|01619002 | 3,0000| 6,0000 IT| 48082| 1,00|01619006 | 20,0000| 20,0000 TT| 48082| 26,0000 END PD| 48083|PEDIDO CLIENTE 2|23/11/2012|Marco|Açougue IT| 48083| 2,00|01619002 | 12,0000| 12,0000 IT| 48083| 1,00|01619006 | 30,0000| 30,0000 TT| 48083| 42,0000 END |