Ir para o conteúdo

Gerenciar Workflows Usando Scripts de Controlador

Introdução

Um script de controlador é um script que contém lógica de orquestração para gerenciar como e quando uma operação deve ser executada e é recomendado para workflows complexos. Geralmente é a primeira operação de uma cadeia de operação.

Exemplo

Neste exemplo, queremos ler uma lista de escolas secundárias, iterar na lista, criar um dicionário e, em seguida, chamar uma operação de atualização.

O conjunto de dados é uma lista de códigos e nomes de escolas secundárias formatados desta forma:

"001,Amon Carter-Riverside HS|002,Arlington Heights HS|003,South Hills HS|4,Diamond Hill-Jarvis HS|005,Paul Laurence Dunbar HS|006,Eastern Hills HS|008,North Side HS|009,Polytechnic HS"

Nota

  • Usando If em combinação com RunOperation e GetLastError pode ser usado para que, se a operação tiver uma falha técnica, um erro seja gerado e o processo seja interrompido. Caso contrário, a operação será executada normalmente.
  • While deve ser usado para loop.

Aqui está um exemplo de alto nível com comentários:

If(!RunOperation("<TAG>operation:read_data</TAG>"),GetLastError()); // The output is written to a global variable endpoint $io
If(Length($io) > 0, // Checking if any data was read, skip if no data was generated
$dict_highschool_list = Dict(); // Initializing the dictionary
arr = Array(); // Initializing the array
arr_list = Array();
arr = Split($io,"|"); // A "|" is the record separator
cnt = Length(arr); i = 0;
While(i < cnt,
arr_list = Split(arr[i],","); // Another split to separate by commas
AddToDict($dict_highschool_list, arr_list[0],arr_list[1]);
// The dictionary key is the code, its value is the name of the high school. Note the use of brackets to denote the position in the array.
i++);
WriteToOperationLog("Number of high schools read: " + cnt);
If(!RunOperation("<TAG>operation:read_data</TAG>"),GetLastError()); // Use the dictionary as a cross-reference
,
WriteToOperationLog("No data read; stopping process")
);