Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • processes: entidad en la que se almacenan los procesos a ejecutar.

  • process_log: entidad en la que se va almacenando una traza de log de la ejecución.

  • process_status: entidad en la que se almacena el estado de la ejecución de un proceso para una fecha dada.

  • operation_status: entidad en la que se almacena el estado de la ejecución de una operación para una fecha dada.

  • process_dependencies: entidad en la que se almacenan las dependencias entre procesos (si las hubiera).

Se define proceso como un conjunto de operaciones a ejecutar, en el que las operaciones pueden ser:

...

  • process_id: id de proceso

  • operation_id: id de operación

  • operation_identification: identificador de la operación en plataforma

  • operation_type: tipo de operación (dataflow, notebook, kpi, delete)process_order: orden de prioridad de ejecución del proceso

  • operation_order*: orden de prioridad de ejecución de la operación

  • previous_delete: boolean que indica si se quiere realizar un borrado previo de la entidad destino

  • delete_condition: condición de borrado de la entidad destino

  • target_entity: entidad destino sobre la que se puede realizar un borrado previo

  • parameters: parámetros necesarios para la ejecución de la operación.

    • kpi o dataflow:

      Code Block
      "{\"param1\":\"value1\",\"param2\":\"value2\",..}"
    • notebook:

      Code Block
      "{\"paragraphId\":\"id_parrafo_parametros\",\"params\": {\"param1\":\"value1\",\"param2\":\"value2\",..}}"
    • delete: condición de borrado en SQL o nativo

  • error_continue: boolean que indica si se quiere continuar con la ejecución de las demás operaciones dentro de un proceso ante un fallo.

* Si se quieren hacer ejecuciones de procesos u operaciones en paralelo se debe indicar el mismo número de orden para estos. Además se debe tener en cuenta que el número de orden debe ser consecutivo, es decir, no saltarse ningún número a partir del 1.

Después podrán definir dependencias y/u orden de ejecución de los procesos, informando la entidad de dependencias que tiene estos campos:

  • process_id: id de proceso.

  • previous_processes: array de procesos que debe haberse ejecutado previamente.

  • next_processes: array de procesos siguientes a ejecutar.

Una vez guardada la lógica de ejecución en la entidad las entidades de procesos y dependencias, se podrá programar la ejecución ordenada de estos los procesos en el Flow Engine, bien en el flujo definido en nuestro dominio de Flow Engine, en el nodo inject, o bien realizar ejecuciones puntuales de forma manual:

...

mismo dominio o en otro dominio si se quisiera, para poder aislar así la lógica de orquestación de la planificación.

Para esto se ha apificado toda la lógica de orquestación mediante el Flow Engine en 3 apis:

  • Ejecución completa del orquestador:

    • Endpoint: <host>/api-manager/server/api/v1/orchestrator/execute/

    • Método: POST

    • Body:

Code Block
languagejson
{     
  "process_id": "valor_process_id",  # atributo obligatorio - es el primer proceso de la ejecución,
  "date": "yyyy-MM-dd",              # atributo obligatorio - fecha de datos para la ejecución,
  "params": {                        # listado de parámetros que necesita la ejecución (date, parámetros calculados, etc..)
	 "parámetro1": "valor1",		 # se sustituyen dinámicamente en la ejecución
	 "parámetro2": "valor2", 		 # en la ontología processes se informan con nomenclatura ${parámetro}		
  … } 				
}
  • Ejecución de un proceso:

    • Endpoint: /api-manager/server/api/v1/orchestrator/executeProcess/

    • Método: POST

    • Body:

Code Block
languagejson
{     
  "process_id": "valor_process_id",  # atributo obligatorio - es el proceso que se ejecuta,
  "date": "yyyy-MM-dd",              # atributo obligatorio - fecha de datos para la ejecución,
  "params": {                        # listado de parámetros que necesita la ejecución (date, parámetros calculados, etc..)
	 "parámetro1": "valor1",		 # se sustituyen dinámicamente en la ejecución
	 "parámetro2": "valor2", 		 # en la ontología processes se informan con nomenclatura ${parámetro}		
  … } 				
}
  • Ejecución de una operación:

    • Endpoint: /api-manager/server/api/v1/orchestrator/executeOperation/

    • Método: POST

    • Body:

Code Block
languagejson
{     
  "process_id": "valor_process_id",     # atributo obligatorio - es el proceso que contiene la operación,
  "operation_id": "valor_operation_id", # atributo obligatorio - es la operación que se ejecuta
  "date": "yyyy-MM-dd",                 # atributo obligatorio - fecha de datos para la ejecución,
  "params": {                           # listado de parámetros que necesita la ejecución (date, parámetros calculados, etc..)
	 "parámetro1": "valor1",		 	# se sustituyen dinámicamente en la ejecución
	 "parámetro2": "valor2", 		 	# en la ontología processes se informan con nomenclatura ${parámetro}		
  … } 				
}

* Tanto el process_id como el operation_id que se están pasando en el body del api deben existir en la ontología processes para su correcta ejecución.

Invocando a cada una de estas apis se podrían realizar ejecuciones puntuales de forma manual, o planificada.

En el caso de que se produzca algún error durante la ejecución, esta se detendrá (a no ser que se haya indicado de otra forma en la entidad de procesos), y el usuario podrá revisar manualmente el error que se ha producido, corregirlo y relanzarlo manualmente desde el Flow Engine o desde el api.

En este caso continuará en el primer proceso y/o operación que se encuentre en las entidades de estado (process_status y operation_status) con estado de ERROR. Si el usuario quiere dar como OK la operación que ha fallado para que la ejecución continúe en el siguiente paso, únicamente deberá actualizar el estado de esa operación en la entidad operation_status a OK, y relanzar la ejecución manualmente desde el Flow Engine.

...

El planificador está desarrollado para ejecutar los procesos de manera secuencial siguiendo un orden que se define en la ontología de procesos, no así, las operaciones se pueden ejecutar y operaciones de forma secuencial y/o en paralelo definiendo el orden en función de la casuística,

Para que funcione correctamente las ontologías deben tener índices únicos creados, que se pueden encontrar en la propia descripción de las mismas.