Исходный код вики Надежность триггеров

Версия 1.2 от Alexandr Fokin на 2026/07/28 15:02

Последние авторы
1 |(% style="width:135px" %)EmergencyTrigger|(% style="width:1298px" %)(((
2 Запускается периодически, проходится по триггерам и проверяет их состояние.
3
4 |(% style="width:405px" %)**Наименование**|(% style="width:405px" %)**Критерий**|(% style="width:875px" %)**Обработка**
5 |(% style="width:405px" %)1.1) Процесс удален или завершен.|(% style="width:405px" %)(((
6 * Экземпляра процесса нет в БД.
7 * Экземпляр процесса в статусе завершен.
8 )))|(% style="width:875px" %)Триггер удаляется (если завершен, то напрямую, иначе - через событие).
9 |(% style="width:405px" %)1.2) Каскад триггеров. Корневой триггер не найден / удален.|(% style="width:405px" %)(((
10 * Экземпляра коневого триггера нет в БД.
11 )))|(% style="width:875px" %)Триггер удаляется.
12 |(% style="width:405px" %)1.3) Каскад триггеров. Дочерний триггер не получил подтверждение доставки сигнала от корневого триггера (если используется подтверждение доставки сигнала).|(% style="width:405px" %)(((
13 * Дочерний триггер находится в состояние подтверждения ответа
14 и таймаут по дате отправки сигнала.
15 )))|(% style="width:875px" %)Сигнал от дочернего триггера к корневому триггеру посылается повторно.
16 |(% style="width:405px" %)1.4) Стрим триггер. Потеря события о том, что процесс перешел в режим ожидания события.|(% style="width:405px" %)(((
17 * В состоянии стрим триггера отображается, что процесс находится в состоянии асинхронного выполнения
18 и таймаут по дате резервирования.
19 * Процесс находится в состоянии ожидания.
20 )))|(% style="width:875px" %)Публикация на триггер события о необходимости перепроверить статус процесс.
21 Событие - т.к. тут не берется блокировка на триггер и он может активно получать сигналы.
22 |(% style="width:405px" %)2 Проверка зависания триггера.|(% style="width:405px" %)Среди необработанных триггеров выбираем с блокировкой, пропускаю заблокированные. По следующему набору условий:(((
23 * Не завершен.
24 * Не активирован.
25 * Не является корневым триггером.
26 * Таймаут по дате резервирования.
27
28 Например: зависший CounterTrigger или StreamTrigger, потеря события сигнала.
29 )))|(% style="width:875px" %)(((
30 1. Проверяем условие активации триггера.
31 (Предполагается, что триггер корректно реализовал проверку условия активации. В хендлер проверки передается флаг, что это вызов из EmergencyTrigger - точно нужна проверка (а не просто реакция на сигнал)).
32 1. Если требуется активация, то выполняем обработку триггера.
33
34
35 )))
36 )))
37 |(% style="width:135px" %) |(% style="width:1298px" %)
38
39