Изменения документа Движок cccc1808. ProcessEngine
Редактировал(а) Alexandr Fokin 2026/04/27 13:28
От версии 1.6
отредактировано Alexandr Fokin
на 2026/04/10 14:26
на 2026/04/10 14:26
Изменить комментарий:
К данной версии нет комментариев
К версии 1.8
отредактировано Alexandr Fokin
на 2026/04/10 14:31
на 2026/04/10 14:31
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -17,6 +17,14 @@ 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 (можно обойтись без него) 20 20 ))) 21 21 |(% style="width:159px" %)Передача сигналов для процессов через систему триггеров.|(% style="width:1168px" %)((( 22 22 В том числе для передачи сигналов реализована система триггеров. ... ... @@ -43,7 +43,7 @@ 43 43 ))) 44 44 |(% style="width:870px" %)TriggerEvent публикуются без использования TransactionOutbox напрямую в брокер после коммита транзакции (иначе мы бы нагружали БД). 45 45 |(% style="width:870px" %)((( 46 -Предполагаем, что основную часть времени система работает стабильно, но допускается ситуация, что транзакция закоммитилась, но TriggerEvent не смогли опубликоваться (остановка сервиса без graceful shutdown, проблемы соединения или работы с брокером сообщений. 54 +Предполагаем, что основную часть времени система работает стабильно, но допускается ситуация, что транзакция закоммитилась, но TriggerEvent не смогли опубликоваться (остановка сервиса без graceful shutdown, проблемы соединения или работы с брокером сообщений). 47 47 48 48 Для таких случаев создается страхующий триггер (1 общий на тип процесса). Этот триггер запускается периодически и проходится по всем ожидающим процессам, проверяя условие (в реализации можно использовать keyset пагинацию) (в реализации можно использовать join для проверки условия). 49 49 Этот триггер выполняется периодически с более крупной временной задержкой. В случае обнаружения потери TriggerEvent, он поднимет заклинивший родительский процесс и он будет обработан (но позже). Можно установить этому триггеру низкий приоритет.