Seleccionar página

APEX_AUTOMATION

apex_automation

Escrito por: Eddie Molina

Oracle ACE Pro. Oracle APEX Cloud Developer Certified Professional. Presidente de ORAUGCRC (Grupo de Usuarios Oracle de Costa Rica). Miembro de líderes de LAOUC. Conferencista, consultor, desarrollador y capacitador en tecnologías Oracle, especialmente Oracle Application Express con más de 30 años de experiencia.

12/04/2022

El paquete APEX_AUTOMATION proporciona funcionalidad automatizada a su entorno. Las automatizaciones son un conjunto secuencial de acciones que se desencadenan por los resultados de la consulta. Use automatizaciones para monitorear los datos y luego realice la acción adecuada, como la aprobación automática de solicitudes específicas y el envío de alertas por correo electrónico.

Este paquete está compuesto por los siguientes procedimientos y funciones.

Procedimiento DISABLE

Este procedimiento detiene la automatización de ejecutarse de manera automática.

La sintaxis utilizada es:

     APEX_AUTOMATION.DISABLE(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2 );

Donde,

Parameter Description
p_application_id ID de la aplicación que contiene la automatización.
p_static_id ID estático de la automatización a deshabilitar.

Por ejemplo:

     BEGIN
          apex_automation.disable(
               p_application_id => 152,
               p_static_id => ‘my_emp_table_automation’ );
     END;

Procedimiento ENABLE

Este procedimiento habilita la automatización para la ejecución normal.

La sintaxis utilizada es:

     APEX_AUTOMATION.ENABLE(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2 );

Donde:

Parámetro Descripción
p_application_id ID de la aplicación que contiene la automatización.
p_static_id Identificador estático de la automatización a habilitar.

Por ejemplo:

      BEGIN
          apex_automation.enable(
               p_application_id => 152,
               p_static_id => ‘my_emp_table_automation’ );
     END;

Procedimiento EXECUTE

Este procedimiento ejecuta una automatización.

La sintaxis utilizada es una de las siguientes:

     APEX_AUTOMATION.EXECUTE(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2,
          p_filters IN apex_exec.t_filters DEFAULT apex_exec.c_empty_filters,
          p_order_bys IN apex_exec.t_order_bys DEFAULT apex_exec.c_empty_order_bys );

Donde:

Parámetro Descripción
p_application_id ID de la aplicación que contiene la automatización.
p_static_id Identificador estático de la automatización a ejecutar.
p_filters Filtros adicionales a aplicar a la consulta de la automatización.
p_order_bys Claúsula ORDER BY a aplicar a la consulta de la automatización.

Por ejemplo:

     DECLARE
          l_filters apex_exec.t_filters;
     BEGIN
          apex_session.create_session( 100, 1, ‘ADMIN’ );

          apex_exec.add_filter(
               p_filters => l_filters,
               p_column_name => ‘DEPTNO’,
               p_filter_type => apex_exec.c_filter_eq,
               p_value => 10 );

         apex_automation.execute(
               p_static_id => ‘my_emp_table_automation’,
               p_filters => l_filters );
     END;

 

Procedimiento EXECUTE para contexto de consulta

Este procedimiento ejecuta acciones de automatización para un contexto de consulta determinado. Las columnas devueltas por el contexto de la consulta coinciden con las definidas en la consulta de automatización, especialmente cuando se hace referencia a las columnas como variables de vinculación en el código de acciones.

La sintaxis utilizada es:

     APEX_AUTOMATION.EXECUTE(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2,
          p_query_context IN apex_exec.t_context );

Donde:

Parámetro Descripción
p_application_id ID de la aplicación que contiene la automatización.
p_static_id Identificador estático de la automatización a ejecutar.
p_query_context El contexto para correr las acciones para la consulta.

Por ejemplo:

     DECLARE
          l_context apex_exec.t_context:
     BEGIN
          apex_session.create_session( 100, 1, ‘ADMIN’ );

          l_context := apex_exec.open_query_context(
          p_location => apex_exec.c_location_local_db,
          p_sql_query => ‘select * from emp_copy_table’ );

          apex_automation.execute(
               p_static_id => ‘my_emp_table_automation’,
               p_query_context => l_context );
     END;

Procedimiento EXIT

Este procedimiento sale del procesamiento de automatización, incluso para las filas restantes. Utilice este procedimiento en el código de acción de automatización.

La sintaxis utilizada es:

     APEX_AUTOMATION.EXIT(
          p_log_message IN VARCHAR2 DEFAULT NULL );

En donde,

Parámetro Descripción

p_log_message

Mensaje a escribir en el log de automatización.

Por ejemplo:

     BEGIN
          IF :SQL > 10000 THEN
               apex_automation.exit( p_log_message => ‘Dubious SAL value found. Exit automation.’ );
          ELSE
               my_logic_package.process_emp(
                    p_empno => :EMPNO,
                    p_sal => :SAL,
                    p_depto => :DEPTNO );
          END IF;
     END;

 

Función GET_LAST_RUN

