Изменения документа Движок cccc1808. ProcessEngine

Редактировал(а) Alexandr Fokin 2026/04/27 13:28

От версии 27.16
отредактировано Alexandr Fokin
на 2026/04/18 17:49
Изменить комментарий: К данной версии нет комментариев
К версии 27.2
отредактировано Alexandr Fokin
на 2026/04/10 19:45
Изменить комментарий: К данной версии нет комментариев

Сводка

Подробности

Свойства страницы
Содержимое
... ... @@ -1,12 +1,11 @@
1 -|(% style="width:132px" %) |(% style="width:1301px" %)(((
2 -|Теги поиска|cccc1808. ProcessEngine, cccc1808.ProcessEngine, Process engine
1 +|(% style="width:132px" %)Теги поиска|(% style="width:1301px" %)(((
2 +cccc1808. ProcessEngine, cccc1808.ProcessEngine
3 3  Очередь задач, Система обработки процессов, Движок обработки процессов.
4 4  [[Процесс>>doc:Архитектура и модели.Модели.Процесс.WebHome]]
5 -|Описание|Универсальный движок для выполнения процессов и очередей задач, позволяющий комбинировать несколько подходов к обработке (см особенности).
6 -|Термины|Процесс является единицей исполнения. В реализации может содержать машину состояний.
7 -Система триггеров используется для таймеров и передачи сигналов для процессов (с оптимизацией нагрузки).
8 -|Репозиторий|[[https:~~/~~/github.com/cccc1808/cccc1808.ProcessEngine>>https://github.com/cccc1808/cccc1808.ProcessEngine]]
9 9  )))
6 +|(% style="width:132px" %) |(% style="width:1301px" %)Универсальный движок для выполнения процессов и очередей задач, позволяющий комбинировать несколько подходов к обработке (см особенности).
7 +|(% style="width:132px" %) |(% style="width:1301px" %)Процесс является единицей исполнения. В реализации может содержать машину состояний.
8 +Система триггеров используется для таймеров и передачи сигналов для процессов (с оптимизацией нагрузки).
10 10  |(% style="width:132px" %)Разветывание|(% style="width:1301px" %)(((
11 11  |(% style="width:150px" %)База данных|(% style="width:1177px" %)(((
12 12  Для надежного хранения данных процессов и триггеров.
... ... @@ -19,13 +19,13 @@
19 19  * Транзакции: транзакции.
20 20  * Транзакции: savepoint.
21 21  (если используются, можно обрабатывать каждый шаг отдельной транзакцией или весь процесс без savepoint изоляции ошибок между шагами).
22 -* [[Блокировки>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.WebHome]]: updatelock.
23 -* [[Блокировки>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.WebHome]]: updatelock skip locked.
21 +* Блокировка: updatelock.
22 +* Блокировка: updatelock skip locked.
24 24  (частично можно обойтись без него).
25 -* [[Блокировки>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.WebHome]]: sharelock
24 +* Блокировка: sharelock
26 26  (можно обойтись без него без сильного влияния)
27 -* [[Уровни изоляции>>doc:Разработка.Базы данных.SQL.Механизмы.Транзакции и блокировки.Уровни изоляции | Isolation levels.WebHome]]: работает на read committed, то что нужно блокируется руками.
28 -* Для некоторых кейсов желательно возможность выполнить [[Upsert>>doc:Разработка.Базы данных.SQL.Сценарии и вопросы.Insert or update\. Upsert.WebHome]] (insert on conflict).
26 +* Уровень изоляции: работает на read committed, то что нужно блокируется руками.
27 +* Для некоторых кейсов желательно возможность выполнить upsert (insert on conflict).
29 29  )))
30 30  |(% style="width:150px" %)Брокер сообщений|(% style="width:1177px" %)(((
31 31  Используется для накопления и доставки TriggerEvent.
... ... @@ -36,8 +36,8 @@
36 36  )))
37 37  )))
38 38  |(% style="width:132px" %)Особенности|(% style="width:1301px" %)(((
39 -|(% style="width:159px" %)Пакетные транзакции (батчинг).|(% style="width:1168px" %)(((
40 -Возможность использовать и комбинировать типы выполнения для разных типов процессов:
38 +|(% style="width:159px" %)Батчинг при выполнении.|(% style="width:1168px" %)(((
39 +Возможность использовать и комбинировать разные типы выполнения как
41 41  
42 42  * (1 транзакция - 1 процесс),
43 43  * (1 транзакция - N процессов).
... ... @@ -61,7 +61,6 @@
61 61  См. пример 2.
62 62  )))
63 63  |(% style="width:159px" %)Перехват ошибок|(% style="width:1168px" %)Перехват и обработка ошибок, если процесс выкинул exception в движок. Реализацию простого retry с задержкой (создается триггер на следующую попытку).
64 -В случае пакетной транзакции движок не знает какой конкретно из процессов породил ошибку (если она не перехвачена вручную), то ошибка выставляется на все незавершенные процессы.
65 65  |(% style="width:159px" %)Параллельное выполнение|(% style="width:1168px" %)Допускается запуск нескольких раннеров (на разных нодах), работающих с одной таблицей процессов для распределения нагрузки между ними.
66 66  Допускается фильтрация типов процессов между нодами (чтобы нода выполняла только определенные типы процессов, в том числе по приоритету).
67 67  Доступно для раннеров процессов и триггеров.
... ... @@ -100,16 +100,11 @@
100 100  Этот триггер выполняется периодически с более крупной временной задержкой. В случае обнаружения потери TriggerEvent, он поднимет заклинивший родительский процесс и он будет обработан (но позже). Можно установить этому триггеру низкий приоритет.
101 101  )))
102 102  |(% style="width:870px" %)[[image:Родительский дочерний процесс. Sequence.jpg]]
103 -|(% style="width:870px" %)(((
104 -
105 105  )))
106 -)))
107 107  |(% style="width:32px" %)2|(% style="width:171px" %)Transaction outbox stream process.|(% style="width:1066px" %)[[image:TransactionOutbox. Sequence.jpg]]
108 108  |(% style="width:32px" %)3|(% style="width:171px" %)Stream trigger|(% style="width:1066px" %)(((
109 109  |(% style="width:94px" %) |(% style="width:1002px" %)(((
110 110  * Позволяет убрать лишние запросы пробуждения процесса (когда он и так запущен).
111 -* Позволяет полностью убрать задержку после остановки процесса (если есть новое сообщения, то он сразу же будет пробужден).
112 -За счет того, что триггер точно знает, что есть новые сообщения и процесс только что уснул.
113 113  * Вводит 2 типа события, 1 сигнал о новом сообщении (содержит offset значение), 2 - процесс идет спать (содержит offset значение).
114 114  * Вводит дополнительное состояние в триггер: максимальный offset сообщения, максимальный offset обработанного процессом сообщения, флаг состояния сна процесса.
115 115  )))
... ... @@ -131,26 +131,4 @@
131 131  )))
132 132  )))
133 133  
134 -----
135 -
136 -==== Внутренние ссылки: ====
137 -
138 -====== Дочерние страницы: ======
139 -
140 -{{children/}}
141 -
142 -====== Обратные ссылки: ======
143 -
144 -{{velocity}}
145 -#set ($links = $doc.getBacklinks())
146 -#if ($links.size() > 0)
147 - #foreach ($docname in $links)
148 - #set ($rdoc = $xwiki.getDocument($docname).getTranslatedDocument())
149 - * [[$escapetool.xml($rdoc.fullName)]]
150 - #end
151 -#else
152 - No back links for this page!
153 -#end
154 -{{/velocity}}
155 -
156 -----
127 +