Stream File Reader Pattern

Descubra mais sobre o componente Stream File Reader Pattern e saiba como utilizá-lo na Digibee Integration Platform.

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.

Parâmetros

Dê uma olhada nos parâmetros de configuração do componente. Parâmetros suportados por expressões Double Braces estão marcados com (DB).

Parâmetro
Descrição
Valor padrão
Tipo de dado

File Name (DB)

Nome ou full file path (ex.: tmp/processed/file.txt) do arquivo local.

N/A

String

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.

XML

String

Token

Token que será utilizado para buscar o padrão no arquivo informado.

N/A

String

End Token

Token de término. Este parâmetro fica disponível apenas quando o Tokenizer PAIR é selecionado.

N/A

String

Include Tokens

Para a inclusão de tokens de início e término. Este parâmetro fica disponível apenas quando o Tokenizer PAIR é selecionado.

False

Booleano

Group

Valor inteiro que determina o valor de agrupamento retornado pelo componente ao encontrar um match com o padrão definido.

N/A

String

Element Identifier

Atributo que será enviado em caso de erros.

N/A

String

Parallel Execution Of Each Iteration

Ocorre em paralelo com a execução do loop.

False

Booleano

Fail On Error

A habilitação desse parâmetro suspende a execução do pipeline apenas quando há uma ocorrência grave na estrutura da iteração, impedindo a sua conclusão por completo. A ativação do parâmetro Fail On Error não tem ligação com erros ocorridos nos componentes utilizados para a construção dos subpipelines (onProcess e onException).

False

Booleano

Fluxo de Mensagens

Entrada

{
"filename": "fileName"
}

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.

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, leia a documentação.

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

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.

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.

Atualizado