Histórico da Página
Informações | ||
---|---|---|
| ||
O TOTVS ESB não é mais ofertado por se tratar de uma solução legada. A nova solução para realizar integrações é o TOTVS iPaaS. Saiba mais detalhes aqui. |
A finalidade do componente Splitter é permitir que um documento (TXT ou XML) seja dividido em várias unidades de envio.
...
Nota |
---|
A partir da atualização fluig Fluig ESB 12.3 o componente For Each foi renomeado para Splitter. O componente For Each permitia apenas dividir arquivos no formato XML. |
Campo | Descrição |
---|---|
Name | Inserir uma identificação para a configuração do componente. |
Type | Especificar o tipo da regra para divisão de conteúdo:
|
Parâmetros TOKENIZER
Campo | Descrição | |||||
---|---|---|---|---|---|---|
ContentType | Especificar qual o tipo de conteúdo da mensagem. Pode assumir dois valores:
| |||||
Rule | Especificar qual a regra de processamento para a divisão de conteúdos da mensagem. Pode assumir três valores:
| |||||
Token | Token utilizado para a regra de divisão de mensagens. | |||||
Use RegExp | Especifica se o parâmetro Token deve ser tratado como uma expressão regular.
| |||||
EndToken | Token finalizador utilizado para a regra de divisão de mensagens.
| |||||
Group Messages | Especifica a quantidade de mensagens divididas que devem ser agrupadas nas mensagens geradas pelo componente Splitter. Esse parâmetro deve ser alimentado caso seja necessário que duas ou mais mensagens sejam agrupadas pelo Splitter antes de serem entregues ao próximo componente do diagrama de integração. Valor padrão: zero (0) = uma divisão por mensagem.
| |||||
Inherit Namespace | Especifica o nome da tag pai do elemento XML dividido pelo componente Splitter, e adiciona o namespace da tag pai no XML dividido. |
| ||||||
Include Tokens | Especifica se os Tokens devem fazer parte da mensagem dividida pelo componente Splitter. Quando essa propriedade não estiver selecionada, o componente Splitter irá remover o Token das mensagens geradas no processo de divisão de conteúdo.
| |||||
Streaming | Se ativado, o componente Splitter irá dividir a mensagem de entrada em pedaços. Isso reduz a sobrecarga de memória durante o processamento.
|
Parâmetros XPATH
Campo | Descrição |
---|---|
Node Path | Especificar qual será o nível de divisão de um documento. Assim, a cada iteração do Splitter, o sistema será enviado para o próximo componente que estiver no intervalo definido nesse campo. Esse caminho deve ser informado no formato XPath. Exemplo: /root/nodes/node. |
Parâmetros Parallel Processing
Campo | Descrição |
---|---|
Enable | Ativa/desativa o processamento paralelo. Esse parâmetro permite configurar o pool de processos (threads) objetivando minimizar o tempo de processamento de divisão das mensagens. Quando essa propriedade está ativada, as sub-mensagens geradas serão agregadas e/ou divididas fora de ordem. |
Core Pool Size | Especificar um número para indicar o tamanho do pool de threads que está realmente fazendo o trabalho pesado para o processo de divisão de mensagens. Por padrão, o valor usual é 8. |
Maximum Pool Size | Especificar um número para indicar o tamanho máximo do pool de threads que está realmente fazendo o processo pesado de divisão de mensagens. Por padrão, o valor usual é 16. Sugere-se também que em geral o valor dessa propriedade seja o dobro da propriedade Core Pool Size. |
Keep Alive Time | Especificar o tempo de duração em milissegundos que o pool irá manter as threads inativas. |
Exemplo 1
Temos abaixo um exemplo de mensagem de entrada do componente Splitter apresentando um lote com duas notas fiscais.
Bloco de código |
---|
<?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> <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 Type com o valor "XPATH" e Node Path com o valor /ESBMessage/infNFe, o componente irá quebrar a mensagem original em duas mensagens de saída conforme abaixo:
...
Bloco de código |
---|
<infNFe> <NFSer>009</NFSer> <NFNum>0001</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> |
...
Mensagem de saída 2
Bloco de código |
---|
<infNFe> <NFSer>009</NFSer> <NFNum>0002</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe> |
...
Bloco de código |
---|
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 |
...
Para configurar o componente Splitter para dividir a mensagem acima em duas mensagens contendo um pedido em cada, é necessário configurar as seguintes propriedades:
...
Include Tokens = selecionado (necessário para que o componente Splitter mantenha nos arquivos gerados os valores encontrados nos campos Token e EndToken)
Mensagem de saída 1
Bloco de código |
---|
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 |
...
Mensagem de saída 2
Bloco de código |
---|
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 |
...
Exemplo 3
Temos abaixo um exemplo de mensagem de entrada do componente Splitter apresentando um lote com dois pedidos de clientes:
Bloco de código |
---|
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 |
...
Para configurar o componente Splitter para dividir a mensagem acima em mensagens que contenham somente os Itens de pedido com o código "01619002", é necessário configurar as seguintes propriedades:
...
Rule = "Contains"
Token = "01619002"
Mensagem de saída 1
Bloco de código |
---|
IT| 48082| 2,00|01619002 | 3,0000| 6,0000 |
...
Mensagem de saída 2
Bloco de código |
---|
IT| 48083| 2,00|01619002 | 12,0000| 12,0000 |