Версионируемые определения процессов
Workflow Definition — версионируемый граф для повторяемой автономной работы. Он ссылается на точные версии возможностей и может содержать версионируемые ссылки на секреты или подключения. Сохранение черновика ничего не запускает.
Работайте с определением последовательно:
- создайте черновик;
- меняйте его с проверкой ожидаемой ревизии;
- выполните dry-run — он разрешит точные ссылки, но не запустит узлы;
- опубликуйте ту же ревизию.
Опубликованная версия неизменяема. Для изменений создайте новую семантическую версию. Поэтому записи ревью, аудит и внешние клиенты проектирования остаются привязаны именно к проверенному определению. Привязка определения к запуску расписания или миссии пока недоступна.
Сборка в интерфейсе
Откройте Автономные миссии → Конструктор. Во вкладке — список workflow пространства с версией и статусом; Новый workflow создаёт черновик.
- Задайте идентификатор и версию (по умолчанию
1.0.0). - Выберите возможность из каталога и нажмите Добавить шаг. Первый шаг становится стартовым, каждый следующий продолжает цепочку переходом по умолчанию — линейный workflow собирается в один клик на шаг. Недоступные вам возможности показаны неактивными с причиной.
- Для ветвления нажмите Добавить переход: конструктор предложит выход, который не замкнёт цикл. У шага один переход по умолчанию, остальным нужно условие.
- В блоке Подключения и секреты шага добавьте подключение как
id@ревизия, а секрет — через хранилище, ключ и версию. - Сохранить (
Ctrl+S). Ошибки видны над графом прямо во время правки — нужный шаг или ветка подсвечены, — и сохранение ждёт, пока они не исправлены. - Пробный прогон проверяет возможности, подключения и секреты и показывает верхнюю границу стоимости и блокеры.
- Опубликовать можно после успешного пробного прогона сохранённого черновика; кнопка доступна участникам с правом выкатки. Опубликованная версия только для чтения; Новая версия копирует её в черновик следующей patch-версии.
Кнопка JSON показывает то же определение текстом: его можно перенести в CLI или SDK либо вставить отредактированный вариант обратно через Применить JSON.
В примерах используется
localhost:5770. Замените его адресом своей установки Mockarty. Для редактирования указывайте конкретное пространство:*запрещён.
Минимальное определение
{
"contractVersion": "mockarty.workflow/v1",
"namespace": "sandbox",
"id": "release-check",
"version": "1.0.0",
"status": "draft",
"entryNode": "inspect",
"nodes": [
{
"id": "inspect",
"capability": {"key": "mission.inspect", "version": "1.0.0"}
}
],
"transitions": []
}
Идентификатор возможности содержит точную версию из каталога возможностей. Секрет задаётся ссылкой на хранилище, ключ и положительную версию; значение секрета в определение не попадает. Подключение указывается как id@ревизия; dry-run принимает ссылку, только пока эта ревизия остаётся текущей ревизией подключения в том же пространстве. Если подключение сменило ревизию или отозвано, публикация блокируется, пока определение не укажет новую ревизию.
Условия переходов используют версионируемый контракт выражений mockarty.expr/v1. Dry-run компилирует их синтаксис и отклоняет несогласованные скобки, незакрытые строки и некорректные выражения; он не выполняет условие или узел процесса.
REST API
Создайте черновик:
curl -fsS -X POST http://localhost:5770/api/v1/namespaces/sandbox/workflow-definitions \
-H "Authorization: Bearer $MOCKARTY_API_TOKEN" \
-H 'Content-Type: application/json' \
--data-binary @workflow.json
Сохраните возвращённую revision. Разрешите ссылки, а затем опубликуйте ту же ревизию:
curl -fsS -X POST \
http://localhost:5770/api/v1/namespaces/sandbox/workflow-definitions/release-check/versions/1.0.0/dry-run \
-H "Authorization: Bearer $MOCKARTY_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"expectedRevision":1}'
curl -fsS -X POST \
http://localhost:5770/api/v1/namespaces/sandbox/workflow-definitions/release-check/versions/1.0.0/publish \
-H "Authorization: Bearer $MOCKARTY_API_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"expectedRevision":1}'
Dry-run возвращает ready, стабильный digest определения, разрешённые ссылки, верхнюю границу стоимости и блокеры. Он не обращается к провайдеру и не запускает миссию.
CLI
mockarty-cli --namespace sandbox workflow create --file workflow.json
mockarty-cli --namespace sandbox workflow dry-run --id release-check --version 1.0.0 --revision 1
mockarty-cli --namespace sandbox workflow publish --id release-check --version 1.0.0 --revision 1
mockarty-cli --namespace sandbox workflow list --status published
SDK
Go
created, err := client.WorkflowDefinitions().CreateDraft(ctx, definition)
dryRun, err := client.WorkflowDefinitions().DryRun(ctx, "sandbox", "release-check", "1.0.0", created.Revision)
published, err := client.WorkflowDefinitions().Publish(ctx, "sandbox", "release-check", "1.0.0", created.Revision)
Python
created = client.workflow_definitions.create_draft(definition)
dry_run = client.workflow_definitions.dry_run("release-check", "1.0.0", created["revision"])
published = client.workflow_definitions.publish("release-check", "1.0.0", created["revision"])
Java
JsonNode created = client.workflowDefinitions().createDraft(definition);
JsonNode dryRun = client.workflowDefinitions().dryRun("sandbox", "release-check", "1.0.0", created.path("revision").asLong());
JsonNode published = client.workflowDefinitions().publish("sandbox", "release-check", "1.0.0", created.path("revision").asLong());
Инструменты MCP
Агенты используют ту же authority через workflow_definitions_list, workflow_definition_get, workflow_definition_save, workflow_definition_dry_run и workflow_definition_publish. Для публикации по-прежнему нужно право на доставку. MCP не обходит RBAC пространства, лицензию, проверку ссылок и обязательный dry-run.
Конфликты и блокеры
- Некорректное определение
400: сообщение называет нарушенное правило, напримерnode "deploy" is unreachable from entryилиconditional branch "ok" requires an expression. - Конфликт ревизии
409: снова прочитайте точную версию перед редактированием. - Требуется dry-run
409: черновик изменился после последнего успешного dry-run или всё ещё содержит блокеры. - Неизменяемая версия
409: создайте новую семантическую версию вместо перезаписи опубликованной. - Authority недоступен
503: не публикуйте по кешированным или предполагаемым данным; восстановите зависимость и повторите dry-run.
Публикация сохраняет проверенный неизменяемый контракт для проектирования. Она не запускает миссию, а текущий сценарий запуска «Автономных миссий» пока не принимает опубликованный Workflow Definition. В разделе «Автономные миссии» описаны доступные сейчас сценарии миссий.