Схема языка процессов
Справочник полей языка пакетов процессов: вид каталога Process,
производственный календарь Calendar и тесты пакета *.test.yaml. Таблицы
построены из JSON Schema packages/schema/v1 и повторяют её поле в поле.
Статья для авторов пакетов; как этим пользоваться, объясняют
Процессы, Выражения и
Тесты пакета.
Схема — первая ступень проверки
Схема проверяет форму описания. Вторую ступень — типы выражений,
неизвестные поля данных, достижимость шагов, ссылки на типы задач и
скиллы, пробелы таблиц решений — выполняет ядро при проверке пакета
(см. Тесты пакета).
Процесс (kind: Process)
Раздел генерируется make docs-gen из кода — не правьте его руками.
Источник: packages/schema/v1/object.schema.json.
processSpec
Процесс (TAI-ADR-0054, CP-ADR-0074): кейс со стадиями и блоками исполнения, данные по схеме, выражения CEL, проекция в память. Исполняет ядро
| Поле |
Тип |
Обязательно |
Описание |
version |
integer |
да |
Версия определения: опубликованная версия неизменяема |
displayName |
displayName |
да |
|
description |
string |
|
|
workspaceId |
string |
|
|
identity |
объект |
|
От чьего имени действует процесс: описание агента вида service или agent |
owner |
assignChain |
|
Владелец процесса — ему адресуются задачи о процессе: расхождение с регламентом, ошибки экземпляров (TAI-ADR-0054 п.5, амендмент 2026-09-27). Не обязателен; проверка пакета предупреждает, если его нет |
calendar |
typeKey |
|
Календарь по умолчанию для cal.* |
data |
jsonSchema |
да |
JSON Schema данных экземпляра; {$ref: <файл пакета>} раскрывает cp_packages |
start |
объект |
да |
|
correlate |
array of объект |
|
|
stages |
array of processStage |
да |
|
onEvent |
array of объект |
|
|
timers |
processTimers |
|
|
decisions |
array of decisionTable |
|
|
governedBy |
governedBy |
|
|
memory |
memoryProjection |
|
|
retrospective |
объект |
|
Разбор закрытого дела: агент предлагает уроки, человек подтверждает (TAI-ADR-0054 Р18) |
migrations |
array of объект |
|
|
processSpec.identity
От чьего имени действует процесс: описание агента вида service или agent
| Поле |
Тип |
Обязательно |
Описание |
agent |
slug |
да |
|
processSpec.start
| Поле |
Тип |
Обязательно |
Описание |
on |
processTrigger |
да |
|
key |
cel |
да |
Ключ экземпляра: повтор события с тем же ключом — correlate, а не новый экземпляр |
set |
celMap |
|
|
processSpec.correlate[]
processSpec.onEvent[]
processSpec.retrospective
Разбор закрытого дела: агент предлагает уроки, человек подтверждает (TAI-ADR-0054 Р18)
| Поле |
Тип |
Обязательно |
Описание |
skill |
string |
|
По умолчанию process.retrospective@1. |
taskType |
typeKey |
да |
|
assign |
assignChain |
да |
|
appliesTo |
array of string |
|
Виды сущностей, к которым привязываются уроки |
when |
cel |
|
|
processSpec.migrations[]
| Поле |
Тип |
Обязательно |
Описание |
from |
integer |
да |
|
to |
integer |
да |
|
policy |
pin | migrate |
да |
|
map |
map → processElementId |
|
|
processStage
Стадия кейса (CMMN): вход и выход по сторожам, вехи, обязательная и необязательная работа
| Поле |
Тип |
Обязательно |
Описание |
id |
processElementId |
да |
|
displayName |
displayName |
|
|
entry |
cel |
|
Сторож входа; stage.<id>.completed, milestone.<id> и data доступны в выражении |
exit |
cel |
|
|
repeatable |
boolean |
|
|
governedBy |
governedBy |
|
|
steps |
blocks |
да |
|
discretionary |
array of processStep |
|
Работа, которую человек добавляет по решению |
milestones |
array of объект |
|
|
timers |
processTimers |
|
|
processStage.milestones[]
processStep
Шаг процесса: ровно один вид (human, approve, call, decide, recall, remember, listen, wait, set, raise, compensate, fork, try, do, suspend, resume, complete) плюс общие поля
| Поле |
Тип |
Обязательно |
Описание |
id |
processElementId |
да |
|
displayName |
displayName |
|
|
when |
cel |
|
Сторож: шаг выполняется, только если истинно |
input |
объект |
|
|
output |
объект |
|
Запись результата шага (step.result) в данные экземпляра |
export |
объект |
|
|
governedBy |
governedBy |
|
|
onCompensate |
blocks |
|
Компенсация сделанного шага: выполняется при compensate в обратном порядке |
human |
объект |
|
|
approve |
объект |
|
|
call |
объект |
|
|
decide |
объект |
|
|
recall |
объект |
|
Запрос к памяти через ядро; ответ — событие журнала (детерминированный replay) |
remember |
объект |
|
Запись в память наблюдением ядра от identity процесса, со ссылкой на дело |
listen |
объект |
|
Ожидание первого из событий (отложенный выбор); timeout — таймер |
wait |
durationOrCel |
|
|
set |
celMap |
|
|
raise |
processError |
|
|
compensate |
= all или array of processElementId |
|
Выполнить onCompensate сделанных шагов в обратном порядке |
fork |
объект |
|
|
try |
объект |
|
|
do |
blocks |
|
|
suspend |
объект |
|
|
resume |
объект |
|
|
complete |
объект |
|
|
Ровно одно из: human, approve, call, decide, recall, remember, listen, wait, set, raise, compensate, fork, try, do, suspend, resume, complete.
| Поле |
Тип |
Обязательно |
Описание |
from |
cel |
|
|
processStep.output
Запись результата шага (step.result) в данные экземпляра
| Поле |
Тип |
Обязательно |
Описание |
as |
celMap |
|
|
processStep.export
| Поле |
Тип |
Обязательно |
Описание |
as |
celMap |
|
|
processStep.human
processStep.approve
| Поле |
Тип |
Обязательно |
Описание |
taskType |
typeKey |
|
|
approvers |
assignChain |
да |
|
mode |
parallel | sequential |
|
По умолчанию parallel. |
quorum |
all | any или объект {atLeast} или объект {percent} |
да |
|
earlyDecision |
boolean |
|
По умолчанию true. |
separationOfDuties |
cel |
|
CEL → список principal, которым голосовать нельзя; проверяет ядро при решении |
due |
durationOrCel |
|
|
onDue |
approve | reject | escalate |
|
|
escalations |
array of escalation |
|
|
context |
stepContext |
|
|
processStep.call
Ровно одно из: skill, agent, process.
processStep.decide
processStep.recall
Запрос к памяти через ядро; ответ — событие журнала (детерминированный replay)
processStep.remember
Запись в память наблюдением ядра от identity процесса, со ссылкой на дело
| Поле |
Тип |
Обязательно |
Описание |
entity |
объект |
|
|
facts |
celMap |
|
Имя факта дела → значение |
Ровно одно из: facts, entity.
processStep.remember.entity
| Поле |
Тип |
Обязательно |
Описание |
kind |
string |
да |
|
key |
cel |
да |
|
name |
cel |
|
|
text |
cel |
|
|
links |
array of объект |
|
|
processStep.remember.entity.links[]
| Поле |
Тип |
Обязательно |
Описание |
rel |
string |
да |
|
kind |
string |
да |
|
key |
cel |
да |
|
processStep.listen
Ожидание первого из событий (отложенный выбор); timeout — таймер
processStep.listen.any[]
processStep.fork
| Поле |
Тип |
Обязательно |
Описание |
mode |
all | compete |
|
По умолчанию all. |
branches |
array of объект |
да |
|
processStep.fork.branches[]
processStep.try
processStep.try.retry
| Поле |
Тип |
Обязательно |
Описание |
limit |
integer |
да |
|
delay |
duration |
|
|
backoff |
constant | exponential |
|
|
maxDelay |
duration |
|
|
on |
array of string |
|
Типы ошибок для повтора; по умолчанию все |
processStep.try.catch[]
| Поле |
Тип |
Обязательно |
Описание |
errors |
объект |
|
|
as |
string |
|
|
do |
blocks |
да |
|
processStep.try.catch[].errors
| Поле |
Тип |
Обязательно |
Описание |
type |
string |
|
|
status |
integer |
|
|
processStep.suspend
| Поле |
Тип |
Обязательно |
Описание |
reason |
cel |
|
|
processStep.resume
| Поле |
Тип |
Обязательно |
Описание |
reason |
cel |
|
|
processStep.complete
| Поле |
Тип |
Обязательно |
Описание |
outcome |
string |
да |
|
processTimers
Граничные таймеры: срабатывают, пока стадия (процесс) открыта; at от данных пересчитывается при их изменении
Значение: array of объект.
processTimers[]
decisionTable
Таблица решений (DMN по смыслу). Ячейка условия: '-' (любое), литерал, список 'a,b', диапазон '[a..b)'
| Поле |
Тип |
Обязательно |
Описание |
id |
processElementId |
да |
|
expr |
cel |
да |
|
type |
string | number | boolean | date | timestamp |
|
|
decisionTable.outputs[]
| Поле |
Тип |
Обязательно |
Описание |
id |
processElementId |
да |
|
type |
string | number | boolean | date | duration | object | array |
|
|
decisionTable.rules[]
| Поле |
Тип |
Обязательно |
Описание |
when |
map → string | number | boolean |
да |
|
then |
object |
да |
|
note |
string |
|
|
governedBy |
governedBy |
|
|
memoryProjection
Проекция дела в граф памяти (TAI-ADR-0054 Р15): доставляется событиями, в граф идут только объявленные поля
| Поле |
Тип |
Обязательно |
Описание |
case |
объект |
да |
|
facts |
celMap |
|
Имя факта дела → значение; изменение закрывает прежний факт сроком действия |
entities |
array of объект |
|
|
documents |
объект |
|
|
memoryProjection.case
| Поле |
Тип |
Обязательно |
Описание |
kind |
string |
|
По умолчанию case. |
key |
cel |
да |
|
title |
cel |
|
|
memoryProjection.entities[]
| Поле |
Тип |
Обязательно |
Описание |
kind |
string |
да |
|
key |
cel |
да |
|
name |
cel |
|
|
rel |
string |
да |
|
when |
cel |
|
|
many |
boolean |
|
key даёт список: по сущности на элемент |
memoryProjection.documents
| Поле |
Тип |
Обязательно |
Описание |
artifacts |
array of typeKey |
|
|
stepContext
Профиль контекста исполнителя шага из памяти (TAI-ADR-0054 Р16): явные связи первыми, смысловой добор с пометкой inferred
| Поле |
Тип |
Обязательно |
Описание |
anchors |
array of memoryAnchor |
да |
|
traverse |
memoryTraverse |
|
|
semantic |
boolean |
|
Добор по смыслу (inferred); по умолчанию true |
budgetTokens |
integer |
|
|
memoryAnchor
Якорь обхода графа: узел дела экземпляра или сущность по естественному ключу (CEL от данных)
| Поле |
Тип |
Обязательно |
Описание |
case |
= true |
|
|
kind |
string |
|
|
key |
cel |
|
|
via |
string |
|
|
Ровно одно из: case, key + kind.
memoryTraverse
Шаги обхода от якорей — та же форма, что traverse в contextSchema (CP-ADR-0064)
Значение: array of объект.
memoryTraverse[]
| Поле |
Тип |
Обязательно |
Описание |
relation |
string |
да |
|
direction |
in | out | both |
|
|
depth |
integer |
|
|
limit |
integer |
|
|
from |
anchors | previous |
|
|
processTrigger
Источник события: событие журнала ядра или наблюдение. where — фильтр CEL над event
| Поле |
Тип |
Обязательно |
Описание |
event |
string |
|
|
observation |
string |
|
|
source |
string |
|
|
where |
cel |
|
|
Ровно одно из: event, observation.
assignee
| Поле |
Тип |
Обязательно |
Описание |
principal |
envOrUuid |
|
|
role |
slug |
|
|
agent |
slug |
|
|
expr |
cel |
|
CEL → id principal, agent:<key> или role:<slug> |
Ровно одно из: principal, role, agent, expr.
assignChain
Кандидаты по порядку: берётся первый разрешимый
Значение: array of assignee.
escalation
| Поле |
Тип |
Обязательно |
Описание |
after |
= due или durationOrCel |
да |
due — в момент срока; длительность — после срока |
action |
remind | reassign | notify | raise |
да |
|
to |
assignChain |
|
|
error |
processError |
|
|
processError
Ошибка в форме RFC 7807
| Поле |
Тип |
Обязательно |
Описание |
type |
string |
да |
|
status |
integer |
|
|
detail |
cel |
|
|
Форма шага: JSON Schema данных и uischema JSON Forms представления
| Поле |
Тип |
Обязательно |
Описание |
schema |
jsonSchema |
да |
|
uischema |
object |
|
|
governedBy
Регламенты базы знаний, которым подчиняется элемент (TAI-ADR-0054 Р17): естественный ключ документа памяти и, при необходимости, пункт
Значение: array of объект.
governedBy[]
| Поле |
Тип |
Обязательно |
Описание |
document |
string |
да |
|
section |
string |
|
|
blocks
Последовательность шагов (блок do)
Значение: array of processStep.
durationOrCel
Длительность ISO 8601 или выражение CEL, дающее момент времени (timestamp) или длительность
Значение: duration или объект {at}.
duration
Длительность ISO 8601, например P3D, PT4H
Значение: string.
cel
Выражение CEL в профиле taimen/1 (CP-ADR-0075): переменные data, event, step, task, instance; функции cal.*; без текущего времени. Типы и лимит стоимости проверяет ядро
Значение: string.
celMap
Путь в данных экземпляра → выражение CEL
Значение: map → cel.
processElementId
Стабильный id элемента процесса: на него ссылаются раскладка схемы, карты миграции, журнал и граф памяти. Переименование — только картой migrations
Значение: string.
Календарь (kind: Calendar)
Раздел генерируется make docs-gen из кода — не правьте его руками.
Источник: packages/schema/v1/object.schema.json.
calendarSpec
Производственный календарь (TAI-ADR-0054 Р6): выходные по умолчанию, праздники и переносы по годам
| Поле |
Тип |
Обязательно |
Описание |
displayName |
displayName |
да |
|
timezone |
string |
да |
|
weekend |
array of integer |
|
Дни недели ISO: 1 — понедельник. По умолчанию [6, 7]. |
years |
array of объект |
да |
|
calendarSpec.years[]
| Поле |
Тип |
Обязательно |
Описание |
year |
integer |
да |
|
provisional |
boolean |
|
Год ещё не утверждён: результаты cal.* помечаются «предварительно» |
source |
string |
|
|
holidays |
array of string (date) |
|
|
workdays |
array of string (date) |
|
Перенесённые рабочие дни, выпавшие на выходные |
shortDays |
array of string (date) |
|
|
Тест пакета (tests/*.test.yaml)
Раздел генерируется make docs-gen из кода — не правьте его руками.
Источник: packages/schema/v1/test.schema.json.
test
Файл <имя>.test.yaml в каталоге tests/ пакета. Прогоняет ядро (POST /packages:test) тем же движком, что живой прогон, в песочнице: задачи, approvals и таймеры — в памяти, скиллы, агенты и память — заглушки, проверенные по схемам каталога, время виртуальное. Побочных эффектов нет.
| Поле |
Тип |
Обязательно |
Описание |
$schema |
string |
|
|
process |
string |
да |
Ключ процесса пакета |
version |
integer |
|
По умолчанию — версия в пакете |
name |
string |
да |
|
description |
string |
|
|
given |
объект |
|
|
mocks |
объект |
|
|
steps |
array of testStep |
да |
|
coverage |
объект |
|
|
test.given
| Поле |
Тип |
Обязательно |
Описание |
clock |
string (date-time) |
|
Начальное виртуальное время |
data |
object |
|
Начальные данные экземпляра (без события старта) |
stage |
string |
|
Начать с открытой стадии |
fromInstance |
string |
|
Только пробный прогон на стенде: состояние копируется из живого экземпляра |
calendar |
string |
|
Ключ календаря вместо календаря процесса |
principals |
map → array of string |
|
Роль → вымышленные principal теста (для назначений и разделения обязанностей) |
test.mocks
| Поле |
Тип |
Обязательно |
Описание |
skills |
map → array of mockAnswer |
|
name@version → ответы по порядку вызовов (или по when); выход проверяется по схеме скилла из каталога |
agents |
map → array of mockAnswer |
|
|
recall |
array of mockAnswer |
|
Ответы памяти шагам recall; step — id шага, when — CEL над запросом |
test.coverage
| Поле |
Тип |
Обязательно |
Описание |
minimum |
number |
|
Порог покрытия элементов процесса этим тестом, % |
mockAnswer
| Поле |
Тип |
Обязательно |
Описание |
step |
string |
|
|
when |
string |
|
CEL над input вызова |
output |
любое |
|
|
error |
объект |
|
|
timeout |
= true |
|
|
Ровно одно из: output, error, timeout.
mockAnswer.error
| Поле |
Тип |
Обязательно |
Описание |
type |
string |
да |
|
status |
integer |
|
|
detail |
string |
|
|
testStep
| Поле |
Тип |
Обязательно |
Описание |
emit |
объект |
|
|
advance |
string |
|
Сдвиг виртуального времени (ISO 8601, P3D) или до момента: until:<id таймера> |
complete |
объект |
|
|
approve |
объект |
|
|
expect |
объект |
|
|
Ровно одно из: emit, advance, complete, approve, expect.
testStep.emit
| Поле |
Тип |
Обязательно |
Описание |
event |
string |
|
|
observation |
string |
|
|
source |
string |
|
|
payload |
object |
|
|
Ровно одно из: event, observation.
testStep.complete
| Поле |
Тип |
Обязательно |
Описание |
step |
string |
да |
|
by |
string |
|
principal теста или agent:<key> |
output |
object |
|
Данные формы или результат агента; проверяются по схеме формы |
cancel |
= true |
|
|
testStep.approve
| Поле |
Тип |
Обязательно |
Описание |
step |
string |
да |
|
by |
string |
да |
|
decision |
approve | reject |
да |
|
expectRefused |
string |
|
Код отказа ядра, например separation_of_duties_violation |
testStep.expect
| Поле |
Тип |
Обязательно |
Описание |
stages |
map → open | completed | skipped | not_started |
|
|
milestones |
array of string |
|
|
tasks |
array of объект |
|
|
timers |
array of объект |
|
|
data |
object |
|
Путь в данных → ожидаемое значение |
events |
array of string |
|
Типы событий process.* с последнего expect |
memory |
объект |
|
|
outcome |
string |
|
|
status |
running | suspended | completed | failed | cancelled |
|
|
error |
string |
|
|
noSideEffects |
= true |
|
|
testStep.expect.tasks[]
| Поле |
Тип |
Обязательно |
Описание |
step |
string |
|
|
status |
string |
|
|
assignee |
string |
|
|
due |
string |
|
|
testStep.expect.timers[]
| Поле |
Тип |
Обязательно |
Описание |
id |
string |
|
|
at |
string |
|
|
provisional |
boolean |
|
|
testStep.expect.memory
| Поле |
Тип |
Обязательно |
Описание |
recalled |
array of string |
|
|
remembered |
array of object |
|
|
См. также