@processengine/rules
v2.0.1
Published
ProcessEngine rules runtime for declarative validation artifacts
Maintainers
Readme
@processengine/rules
@processengine/rules — библиотека семейства ProcessEngine для исполнения декларативных артефактов валидации.
Её роль в общей цепочке такая:
mappingsнормализуют и интерпретируют данныеrulesпроверяет данные и возвращает структурированный результат с issuesdecisionsвыбирает outcome по factsflowsуправляет длительным бизнес-процессом
Канонический API
import {
validateRules,
prepareRules,
evaluateRules,
RulesCompileError,
RulesRuntimeError,
formatRulesDiagnostics,
formatRulesRuntimeError,
} from '@processengine/rules';Быстрый старт
import { prepareRules, evaluateRules } from '@processengine/rules';
const source = {
artifacts: [
{
id: 'library.person.first_name_required',
type: 'rule',
description: 'Имя обязательно',
role: 'check',
operator: 'not_empty',
field: 'person.firstName',
level: 'ERROR',
code: 'PERSON.FIRST_NAME.REQUIRED',
message: 'Имя обязательно',
},
{
id: 'entry.registration',
type: 'pipeline',
description: 'Проверка регистрации',
entrypoint: true,
strict: false,
flow: [{ rule: 'library.person.first_name_required' }],
},
],
};
const artifact = prepareRules(source);
const result = evaluateRules(artifact, {
pipelineId: 'entry.registration',
payload: { person: { firstName: '' } },
});Validate / prepare / evaluate
validateRules(source, options?)возвращает{ ok, diagnostics }и не бросает исключение на невалидном source.prepareRules(source, options?)возвращает prepared artifact или бросаетRulesCompileError.evaluateRules(artifact, input, options?)работает только с prepared artifact и не делает скрытую compile-фазу.
Контракт runtime-результата
evaluateRules(...) возвращает предметный результат проверки:
status:OK | OK_WITH_WARNINGS | ERROR | EXCEPTION | ABORTcontrol:CONTINUE | STOPissues: массив структурированных нарушенийtrace?: трассировка, если она была включенаerror: runtime error только дляABORT
Trace
Поддерживаются режимы:
false'basic''verbose'
По умолчанию trace выключен. basic даёт компактную картину исполнения. verbose дополнительно может включать input/output trace-событий после редактирования через traceRedactor.
Custom operators
Кастомные operator packs являются частью всей канонической цепочки:
import { validateRules, prepareRules, evaluateRules } from '@processengine/rules';
const operators = {
check: {
always_fail() {
return { status: 'FAIL' };
},
},
};
const validation = validateRules(source, { operators });
const artifact = prepareRules(source, { operators });
const result = evaluateRules(artifact, input);Границы и non-goals
@processengine/rules:
- не выбирает бизнес-исходы вместо
decisions - не оркестрирует длительные процессы вместо
flows - не выполняет внешние вызовы и побочные эффекты
- не заменяет слой facts между валидацией и decisions
Документация
docs/SPEC.mddocs/SPEC_RU.mddocs/COMPATIBILITY.mddocs/MIGRATION.mdCHANGELOG.mdexamples/
Межбиблиотечный стык
Публичный runtime-result evaluateRules(...) приведён к transport-safe / JSON-safe нормативному shape. Его можно напрямую передавать в следующий слой семейства ProcessEngine без промежуточной ручной очистки в хост-сервисе.
