O Stream File Reader Pattern lê um arquivo de texto local em blocos de linha conforme o pattern configurado e dispara subpipelines para processar cada mensagem. Esse recurso deve ser utilizado para arquivos grandes.

Dê uma olhada nos parâmetros de configuração do componente:

  • File Name: nome do arquivo local.
  • Tokenizer: XML, PAIR e REGEX. Utilizando a opção XML, é possível informar o nome da tag XML para que o componente envie o bloco que a contenha. Utilizando a opção PAIR, é possível configurar um token de início e um token de término para que o componente retorne ao subfluxo todas as linhas entre ambos os tokens. Utilizando a opção REGEX, é necessário informar uma expressão regular para que o componente retorne o bloco entre as expressões regulares.
  • Token: token que será utilizado para buscar o padrão no arquivo informado.
  • End Token: token de término. Utilizado somente para o Tokenizer PAIR.
  • Include Tokens: para a inclusão de tokens de início e término. Utilizado somente para o Tokenizer PAIR.
  • Group: valor inteiro que determina o valor de agrupamento retornado pelo componente ao encontrar um match com o padrão definido.
  • Element Identifier: atributo que será enviado em caso de erros.
  • Parallel Execution Of Each Iteration: ocorre em paralelo com a execução do loop.
  • Fail On Error: se a opção estiver ativada, a execução do pipeline com erro será interrompida; do contrário, a execução do pipeline continua, mas o resultado vai mostrar um valor falso para a propriedade success.

Fluxo de Mensagens

Entrada

{
"filename": "fileName"
}

O “Local File Name” substitui o arquivo local padrão.

Saída

{
"total": 0,
"success": 0,
"failed": 0
}

  • total: número total de linhas processadas
  • success: número total de linhas processadas com sucesso
  • failed: número total de linhas cujo processamento falhou

IMPORTANTE: para saber se uma linha foi processada corretamente, deve haver o retorno { "success": true } para cada linha processada.

O componente joga uma exceção se o “File Name” não existir ou não puder ser lido.

A manipulação de arquivos dentro de um pipeline ocorre de forma protegida. Todos os arquivos podem ser acessados apenas por um diretório temporário, no qual cada pipeline key dá acesso ao seu próprio conjunto de arquivos.

O Stream File Reader Pattern realiza processamento em lote. Para entender melhor o conceito, clique aqui.

Stream File Reader Pattern em Ação

Veja abaixo como o componente se comporta em determinada situação e a sua respectiva configuração.

  • Utilizando o Tokenizer XML e buscando informações de tags que podem estar em várias linhas

Dado que se deseja ler o seguinte arquivo XML:

file.xml

<m:documents>
<m:hashes>
<m:hashe>4rt4</m:hashe>
<m:hashe>6565g</m:hashe>
</m:hashes>
<m:orders xmlns:m="urn:shop" xmlns:cat="urn:shop:catalog">
<m:order>
<id>1</id><date>2014-02-25</date>
</m:order>
<m:order>
<id>2</id><date>2014-02-25</date>
</m:order>
</m:documents>

Configurando o componente para apenas retornar o bloco XML da tag "order":

File Name: file.xml

Tokenizer: XML

Token: order

O resultado será 2 subfluxos contendo os valores que estão dentro da tag “order”:

Primeiro:

<m:order>
<id>1</id><date>2014-02-25</date>
</m:order>

Segundo:

<m:order>
<id>2</id><date>2014-02-25</date>
</m:order>

  • Utilizando o Tokenizer PAIR para ler um arquivo onde tenha um token de início e término para cada bloco

file.txt

###
Log1: Log info
Log2: Log info
--###
###
Log1: Log info
--###
###
Log1: Log info
Log2: Log info
Log3: Log info
--###

File Name: file.txt

Tokenizer: PAIR

Token: ###

End Token: --###

Include Tokens: desabilitado

O resultado será 3 subfluxos contendo os valores que estão dentro dos tokens de início (###) e término (--###):

Primeiro:

Log1: Log info
Log2: Log info

Segundo:

Log1: Log info

Terceiro:

Log1: Log info
Log2: Log info
Log3: Log info

  • Usando o Tokenizer REGEX para buscar todos as linhas entre padrões

file.txt

ID-3591d344-d74f-446e-867a-210d17345b50
Some text
xpto
ID-033e8b36-6b1e-42e8-aeb1-dc8498ffa6cb
Other text
xxx

Então deseja-se buscar o padrão:

ID-\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b

File Name: file.txt

Tokenizer: REGEX

Token: ID-\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b

O resultado será 2 subfluxos contendo os valores que casam com o padrão REGEX informado.

Primeiro:

Some text
xpto

Segundo:

Other text
xxx

  • Usando o Tokenizer REGEX para buscar todas as linhas entre padrões e agrupando os resultados de 2 em 2

file.txt

ID-3591d344-d74f-446e-867a-210d17345b50
Some text
xpto
ID-033e8b36-6b1e-42e8-aeb1-dc8498ffa6cb
Other text
xxx

Então deseja-se buscar o padrão:

ID-\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b

File Name: file.txt

Tokenizer: REGEX

Token: ID-\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b

Group: 2

O resultado será 1 subfluxo contendo os valores que casam com o padrão REGEX informado.

Some text
xpto
ID-\b[0-9a-f]{8}\b-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-\b[0-9a-f]{12}\b
{12}\\b
Other text
xxx

Quando o Tokenizer REGEX é utilizado no agrupamento, o padrão encontrado como saída é exibido.

IMPORTANTE: caso o padrão informado no arquivo não seja encontrado, então o retorno será uma execução com todo o arquivo. Atente-se ao especificar o REGEX.

Encontrou sua resposta?