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