| Батчинг | Возможность использовать и комбинировать разные типы выполнения как - (1 транзакция - 1 процесс),
- (1 транзакция - N процессов).
|
| Изоляция шагов и процессов (внутри оной транзакции) | |
| БД провайдер | - Сейчас есть реализация под EntityFramework.
- Но модель позволяет сделать реализацию под другие решения (LinqToDb или чистый Ado.Net).
Для текущей реализации в качестве хранилище может выступать БД, поддерживающая: - транзакции
- savepoint (если используются)
- updatelock
- updatelock skip locked
- sharelock (можно обойтись без него)
|
| Передача сигналов для процессов через систему триггеров. | В том числе для передачи сигналов реализована система триггеров. Она позволяет оптимизировать операции с БД и уменьшить конкуренцию между процессами за общее состояние (родительский процесс). см. пример 1. |
| Перехват ошибок | Перехват и обработка ошибок, если процесс выкинул exception в движок. Реализацию простого retry с задержкой (создается триггер на следующую попытку). |
| Параллельное выполнение | Допускается запуск нескольких раннеров (на разных нодах), работающих с одной таблицей процессов для распределения нагрузки между ними. Допускается фильтрация типов процессов между нодами (чтобы нода выполняла только определенные типы процессов, в том числе по приоритету). Доступно для раннеров процессов и триггеров.
Также возможна частичная поставка новой версии процесса и этот процесс будет браться в обработку только ограниченным количеством новых нод исполнителей.
В перспективе возможны решения с шардированием. |
| Soft timeout | Возможность указывать soft timeout, который будет мягко приостанавливать цикл (внутри шага процесса), чтобы ограничить общее время транзакции (не делать транзакции долгими (например горизонт postgres)). Например родительский процесс может создать N/2 дочерних процессов за 1 сессию и N/2 за 2 сессию выполнения. |
| Range preload process data | (Необязательно) возможность в начале сессии обработки пакетно предзагружать данные и бизнес сущности для процессов (Range query) из обрабатываемого батча для оптимизации чтения. |