Pergunta

Ei pessoal, estou me perguntando como você cria um agendador de empregos no Oracle Apex?

Estou fazendo um sistema que gerencia chamadas, cada chamada tem um nível de gravidade. Depois de uma hora, o nível de gravidade deve ser escalado. Eu procurei por horas e acho que preciso fazer um procedimento que defina um agendador de emprego e depois executa a atualização?

Se vocês pudessem jogar algumas sugestões do meu jeito, eu apreciaria!

Saúde rico

Foi útil?

Solução

Na minha opinião, a solução mais simples possível que poderia funcionar seria algo como

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;

O procedimento aumenta todos os ingressos que atendem aos seus critérios e o bloco anônimo cria um trabalho que executa o procedimento a cada minuto. Um único trabalho que dura a cada minuto (ou a cada poucos minutos, dependendo da sua tolerância por muito tempo, você pode esperar para aumentar um ingresso) será mais fácil de gerenciar do que um trabalho separado para cada bilhete que vai exatamente 1 hora após o envio .

Agora, se você deseja ficar um pouco mais sofisticado, o pacote dbms_scheduler oferece bastante funcionalidade que o pacote DBMS_JOB não. Ele fornece alguns registros automáticos, fornece a capacidade de encadear trabalhos, definir várias janelas onde os empregos fazem e não correm (ou seja, se um ingresso for criado às 5:30, você pode não querer escalá -lo às 6:30 porque é é depois de horas), etc. e dbms_scheduler é a direção que o Oracle está se movendo. Mas ainda me pego usando DBMS_JOB para tarefas relativamente simples como essa.

Outras dicas

Confira o material aqui

Eu usei o método listado por Justin com bom sucesso. Outro método que funciona bem é usar uma fila com entrega tardia. Isso oferece a capacidade de ter um programa de paginação externo ou algo que aguarde a fila por escalações. Não estou tão familiarizado com o Apex, então não tenho certeza se essa é uma boa ideia nesse contexto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top