Есть банальная задача - рассылать уведомления пользователям через RTL.SEND_EVENTS, но с условием, что если у пользователя в момент "события" не запущен навигатор, то он должен получить его при следующем входе в систему.
Стандартный запуск RTL.SEND_EVENTS просто теряет сообщение, если у получателя не запущен Навигатор.
Сразу приходят идеи на тему навернуть очередь, назапускать джобов и триггеров, но хочется изящества.
Есть таблица RTL_EVENTS, которая судя по всему как раз решает задачу очереди сообщений.
Но пока что все мои попытки заставить её работать не увенчались успехом.
Есть банальная задача - рассылать уведомления пользователям через RTL.SEND_EVENTS, но с условием, что если у пользователя в момент "события" не запущен навигатор, то он должен получить его при следующем входе в систему.
Стандартный запуск RTL.SEND_EVENTS просто теряет сообщение, если у получателя не запущен Навигатор.
Сразу приходят идеи на тему навернуть очередь, назапускать джобов и триггеров, но хочется изящества.
Есть таблица RTL_EVENTS, которая судя по всему как раз решает задачу очереди сообщений.
Но пока что все мои попытки заставить её работать не увенчались успехом.
Возможно кто-то уже решал подобную задачу?
В 15.3 появилась ОП Очередь задач.
С её помощью задача решается достаточно просто.
Ну, то есть как просто... ОП Очередь задач сама по себе является справочником, который обрабатывается джобом. В каждой записи есть функция и процедура. джоб проверяет функцию, если та возвращает null, запускает процедуру.
Ну, функция вполне может проверить gv$session в поисках пользователя из-под навигатора.
Сам механизм немножко сложнее, но для этой задачи приведённых пояснений вполне хватит.
Событийный механизм работает на платформе приложения "Фоновые процессы", оно немножко платное. Однако, насколько я помню, покупаются исполняющие процессы, а эта задача вполне решается управляющими.
Может быть есть смысл реализовать на уровне оракла - при логине юзера , если приложение Навигатор, выдавать сообщение из таблички, устанавливать в табличке признак "получено", как то так
Сообщение у получателя отображается с некоторой задержкой, по крайней мере у нас. Вот сегодня я отправлял сообщение всем пользователям в 08:41:33, а пользователи получили сообщение в интервале от 08:41:37 до 22/07/2015 08:42:31 (время согласно журналу системных событий VW_CRIT_DIARY_EVENTS).
Использование события регистрации сессии не гарантирует доставку сообщения, т.к. сразу после отправки сообщения пользователь мог закрыть АРМ. По этой же причине отправка сообщения пользователю, имеющему в текущий момент открытую сессию, не гарантирует получения им отправленного сообщения.
ИМХО, если желать "гарантированную" доставку, то надо отслеживать факт получения согласно системным журналам.
Кроме того, у нас зафиксированы инциденты, когда пользователь утверждает, что сообщения не получал, хотя в журнале отмечен факт получения. Или пользователь врет, или ТЯ глючит...
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
Домен cftclub.ru не связан с ЗАО "Центр Финансовых Технологий" и ни в коей мере не нарушает авторских и иных прав
Владелец может не разделять мнения Участников и не несет ответственности за их публикации
Powered by phpBB