Saltar al contenido

Administrar Flujos de Trabajo Mediante Secuencias de Comandos de Controlador

Introducción

Un secuencia de comandos de controlador es un secuencia de comandos que contiene lógica de orquestación para administrar cómo y cuándo debe ejecutarse una operación, y se recomienda para flujos de trabajo complejos. Suele ser la primera operación de una cadena de operación.

Ejemplo

En este ejemplo, queremos leer una lista de escuelas secundarias, iterar sobre la lista, crear un diccionario y luego llamar a una operación de actualización.

El conjunto de datos es una lista de códigos y nombres de escuelas secundarias con este formato:

"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 en combinación con RunOperation y GetLastError puede usarse para que si la operación tiene una falla técnica, se generará un error y el proceso se detendrá. De lo contrario, la operación se ejecutará con normalidad.
  • While debe usarse para bucles.

Aquí hay un ejemplo de alto nivel con comentarios:

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")
);