A finalidade do componente Splitter é permitir que um documento (TXT ou XML) seja dividido em várias unidades de envio.
A partir de um componente Splitter existem duas possibilidades: enviar a informação para algum componente sender (File, Email, FTP, etc) ou realizar a identificação e análise do conteúdo para que sejam tomadas algumas decisões.
A partir da atualização 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:
Observação Essa opção é habilitada somente quando:
|
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. Observação Essa opção é habilitada somente quando:
|
EndToken | Token finalizador utilizado para a regra de divisão de mensagens. Observação Essa opção é habilitada somente quando:
|
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. Observação Essa opção é habilitada somente quando:
|
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. Observação Essa opção é habilitada somente quando:
|
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. Observação Essa opção é habilitada somente quando:
|
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. Observação Essa opção é habilitada somente quando:
|
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.
<?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:
Mensagem de saída 1
<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
<infNFe> <NFSer>009</NFSer> <NFNum>0002</NFNum> <NFUF>SC</NFUF> <NFEmi>9999-12-31</NFEmi> <NFTip>0001</NFTip> <NFTot>9.999,99</NFTot> </infNFe>
Ao configurar os campos Type com o valor "TOKENIZER", ContentType com o valor "XML", e Token com o valor "infNFe", o componente Splitter também irá quebrar a mensagem original da mesma maneira que os resultados apresentados pelas mensagens de saída 1 e 2.
Exemplo 2
Temos abaixo um exemplo de mensagem de entrada do componente Splitter apresentando um lote com dois pedidos de clientes:
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:
Type = "TOKENIZER"
Content Type = "TXT"
Rule = "Pair"
Token = "PD"
EndToken = "END"
Group Messages = 0
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
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
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:
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:
Type = "TOKENIZER"
Content Type = "TXT"
Rule = "Contains"
Token = "01619002"
Mensagem de saída 1
IT| 48082| 2,00|01619002 | 3,0000| 6,0000
Mensagem de saída 2
IT| 48083| 2,00|01619002 | 12,0000| 12,0000