Question

Hé les gars, Je me demande comment vous créez un planificateur de tâches dans Oracle APEX?

Je fais un système qui gère les appels, chaque appel a un niveau de gravité. Après une heure, le niveau de gravité doit être escaladé. J'ai cherché pendant des heures, et je suppose que je dois faire une procédure qui définit un planificateur de tâches et exécute ensuite la mise à jour?

Si vous avez pu jeter quelques suggestions mon chemin, je vous en serais reconnaissant!

Vive Rich

Était-ce utile?

La solution

A mon avis, la solution la plus simple possible qui pourrait éventuellement travailler serait quelque chose comme

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 procédure dégénère tous les billets qui répondent à vos critères et le bloc anonyme crée un travail qui exécute la procédure à chaque minute. Un travail unique qui fonctionne chaque minute (ou toutes les quelques minutes en fonction de votre tolérance longtemps que vous pouvez attendre d'intensifier un billet) va être plus facile à gérer qu'un travail distinct pour chaque billet qui fonctionne exactement 1 heure après son dépôt .

Maintenant, si vous voulez obtenir un peu plus sophistiqué, le paquet DBMS_SCHEDULER offre un peu de fonctionnalités que le package DBMS_JOB ne fonctionne pas. Il fournit une journalisation automatique, il offre la possibilité à des emplois de la chaîne, pour définir différentes fenêtres où les emplois à faire et ne courons pas (si un billet est créé à 05h30, vous voudrez peut-être de ne pas aggraver ce à 06h30 parce qu'il est après les heures), etc. Et DBMS_SCHEDULER est la direction d'Oracle est en mouvement. Mais je me trouve toujours à l'aide DBMS_JOB pour des tâches relativement simples comme celui-ci.

Autres conseils

Vérifiez ici a>

Je l'ai utilisé la méthode ci-Justin avec succès. Une autre méthode qui fonctionne bien est d'utiliser une file d'attente avec un retard de livraison. Cela vous donne la possibilité d'avoir un programme d'échange externe ou quelque chose d'attendre la file d'attente pour les escalades. Je ne suis pas familier avec APEX donc je ne suis pas sûr que ce soit une bonne idée dans ce contexte.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top