dbms_job / oracle планировщик заданий
-
25-09-2019 - |
Вопрос
Эй, ребята, мне интересно, как вы создаете планировщик работы в oracle apex?
Я делаю систему, которая управляет звонками, у каждого вызова есть уровень серьезности. Через час уровень тяжести должен быть обостлеен. Я искал часы, и я думаю, что мне нужно сделать процедуру, которая определяет планировщик заданий, а затем запускает обновление?
Если вы, ребята, могут бросить несколько предложений, я бы признателен!
Ура богатых
Решение
На мой взгляд, самое простое возможное решение, которое могло бы работать, будет что-то вроде
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;
Процедура повышает все билеты, которые соответствуют вашим критериям, и анонимный блок создает работу, которая запускает процедуру каждую минуту. Одна работа, работающая каждую минуту (или каждые несколько минут в зависимости от вашей допуска, надолго вы можете дождаться, чтобы обострить билет), будет проще управлять, чем отдельная работа для каждого билета, который работает ровно 1 час после того, как он был представлен Отказ
Теперь, если вы хотите получить немного более сложной, пакет DBMS_SCHEDULER предлагает довольно много функциональности, что пакет DBMS_JOB нет. Он обеспечивает некоторую автоматическую регистрацию, он обеспечивает возможность цепи рабочих мест, чтобы определить различные окна, где работают рабочие места и не запускаются (т. Е. Если билет создан в 5:30, вы, возможно, не захотите обострить его в 6:30, потому что это это через часы), и т. Д. И DBMS_SCHeduler - это направление Oracle движется. Но я все еще нахожусь, используя DBMS_JOB для относительно простых задач, таких как это.
Другие советы
Проверьте материал здесь
Я использовал метод, перечисленный Джастином с хорошим успехом. Другой метод, который хорошо работает, это использовать очередь с задержкой доставки. Это дает вам возможность иметь внешнюю пейджинговую программу или что-то еще в ожидании очереди для эскалаций. Я не так знаком с вершиной, поэтому я не уверен, что это хорошая идея в этом контексте.