Изменения документа Движок cccc1808. ProcessEngine
Редактировал(а) Alexandr Fokin 2026/04/27 13:28
От версии 27.10
отредактировано Alexandr Fokin
на 2026/04/11 00:26
на 2026/04/11 00:26
Изменить комментарий:
К данной версии нет комментариев
К версии 27.11
отредактировано Alexandr Fokin
на 2026/04/11 00:30
на 2026/04/11 00:30
Изменить комментарий:
К данной версии нет комментариев
Сводка
-
Свойства страницы (1 изменено, 0 добавлено, 0 удалено)
Подробности
- Свойства страницы
-
- Содержимое
-
... ... @@ -99,11 +99,11 @@ 99 99 ))) 100 100 |(% style="width:870px" %)[[image:Родительский дочерний процесс. Sequence.jpg]] 101 101 |(% style="width:870px" %)((( 102 -Возможен вариант №2, когда мы просто ставит timerTrigger на условно 1-5 минуту (насколько важна задержка) и перепроверяем условие завершения (по нагрузке на БД будет еще меньше). Из минус, что родительский процесс узнает о завершении дочерних процессов с задержкой (хотя в задержке можно использовать функцию от количества необработанных дочерних процессов, но тогда нужно считать количество).102 +Возможен вариант №2, когда мы просто ставит timerTrigger на условно 1-5-10 минуту (насколько важна задержка) и перепроверяем условие завершения. Из минус, что родительский процесс узнает о завершении дочерних процессов с задержкой (хотя в задержке можно использовать функцию от количества необработанных дочерних процессов, но тогда нужно считать количество или хотя бы что оно не больше N). 103 103 104 104 * Но тут будет join нагрузка на БД (если шаг проверки выполняется пакетно), иначе будет просто много одиночны запросов на чтение (условно раз в минуту). 105 -* Если дочерний процесс остановиться в ошибке, то родительский либо также продолжит крутиться в проверке, либо должен также пробросить ошибку в себя чтобы приостановиться. 106 -При это если родительский процесс остановиться при обнаружении хотя бы одной ошибки в дочернем процессе, то стартануть нужно будет и родительский (он сам не узнает), а в случае с сигналом останавливать родительский процесс не нужно. 105 +* Если дочерний процесс остановиться в ошибке, то родительский либо также продолжит крутиться в проверке (впустую доя разрешения проблемы), либо должен также пробросить ошибку в себя чтобы приостановиться. 106 +При это если родительский процесс приостановиться при обнаружении хотя бы одной ошибки в дочернем процессе, то стартануть нужно будет и родительский (он сам не узнает), а в случае с сигналом останавливать родительский процесс не нужно. 107 107 В случае с решением 1, со страхующим триггером это можно обойти через фильтрующий индекс если мы начинаем идти сразу с таблицы процессов (т.е. процессы с ошибкой сразу будут игнорироваться). 108 108 * Но все равно, именно данный движек может позволить настроить 2 процесса таким образом, что 1 процесс будет исполняться (1 процесс - 1 транзакция) в параллельном режиме (пока создаются множественные дочерние процессы), 2 процесс будет исполняться в пакетном режиме (N процессов - 1 транзакция) чтобы проверять выполнение условия завершения дочерних процессов через запрос (один пакетный). 109 109