Документация Версионируемые определения процессов

Версионируемые определения процессов

Workflow Definition — версионируемый граф для повторяемой автономной работы. Он ссылается на точные версии возможностей и может содержать версионируемые ссылки на секреты или подключения. Сохранение черновика ничего не запускает.

Работайте с определением последовательно:

  1. создайте черновик;
  2. меняйте его с проверкой ожидаемой ревизии;
  3. выполните dry-run — он разрешит точные ссылки, но не запустит узлы;
  4. опубликуйте ту же ревизию.

Опубликованная версия неизменяема. Для изменений создайте новую семантическую версию. Поэтому записи ревью, аудит и внешние клиенты проектирования остаются привязаны именно к проверенному определению. Привязка определения к запуску расписания или миссии пока недоступна.

Сборка в интерфейсе

Откройте Автономные миссии → Конструктор. Во вкладке — список workflow пространства с версией и статусом; Новый workflow создаёт черновик.

  1. Задайте идентификатор и версию (по умолчанию 1.0.0).
  2. Выберите возможность из каталога и нажмите Добавить шаг. Первый шаг становится стартовым, каждый следующий продолжает цепочку переходом по умолчанию — линейный workflow собирается в один клик на шаг. Недоступные вам возможности показаны неактивными с причиной.
  3. Для ветвления нажмите Добавить переход: конструктор предложит выход, который не замкнёт цикл. У шага один переход по умолчанию, остальным нужно условие.
  4. В блоке Подключения и секреты шага добавьте подключение как id@ревизия, а секрет — через хранилище, ключ и версию.
  5. Сохранить (Ctrl+S). Ошибки видны над графом прямо во время правки — нужный шаг или ветка подсвечены, — и сохранение ждёт, пока они не исправлены.
  6. Пробный прогон проверяет возможности, подключения и секреты и показывает верхнюю границу стоимости и блокеры.
  7. Опубликовать можно после успешного пробного прогона сохранённого черновика; кнопка доступна участникам с правом выкатки. Опубликованная версия только для чтения; Новая версия копирует её в черновик следующей 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. В разделе «Автономные миссии» описаны доступные сейчас сценарии миссий.