Редактировал(а) Alexandr Fokin 2026/06/18 22:07

Скрыть последних авторов
Alexandr Fokin 1.1 1 | |
2 |Описание колонок|(((
3 |(% style="width:232px" %) |(% style="width:1151px" %)
4 |(% style="width:232px" %)Триггер|(% style="width:1151px" %)Используется ли триггер
Alexandr Fokin 1.2 5 |(% style="width:232px" %)Избыточная задержка сигнала|(% style="width:1151px" %)Свойство обозначающее, что процесс может получить сигнал (и продолжить обработку) позже чем мог бы (при использовании других подходов).
Alexandr Fokin 1.1 6 |(% style="width:232px" %)Stream триггер|(% style="width:1151px" %)Триггер, отслеживающий состояние процесса (выполняется он или нет).
7 Реализуется через отправку TriggerEvent в момент остановки выполнения процесса (делается автоматически если зарегистрирован).
Alexandr Fokin 1.11 8 Пробуждает процесс (передает новый сигнал), только после того как процесс перешел в состояние ожидания.
Alexandr Fokin 1.12 9 |(% style="width:232px" %)Wakeup condition|(% style="width:1151px" %)(((
10 Модуль wakeup condition проверяет условие наличия новых сигналов перед остановкой процесса.
Alexandr Fokin 1.1 11 От разработчика требуется реализация хендлера проверки условия.
Alexandr Fokin 1.12 12 )))
Alexandr Fokin 1.9 13 |(% style="width:232px" %)Wakeup lock (Wakeup state)|(% style="width:1151px" %)(((
14 Модуль wakeup lock добавляет отдельную таблицу для синхронизации.
Alexandr Fokin 1.1 15 Используется только в сочетании с Wakeup condition.
16
Alexandr Fokin 1.21 17 [[Гарантированная конкурентная доставка сигнала>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Гарантированная конкурентная доставка сигнала.WebHome]]
Alexandr Fokin 1.1 18 )))
19 )))
20 |Типы передачи сигналов|(((
Alexandr Fokin 1.9 21 | |(% style="width:662px" %)Тип|(% style="width:513px" %)Пример|Триггер|Избыточная задержка сигнала|Stream триггер|Wakeup condition|Wakeup lock
Alexandr Fokin 1.10 22 |1|(% style="width:662px" %)Низкая интенсивность сигналов, низкая конкуренция за процесс.|(% style="width:513px" %)(((
Alexandr Fokin 1.1 23 Линейный процесс отправил запрос и ждет 1 событие ответ.
Alexandr Fokin 1.3 24 Хендлер события пробуждает процесс напрямую.
Alexandr Fokin 1.1 25 )))|-|-|-|-|-
Alexandr Fokin 1.10 26 |2|(% style="width:662px" %)Высокая интенсивность сигналов, высокая конкуренция за процесс.
27 Сигнал нужно подавать через триггер.|(% style="width:513px" %) | | | | |
Alexandr Fokin 1.2 28 |2.1|(% style="width:662px" %)Несколько конкурирующих триггеров с cannot hold lock timeout.
Alexandr Fokin 1.16 29 Если не удалось получить блокировку процесса, то выполнение триггера откладывается на некоторый timeout.|(% style="width:513px" %)__Триггеры <-> Процесс.__|+|+|-|-|-
Alexandr Fokin 1.10 30 |2.2|(% style="width:662px" %)Один stream триггер.
31 Высокая частота сигналов, но низкая конкуренция (условие активации триггера наличие необработанного сигнала и остановка процесса).
Alexandr Fokin 1.16 32 Можно использовать без таблицы Wakeup lock.|(% style="width:513px" %)__Simple stream trigger <-> Процесс.__
Alexandr Fokin 1.22 33 \\Transactional outbox. См [[Примеры>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Примеры.WebHome]] 3.|+|-|+|+-|-
Alexandr Fokin 1.15 34 |2.2.1|(% style="width:662px" %)Каскад триггеров.
Alexandr Fokin 1.16 35 Подход, когда 1 корневой simple stream trigger передает сигнал на процесс.
Alexandr Fokin 1.17 36 А другие триггеры процесса передают сигнал не на процесс напрямую, а на корневой триггер.
Alexandr Fokin 1.16 37 Данный подход позволяет использовать несколько триггеров (как в варианте 2.3), но при этом полностью убирает конкуренцию (не требует wakeup lock (и может работать без wakeup condition)).|(% style="width:513px" %)__Дочерние триггеры
38 <-> Корневой триггер (Simple stream trigger)
39 <-> Процесс__|+|-|+|+-|-
Alexandr Fokin 1.10 40 |2.3|(% style="width:662px" %)Несколько конкурирующих триггеров.
41 Высокая интенсивность сигналов, высокая конкуренция за процесс.
Alexandr Fokin 1.20 42 Для сглаживания конкуренции используется Wakeup lock (share блокировка минимизирует блокировку и сглаживает конкуренцию).|(% style="width:513px" %)(((
43 __Триггеры <-> Процесс.__
44
Alexandr Fokin 1.21 45 __[[Гарантированная конкурентная доставка сигнала>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Гарантированная конкурентная доставка сигнала.WebHome]]__
Alexandr Fokin 1.20 46 )))|+|-|-|+|+
Alexandr Fokin 1.22 47 |3|(% style="width:662px" %)Периодическая проверка|(% style="width:513px" %)Процесс пробуждается каждые N timeout, используется только 1 timer trigger. См. [[Примеры>>doc:Проекты и репозитории.Библиотеки.Движок cccc1808\. ProcessEngine.Тема\. Сигналы и триггеры.Примеры.WebHome]] 1 (блок 2).|+|+|-|-|-
Alexandr Fokin 1.1 48 )))
49 | |
50
51