Ir para o conteúdo

Divida um Arquivo em Registros Individuais Usando SourceInstanceCount

Introdução

Esse padrão de design pode ser usado para dividir um pequeno conjunto de dados de origem em um arquivo JSON ou XML com vários registros em vários arquivos, cada um contendo um único registro, usando o SourceInstanceCount função.

Dica

Este padrão é recomendado para ser usado apenas com um pequeno conjunto de registros de origem quando os dados de origem são complexos (hierárquicos). Para dados de origem simples (não hierárquicos), consulte Dividir um arquivo em registros individuais usando SCOPE_CHUNK. Esse padrão não é recomendado para grandes conjuntos de dados porque a payload deve ser processada repetidamente para cada registro de origem.

Caso de Uso

Neste cenário, os dados de origem são um arquivo JSON complexo que contém um pequeno número de vários registros, e o endpoint de destino exige que os registros sejam processados individualmente.

Padrão de Design e Exemplo

Este exemplo de cadeia de operação é usado para ilustrar o padrão de projeto, cujas principais características são descritas abaixo:

cadeia de operação sourceinstancecount

  1. A operação Get File with Multiple Records recupera o arquivo JSON de vários registros da origem e grava o conteúdo em uma variável (chamada Variable).

  2. No sucesso dessa operação, a operação Control executa um script do controlador, cujas partes são descritas abaixo:

    <trans>
    ordercount = CountSubString($Variable, '"assigned_location":');
    $gv_record_no=1;
    While($gv_record_no<=ordercount,
    RunOperation("<TAG>operation:Split into Single-record Files</TAG>");
    $gv_record_no++;
    )
    </trans>
    
    • O CountSubString a função é usada para contar o número de registros da origem (substituindo assigned_location com qualquer campo que apareça apenas uma vez para cada registro nos dados de origem).

    • A variável global] (gv_record_no) é inicializado em 1 e será usado para incrementar o número de registros.

    • O While é usada para percorrer a contagem de registros e executar a próxima operação para cada registro.

  3. À medida que o script percorre os registros, a operação Dividir em arquivos de registro único é executada repetidamente. Estas são as etapas da operação:

    1. O conteúdo do arquivo JSON multi-registro contido em Variable são usados como fonte para a transformação.
    2. Na transformação, um script de condição é definido no nó do item para iterar em cada registro:

      If(SourceInstanceCount() == $gv_record_no, true, false)
      

      dividido em registros únicos

    3. Em cada operação executada, a transformação gerará um único registro JSON, que pode ser gravado no destino desejado.