Изменения документа Про передачу сигнала на процесс
Редактировал(а) Alexandr Fokin 2026/06/18 22:07
От версии 1.13
отредактировано Alexandr Fokin
на 2026/05/17 10:33
на 2026/05/17 10:33
Изменить комментарий:
Renamed back-links.
К версии 1.21
отредактировано Alexandr Fokin
на 2026/06/18 22:06
на 2026/06/18 22:06
Изменить комментарий:
Renamed back-links.
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -9,18 +9,12 @@ 9 9 |(% style="width:232px" %)Wakeup condition|(% style="width:1151px" %)((( 10 10 Модуль wakeup condition проверяет условие наличия новых сигналов перед остановкой процесса. 11 11 От разработчика требуется реализация хендлера проверки условия. 12 - 13 -[[Гарантированная конкурентная доставка сигнала.>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Гарантированная конкурентная доставка сигнала.WebHome]] 14 14 ))) 15 15 |(% style="width:232px" %)Wakeup lock (Wakeup state)|(% style="width:1151px" %)((( 16 16 Модуль wakeup lock добавляет отдельную таблицу для синхронизации. 17 17 Используется только в сочетании с Wakeup condition. 18 -Решает 2 задачи: 19 -1) Информация о выполнении процесса считывается из Wakeup state (без взятия блокировки процесса). Если процесс выполняется, то сигнал считается доставленным и никаких обновлений не требуется. 20 -2) Синхронизация проверки условия Wakeup condition, гарантия что сигнал не будет утерян. 21 -В конце сессии обработки процесса Wakeup state блокируется и только после этого проверяется условие наличие новых сигналов Wakeup condition, это гарантирует что ни один поступивший сигнал не будет утерян. 22 22 23 - Такойподходпозволяет минимизироватьожиданиенаблокировках.17 +[[Гарантированная конкурентная доставка сигнала>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Гарантированная конкурентная доставка сигнала.WebHome]] 24 24 ))) 25 25 ))) 26 26 |Типы передачи сигналов|((( ... ... @@ -32,13 +32,24 @@ 32 32 |2|(% style="width:662px" %)Высокая интенсивность сигналов, высокая конкуренция за процесс. 33 33 Сигнал нужно подавать через триггер.|(% style="width:513px" %) | | | | | 34 34 |2.1|(% style="width:662px" %)Несколько конкурирующих триггеров с cannot hold lock timeout. 35 -Если не удалось получить блокировку процесса, то выполнение триггера откладывается на некоторый timeout.|(% style="width:513px" %) |+|+|-|-|- 29 +Если не удалось получить блокировку процесса, то выполнение триггера откладывается на некоторый timeout.|(% style="width:513px" %)__Триггеры <-> Процесс.__|+|+|-|-|- 36 36 |2.2|(% style="width:662px" %)Один stream триггер. 37 37 Высокая частота сигналов, но низкая конкуренция (условие активации триггера наличие необработанного сигнала и остановка процесса). 38 -Можно использовать без таблицы Wakeup lock.|(% style="width:513px" %)Transactional outbox. См [[Примеры>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Примеры.WebHome]] 3.|+|-|+|+-|- 32 +Можно использовать без таблицы Wakeup lock.|(% style="width:513px" %)__Simple stream trigger <-> Процесс.__ 33 +\\Transactional outbox. См [[Примеры>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Примеры.WebHome]] 3.|+|-|+|+-|- 34 +|2.2.1|(% style="width:662px" %)Каскад триггеров. 35 +Подход, когда 1 корневой simple stream trigger передает сигнал на процесс. 36 +А другие триггеры процесса передают сигнал не на процесс напрямую, а на корневой триггер. 37 +Данный подход позволяет использовать несколько триггеров (как в варианте 2.3), но при этом полностью убирает конкуренцию (не требует wakeup lock (и может работать без wakeup condition)).|(% style="width:513px" %)__Дочерние триггеры 38 +<-> Корневой триггер (Simple stream trigger) 39 +<-> Процесс__|+|-|+|+-|- 39 39 |2.3|(% style="width:662px" %)Несколько конкурирующих триггеров. 40 40 Высокая интенсивность сигналов, высокая конкуренция за процесс. 41 -Для сглаживания конкуренции используется Wakeup lock (share блокировка минимизирует блокировку и сглаживает конкуренцию).|(% style="width:513px" %) |+|-|-|+|+ 42 +Для сглаживания конкуренции используется Wakeup lock (share блокировка минимизирует блокировку и сглаживает конкуренцию).|(% style="width:513px" %)((( 43 +__Триггеры <-> Процесс.__ 44 + 45 +__[[Гарантированная конкурентная доставка сигнала>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Гарантированная конкурентная доставка сигнала.WebHome]]__ 46 +)))|+|-|-|+|+ 42 42 |3|(% style="width:662px" %)Периодическая проверка|(% style="width:513px" %)Процесс пробуждается каждые N timeout, используется только 1 timer trigger. См. [[Примеры>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Примеры.WebHome]] 1 (блок 2).|+|+|-|-|- 43 43 ))) 44 44 | |