Domanda

Hey guys, Mi chiedo come si crea un job scheduler in Oracle APEX?

Sto facendo un sistema che gestisce le chiamate, ogni chiamata ha un livello di gravità. Dopo un'ora, il livello di gravità deve essere intensificato. Ho cercato per ore, e credo che ho bisogno di fare una procedura che definisce un job scheduler e quindi esegue l'aggiornamento?

Se voi ragazzi potrebbe gettare alcuni suggerimenti a modo mio, sarei grato!

Saluti Ricco

È stato utile?

Soluzione

A mio avviso, la soluzione più semplice possibile che potrebbe lavoro sarebbe qualcosa di simile

CREATE PROCEDURE escalate_cases
AS
BEGIN
  UPDATE tickets
     SET status = 'ESCALATED'
   WHERE status = 'NOT ESCALATED'
     AND open_date < sysdate - interval '1' hour;
END escalate_cases;

DECLARE
  l_jobno PLS_INTEGER;
BEGIN
  dbms_job.submit( 
    l_jobno,
    'BEGIN escalate_cases(); END;',
    sysdate + interval '1' minute,
    'sysdate + interval ''1'' minute'
  );
  dbms_output.put_line( 'Job ' || l_jobno || ' submitted.' );
  commit;
END;

La procedura si intensifica tutti i biglietti che soddisfano i criteri e il blocco anonimo crea un processo che viene eseguito la procedura ogni minuto. Un unico processo che viene eseguito ogni minuto (o ogni pochi minuti a seconda della vostra tolleranza per tempo si può attendere a crescere un biglietto) sta per essere più facile da gestire di un lavoro separato per ogni biglietto che corre esattamente 1 ora dopo che è stata presentata .

Ora, se si vuole ottenere un po 'più sofisticato, il pacchetto DBMS_SCHEDULER offerte un po' di funzionalità che il pacchetto DBMS_JOB non lo fa. Esso fornisce un po 'di logging automatico, offre la possibilità di posti di lavoro a catena, per definire le varie finestre dove i lavori fanno e non vengono eseguiti (cioè se il biglietto è stato creato alle 5:30, non si può decidere di intensificare esso alle 6:30 perché è dopo ore), ecc E DBMS_SCHEDULER è la direzione di Oracle si sta muovendo. Ma mi trovo ancora usando DBMS_JOB per compiti relativamente semplici come questo.

Altri suggerimenti

Scopri il materiale qui

Ho usato il metodo elencato da Justin con buon successo. Un altro metodo che funziona bene è quello di utilizzare una coda con la consegna ritardata. Che ti dà la possibilità di avere un programma di impaginazione o di qualcosa di esterno di attesa in coda per le escalation. Io non sono che la familiarità con APEX quindi non sono sicuro se questo è una buona idea in quel contesto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top