Задача граничного события таймера

#java #bpmn #business-process-management #camunda-modeler

#java #bpmn #управление бизнес-процессами #camunda-моделист

Вопрос:

У меня есть задача, в которой вам нужно отправить уведомление, если крайний срок планирования приближается и осталось 30 дней, а также отправить уведомление за 5 дней до истечения оставшегося срока. Я много искал сейчас, и теперь я не могу найти ответ на какой элемент и как это сделать. Я думал использовать событие таймера, но если я делаю это с помощью cron, то как понять, что нужно оставить задачу и не запускать схему снова каждый раз, если отправка уведомления не актуальна

Ответ №1:

Timer класс, как правило, устарел из-за службы запланированного исполнителя, предоставляемой платформой исполнителей.

Запланируйте задачу, которая время от времени выполняется, чтобы увидеть, приближаются ли этапы крайнего срока.

 if( thirtyDayNoticeNotYetSent ) {
    LocalDate then = … retrieve date due … ;
    LocalDate today = LocalDate.now( ZoneId.of( "America/Edmonton" ) ) ;
    long daysUntil = ChronoUnit.DAYS.between( today , then ) ; 
    if( daysUntil < 30 ) { send notification … }
}
 

Аналогичным образом выполните поиск заданий, которые еще не получили уведомления за 5 дней, и рассчитайте прошедшие дни. Если меньше пяти, отправьте уведомление и запишите этот факт.

Служба запланированного исполнителя была рассмотрена много раз при переполнении стека. Итак, ищите, чтобы узнать больше.