Детали задачи
-
История
-
Решение: Готово
-
High
-
Не заполнено
-
Не заполнено
-
Не заполнено
Описание
1. Добавить сущность таймера и сервис для работы с таймерами:
{ "id": EntityUuid, <- идентификатор с тенантом и UUID. Описан в ecos-process "retryCounter": 0, <- количество повторений, которые были уже выполнены (повторение начинается если при выполнении команды мы получили ошибку). "triggerTime": "2020-04-10T00:00:00Z", <- время когда таймер должен сработать "active": true, <- флаг активности "command": {<- команда для выполнения при срабатывании таймера "id": String, "targetApp": String, "type": String, "body": JsonNode }, "result": {...} <- результат выполнения команды }
2. Добавить команду на создание таймера (за примерами см. ru\\citeck\\ecos\\process\\service
commands):
{ "retryCount": 10, "triggerTime": "2020-04-10T00:00:00Z", "command": {<- команда для выполнения при срабатывании таймера "id": String, "targetApp": String, "type": String, "body": JsonNode } }
Ответ:
{ "timerId": String }
3. Добавить джобу, которая раз в минуту (при этом если предыдущий запуск не завершился нельзя начинать новый) будет искать все активные таймеры, у которых triggerTime меньше чем текущее время и выполнять команду, которая записана в command через commandsService.
Если команда выполнилась успешно (errors.size() == 0), то помечаем таймер как не активный (active = false).
Если команда выполнилась не успешно, то увеличиваем retryCount на 1 и меняем triggerTime на текущее время + 10 минут * retryCount.
При этом в логах обязательно должно быть сообщение об ошибках выполнения команды.
Прим. Команда должна выполняться в том же тенанте, который записан в ID таймера
Статья по командам (не очень подробная) https://citeck.atlassian.net/wiki/spaces/knowledgebase/pages/1129840746/ECOS+Commands
Вложенные файлы
Связи запроса
- relates to
-
ECOSCOM-3512 [ALF] Develop timers support for eproc cmmn realization
-
- Готово
-