Планировщик уведомлений и дизайнер в Java: рекомендации по реализации - PullRequest
0 голосов
/ 29 августа 2010

Я пишу заявление для врача, который должен иметь возможность определять уведомления, которые будут отображаться на компьютере пациента. Эти уведомления назначаются врачом, поэтому он / она может выбирать, когда они появятся. Например: «Помни о приёме таблеток», показывай раз в неделю, с января по июль 2010 года.

Так что это было бы что-то вроде планировщика событий Календаря Google, но с более богатыми временными условиями. Мне интересно, для чего рекомендовано решение / инструмент:

  • Планировщик уведомлений на стороне клиента. Клиентское приложение является Java-приложением. Он должен иметь планировщик фоновых событий, который проверяет наличие новых уведомлений и применяются ли к ним условия синхронизации.
  • Дизайнер уведомлений / менеджер на стороне сервера. Приложение врача должно быть в состоянии показать визуальный инструмент для определения сроков (в том числе и в Java). Уведомления хранятся в базе данных для удаленного доступа через веб-сервис.

Существует ли инструмент с открытым исходным кодом для решения этой проблемы? Кроме того, я читал о Drools, но это совершенно новая тема для меня. Любая рекомендация по этому поводу?

Ответы [ 2 ]

0 голосов
/ 29 августа 2010

Похоже, у вас есть 3 отдельные, но связанные проблемы:

  1. Планирование одного или нескольких будущих событий.
  2. Постоянство расписания и связанных с ним контекстных данных.
  3. Push-модель для [повторной] доставки события планирования с сервера на клиент.

Более или менее верно?

Для планирования и сохранения я рекомендую взглянуть на Кварц . Он предоставит вам чистый API для планирования (одноразовое или повторяющееся) с некоторой гибкостью, включая фиксированный период или cron. Он также сохранит данные расписания и контекст (именуемый Job ) в базе данных JDBC.

Что касается # 3, мне неясно, как вы хотите, чтобы это работало, но один из возможных способов, которым это может работать, заключается в том, что, когда клиент подключается к серверу, он непостоянно кэширует сервер при условии, что к нему применяются запланированные события клиент (или пользователь и т. д.). Когда клиент выключается, эти события отбрасываются, но возобновляются при следующем подключении. Как только события загружаются в клиент, клиент принимает на себя ответственность за их запуск с помощью своего собственного локального планировщика (Quartz или даже более упрощенный ScheduledThreadPoolExcutor ).

Drools - отличный движок правил, но он может быть излишним из-за того, что вы пытаетесь сделать.

// Николай

0 голосов
/ 29 августа 2010

Доступны различные планировщики с открытым исходным кодом.

Кварц - один из них, обеспечивает точный контроль за планированием задач.

...