Изменения документа Движок cccc1808. ProcessEngine
Редактировал(а) Alexandr Fokin 2026/04/27 13:28
От версии 1.8
отредактировано Alexandr Fokin
на 2026/04/10 14:31
на 2026/04/10 14:31
Изменить комментарий:
К данной версии нет комментариев
К версии 1.6
отредактировано Alexandr Fokin
на 2026/04/10 14:26
на 2026/04/10 14:26
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -17,14 +17,6 @@ 17 17 |(% style="width:159px" %)БД провайдер|(% style="width:1168px" %)((( 18 18 * Сейчас есть реализация под EntityFramework. 19 19 * Но модель позволяет сделать реализацию под другие решения (LinqToDb или чистый Ado.Net). 20 - 21 -Для текущей реализации в качестве хранилище может выступать БД, поддерживающая: 22 - 23 -* транзакции 24 -* savepoint (если используются) 25 -* updatelock 26 -* updatelock skip locked 27 -* sharelock (можно обойтись без него) 28 28 ))) 29 29 |(% style="width:159px" %)Передача сигналов для процессов через систему триггеров.|(% style="width:1168px" %)((( 30 30 В том числе для передачи сигналов реализована система триггеров. ... ... @@ -51,7 +51,7 @@ 51 51 ))) 52 52 |(% style="width:870px" %)TriggerEvent публикуются без использования TransactionOutbox напрямую в брокер после коммита транзакции (иначе мы бы нагружали БД). 53 53 |(% style="width:870px" %)((( 54 -Предполагаем, что основную часть времени система работает стабильно, но допускается ситуация, что транзакция закоммитилась, но TriggerEvent не смогли опубликоваться (остановка сервиса без graceful shutdown, проблемы соединения или работы с брокером сообщений ).46 +Предполагаем, что основную часть времени система работает стабильно, но допускается ситуация, что транзакция закоммитилась, но TriggerEvent не смогли опубликоваться (остановка сервиса без graceful shutdown, проблемы соединения или работы с брокером сообщений. 55 55 56 56 Для таких случаев создается страхующий триггер (1 общий на тип процесса). Этот триггер запускается периодически и проходится по всем ожидающим процессам, проверяя условие (в реализации можно использовать keyset пагинацию) (в реализации можно использовать join для проверки условия). 57 57 Этот триггер выполняется периодически с более крупной временной задержкой. В случае обнаружения потери TriggerEvent, он поднимет заклинивший родительский процесс и он будет обработан (но позже). Можно установить этому триггеру низкий приоритет.