Детали задачи
-
История
-
Решение: Готово
-
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
-
- Готово
-