Mit dem APEX Automations Feature (Declarative asynchronous processes ) läßt sich gut Logik im Hinterrund der Applikation bei Bedarf ausführen.
Typische Business Cases:
Workflows anstarten wenn bestimmte Daten in der Datenbank vorliegen
Regelmäßig im Hintergrund etwas starten
Vorteil:
Das Schema in der die APP läuft muss das Rechte „create Job“ besitzen!
# als SYS GRANT CREATE job TO GPI;
Anlegen in der Applikation unter “Shared Components” / ” Application Logic - Automations“
Über die Oberfläche definieren:
In der Query kann auf die letzte Ausführung der Automation referenziert werden:
SELECT * FROM {TABLE} WHERE created_at > apex_automation.get_last_run;
Im den Aktionen der Automation kann per „:“ Notation auf die Spalten in der Automation Check Query zugegriffen werden, über die API können Log Einträge erstellt und die Ausführung der Aktion gesteuert werden.
Beispiel Action:
BEGIN apex_automation.log_info( p_message => 'Found '||:ENAME ); IF :ENAME = 'Gunther' THEN apex_automation.skip_current_row( p_log_message => 'Gunther is found' ); apex_automation.log_warn( p_message => 'Gunther is found' ); END IF; IF :ENAME IS NULL THEN apex_automation.exit(p_log_message => 'No Member Name found' ); END IF; END;
Referenziert wird der Automation Task über seine Static ID.
Siehe dazu ⇒ https://docs.oracle.com/en/database/oracle/application-express/20.2/aeapi/APEX_AUTOMATION.html
Zum Beispiel über Button mit PL/SQL aufrufen:
apex_automation.execute( p_static_id => 'new-emp-message' );
Metadaten abfragen:
Was wurde angelegt:
Monitoring
Was wird erzeugt? – Wer ruft das dann auf?