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:

  1. Enviar a informação para algum componente sender (File, Email, FTP, etc);

  2. 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.

Parâmetros


CampoDescrição
NameInserir uma identificação para a configuração do componente.
Completion SizeNúmero máximo de mensagens agregadas. Esta é definida com um valor numérico entre 1 e 9999.
Completion TimeoutTempo, 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 IntervalPerí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 PersistenceQuando 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 KeysQuando 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.
TypeConfigura o componente para agregar tipos de conteúdos de mensagens distintas. Os valores possíveis são:
  • TXT;
  • XML.


Parâmetros TXT

CampoDescrição
Correlation TypeEspecifica qual a regra de agregação das mensagens. Pode assumir dois (2) valores:
  • All Messages - agrega todas as mensagens;
  • Contains - agrega as mensagens de acordo com o token informado no parâmetro Contains Token.
Contains TokenAgrega as mensagens que contém o token especificado neste parâmetro.
Use Line BreakInsere caractere de quebra de linha nas mensagens.


Parâmetros XML

CampoDescrição
CorrelationTypeEspecificar qual o tipo de conteúdo da mensagem. Pode assumir dois (2) valores:
  • All Messages - todas as mensagens;
  • XPath - agrega as mensagens de acordo com o token informado no parâmetro XPath.
XPathAgrega as mensagens que contém o XPath informado neste parâmetro.
Root Tag NameCria uma tag XML raiz para a agregação contendo o nome especificado neste parâmetro.


Exemplo 1

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:

Mensagem de saída

<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>

Exemplo 2

A seguir é apresentado um exemplo de duas mensagens de entrada do componente Aggregator contendo pedidos de clientes:

Mensagem 1

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

Mensagem 2

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"


Mensagem de saída

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