IMPORTANTE: esta documentação foi descontinuada. Leia a documentação Stream File Reader Pattern atualizada no nosso novo portal de documentação.
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: 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).
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.