Esta función devuelve la última ejecución de la automatización como un tipo TIMESTAMP CON ZONA HORARIA. Utilice esta función dentro del código de acción de automatización o la consulta de automatización.

La sintaxis utilizada es:

     APEX_AUTOMATION.GET_LAST_RUN
     return TIMESTAMP WITH TIME ZONE;

Retorna:

Valor Descripción
* Marca de tiempo de la ejecución de automatización previa.

Por ejemplo:

     select *
     from {table}
     where created_at > apex_automation.get_last_run;

 

Función GET_LAST_RUN_TIMESTAMP

Esta función recupera información sobre la última ejecución de automatización.

La sintaxis utilizada es:

     APEX_AUTOMATION.GET_LAST_RUN_TIMESTAMP(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2 )
          RETURN timestamp with time zone;

Donde:

Parámetro Descripción
p_application_id ID de la aplicación que contiene la automatización.
p_static_id Identificador estático de la automatización a ejecutar.

Retorna:

Valor Descripción
* Marca de tiempo de la ejecución automatización que se ejecutó correctamente.

Por ejemplo:

     DECLARE
          l_last_run_ts timestamp with time zone;
     BEGIN
          apex_session.create_session( 100, 1, ‘ADMIN’ );
               l_last_run := apex_automation.get_last_run_timestamp(
               p_static_id => ‘my_emp_table_automation’ );

          dbms_output.put_line( ‘The automation”s last run was as of: ‘ || l_last_run );
     END;

 

 

Procedimiento LOG_ERROR

Este procedimiento agrega un mensaje de error al log de errores de automatización.

La sintaxis utilizada es:

APEX_AUTOMATION.LOG_ERROR(
p_message IN VARCHAR2 );

Donde,

Parámetro Descripción

p_message

El mensaje de error.

Por ejemplo:

     apex_authentication.log_error(‘Error al ejecutar automatización’);

 

Procedimiento LOG_INFO

Este procedimiento registra los procedimientos que se utilizarán dentro del código de automatización.

La sintaxis utilizada es:

     APEX_AUTOMATION.LOG_INFO(
          p_message IN VARCHAR2 );

Donde:

Parámetro Descripción

p_message

Mensaje a escribir en el log de automatización.

Por ejemplo:

     BEGIN
          IF :SAL > 10000 THEN
               apex_automation.log_info( p_message => ‘High Salary found for empno: ‘ || :EMPNO );
          END IF;
          my_logic_package.process_emp(
               p_empno => :EMPNO,
               p_sal => :SAL,
               p_depto => :DEPTNO );
     END;

Procedimiento LOG_WARN

Este procedimiento registra mensajes de advertencia del código de automatización.

La sintaxis utilizada es:

APEX_AUTOMATION.LOG_WARN(
p_message IN VARCHAR2 );

Donde:

Parámetro Descripción

p_message

Mensaje a escribir en el log de automatización.

Por ejemplo:

     BEGIN
          IF :SAL > 10000 THEN
               apex_automation.log_info( p_message => ‘Warning message ‘  );
          END IF;
          my_logic_package.process_emp(
               p_empno => :EMPNO,
               p_sal => :SAL,
               p_depto => :DEPTNO );
     END;

Procedimiento RESCHEDULE

Este procedimiento establece la próxima fecha de ejecución programada de una automatización de “sondeo” ahora para que el trabajo de ejecución de automatización principal ejecute la automatización lo antes posible. Si la automatización se está ejecutando actualmente, no se reiniciará.

La sintaxis utilizada es:

     APEX_AUTOMATION.RESCHEDULE(
          p_application_id IN NUMBER DEFAULT apex_application.g_flow_id,
          p_static_id IN VARCHAR2,
          p_next_run_at IN TIMESTAMP WITH TIME ZONE DEFAULT systimestamp );

Donde:

Parámetro Descripción
p_application_id ID de la aplicación que contiene la automatización.
p_static_id Identificador estático de la automatización a ejecutar.
p_next_run_at Marca de tiempo de la próxima ejecución de la automatización.

Por ejemplo:

     BEGIN
          apex_session.create_session( 100, 1, ‘ADMIN’ );

          apex_automation.reschedule(
               p_static_id => ‘my_emp_table_automation’ );
     END;

Procedimiento SKIP_CURRENT_ROW

Este procedimiento omite el procesamiento de la fila actual y continúa con la siguiente. Utilice este procedimiento en el código de acción de automatización.

La sintaxis utilizada es:

     APEX_AUTOMATION.SKIP_CURRENT_ROW(
          p_log_message IN VARCHAR2 DEFAULT NULL );

Donde:

Parámetro Descripción

p_message

Mensaje a esceribir al log de automatización.

Por ejemplo:

     BEGIN
          IF :ENAME = ‘PRESIDENT’ THEN
               apex_automation.skip_current_row( p_log_message => ‘PRESIDENT skipped’ );
          ELSE
               my_logic_package.process_emp(
                    p_empno => :EMPNO,
                    p_sal => :SAL,
                    p_depto => :DEPTNO );
          END IF;
     END;

 

También te puede gustar…

Share This