go-bpm EN

go-bpm modeler

Редактор схем BPMN и DMN для go-bpm

Десктопное приложение для Linux, Windows и macOS. В палитре только элементы, которые поддерживает генератор go-bpm, свойства — в его формате, схема проверяется его правилами. Файлы *.bpmn и *.dmn сохраняются в папку process/ сервиса.

Исходный код на GitHub

Загружаем список сборок…

Установка

Linux

x86-64 — для обычных ПК и серверов, ARM64 — для Raspberry Pi 4/5, ноутбуков на ARM и Linux в виртуальной машине на Mac с Apple Silicon (узнать: uname -m). Распакуйте архив и запустите go-bpm-modeler. Нужны GTK 3 и WebKitGTK 4.1 — они есть в Ubuntu 22.04+, Debian 12+, Fedora. Запуск также проверен на Astra Linux Special Edition 1.8.1.6:

sudo apt install libgtk-3-0 libwebkit2gtk-4.1-0
tar -xzf go-bpm-modeler-linux-amd64.tar.gz   # или linux-arm64
./go-bpm-modeler

Windows

Распакуйте архив и запустите go-bpm-modeler.exe. Нужен WebView2 — он есть в Windows 10 и 11. Сборка не подписана: SmartScreen предупредит, нажмите «Подробнее» → «Выполнить в любом случае».

macOS

Для процессоров M1–M4 — Apple Silicon, для остальных — Intel. Распакуйте архив и перенесите go-bpm-modeler.app в «Программы». Сборка не подписана: при первом запуске разрешите её в «Системные настройки» → «Конфиденциальность и безопасность» → «Всё равно открыть» или снимите карантин:

xattr -dr com.apple.quarantine /Applications/go-bpm-modeler.app

Контрольные суммы — в файле SHA256SUMS сборки: sha256sum -c SHA256SUMS --ignore-missing.

Как выглядит

Процесс «Согласование заказа» из быстрого старта go-bpm: решение DMN, задача пользователя с эскалацией по таймеру, уведомление и ожидание оплаты.

Достоинства своего моделера

Универсальный редактор, например Camunda Modeler, даёт нарисовать всё, что есть в BPMN, и часть этого генератор go-bpm отвергнет. Свой моделер знает, что умеет go-bpm.

Только то, что исполнит go-bpm

В палитре и меню нет элементов, которые генератор отвергнет: inclusive gateway, send task, throw-событий. Граничное событие прикрепится только туда, где go-bpm его поддерживает, а второй переход из задачи не нарисовать — разветвление делается шлюзом.

Ошибки до генерации

Линтер проверяет схему правилами генератора и пишет те же сообщения: ветвление без шлюза, таймер не в ISO 8601, пустой jobType видны на схеме сразу, а не после go generate.

Свойства в формате go-bpm

Панель свойств показывает только настройки, которые читает go-bpm, и пишет их как расширения gobpm:*. Лишних полей, которые генератор игнорирует, нет.

Связь между файлами

Решение для business rule task и процесс для call activity выбираются из списка *.dmn и *.bpmn рабочей папки, ссылку на несуществующий линтер подсветит.

Лёгкий, файлы — обычные

Архив 4–5 МБ: системный WebView, без Java и Node; Linux x86-64 и ARM64, Windows, macOS. Схемы — BPMN 2.0 и DMN 1.3 в папке сервиса, рядом с кодом и в git; запись атомарная.

Вместе с AI-агентом

Встроенный MCP-сервер: Claude Code или Cursor видит схему, которую вы рисуете, подсказывает и предлагает правки — применяются они только после вашего подтверждения.

Основные инструменты

Панель инструментов
Рабочая папка, новый BPMN или DMN, сохранение (Ctrl+S), отмена и возврат, копирование, вырезание и вставка, масштаб, цвет выделенных элементов, ссылка на документацию.
Список файлов
Слева — все *.bpmn и *.dmn рабочей папки с подпапками. Ширину панели можно менять перетаскиванием, двойной щелчок по краю возвращает её.
Вкладки
Несколько файлов открыты одновременно; точка у имени — несохранённые изменения. Закрыть окно с ними без вопроса не получится.
Палитра
Начальное и конечное события, таймер и ожидание сообщения, шлюз, задачи — обычная, сервисная, скриптовая, пользовательская, AI task, — подпроцесс, пул и группа.
Меню элемента
Появляется у выделенного элемента: добавить следующий элемент, соединить, гаечный ключ — заменить тип (только на поддерживаемые), удалить.
Панель свойств
Справа: имя и ID, затем настройки go-bpm по типу элемента — jobType и попытки service task, выражение скрипта, решение DMN, вызываемый процесс, назначение и форма user task, ключ корреляции сообщения, таймер, условие перехода, multi-instance.
Линтер
Крестики и восклицательные знаки на элементах, текст — при наведении; внизу холста — счётчик ошибок и предупреждений, щелчок по нему прячет маркеры.

Как пользоваться

  1. Откройте папку. «Папка» → process/ вашего сервиса — там, где go-bpm-gen ищет схемы. Моделер покажет все файлы и запомнит папку.
  2. Создайте схему. «BPMN» или «DMN» на панели инструментов, затем имя файла; подпапка — через косую черту: orders/approval.
  3. Нарисуйте процесс. Элементы — из палитры, следующий шаг — из меню у элемента. Разветвление — только шлюзом: у задачи один исходящий переход.
  4. Задайте ID и свойства. ID элемента станет именем Go-функции, ID процесса — пакетом, поэтому лучше CheckOrder, чем Activity_0shk46q. Остальное — в панели свойств.
  5. Исправьте ошибки линтера. Наведите на крестик — текст ошибки такой же, как у генератора. Предупреждения не мешают генерации, но стоит проверить.
  6. Сохраните и сгенерируйте код. Ctrl+S, затем go generate ./... в сервисе — как устроен генератор.

Правила линтера

Ошибка — генератор go-bpm откажется генерировать код. Предупреждение — код сгенерируется, но процесс, скорее всего, поведёт себя не так, как задумано.

Схемы процессов BPMN

ПравилоЧто проверяетУровень
supported-elementsТолько поддерживаемые элементы и типы событий: без inclusive и event-based gateway, send и manual task, throw-событий, event sub-process, вложенного подпроцесса, standard loop, непрерывающих граничных событийошибка
single-start-eventРовно один start event, без таймера, сообщения и сигнала, — в процессе и в каждом подпроцессеошибка
boundary-eventsГраничный таймер — у task, script, service и user task; граничная ошибка — у task, script и service task; таймер не у элемента с multi-instanceошибка
branchesУ задач и событий один исходящий переход; условие — только на выходе exclusive gateway; выход шлюза — с условием или default flowошибка
exclusive-defaultУ ветвящегося exclusive gateway есть default flow — иначе экземпляр упадёт, если ни одно условие не подойдётпредупреждение
required-propertiesЗаполнены jobType service task, выражение скрипта, решение и переменная результата, вызываемый процесс, сообщение с именем-константой, промпт и переменная AI taskошибка
timersДлительность ISO 8601 без лет и месяцев (PT30S, P1DT2H), дата RFC 3339 с зоной или =переменная, без timeCycleошибка
multi-instanceТолько последовательный; loopCardinality — целое больше нуля; есть число выполнений или условие завершенияошибка
assignmentsИсполнитель, кандидаты и ключ корреляции — значение или переменная (=name, ${name}), не выражениеошибка
process-idsID процесса не занят сгенерированным кодом (handlers, model, services) и не повторяется в других файлах папкиошибка
referencesРешение DMN и вызываемый процесс есть в файлах рабочей папкипредупреждение

Таблицы решений DMN

Что проверяетУровень
Решение — таблица: не пустое и не literal expressionошибка
Нет зависимостей между решениями (requiredDecision): вызывайте решения отдельными задачамиошибка
Hit policy без PRIORITY и OUTPUT ORDER; COLLECT с агрегацией — только с одним выходомошибка
Есть выходы; у нескольких выходов — имена, которые переводятся в поля Go и не повторяютсяошибка
У входа, который проверяют правила, есть выражение; в списке через запятую нет пустых тестовошибка
Типы входов и выходов — string, number, integer, long, double, booleanпредупреждение
В ячейках нет FEEL-функций (date(), contains()…) — они не переводятся в Goпредупреждение
Нет BKM, knowledge source и decision service — go-bpm их не использует. Input data можно: он показывает, какие данные нужны решениюпредупреждение

Чего линтер не знает: есть ли поля в модели данных DataModel и компилируются ли выражения — это проверит генератор.

MCP-сервер

Схема вместе с AI-агентом

Моделер встраивает MCP-сервер: агент — Claude Code, Cursor и другие с поддержкой MCP — видит схему, которую вы рисуете, включая несохранённые изменения и выделенные элементы, отвечает на вопросы, находит ошибки и предлагает правки. Каждую правку вы подтверждаете — после этого она появляется в редакторе, а сохраняете вы.

  1. Нажмите «AI-агент» на панели инструментов и включите MCP-сервер.
  2. Скопируйте команду из окна и выполните её в терминале — для Claude Code она выглядит так:
    claude mcp add --transport http go-bpm-modeler http://127.0.0.1:39190/mcp \
      --header "Authorization: Bearer <токен из окна>"
  3. Спросите агента о схеме: «что не так с процессом согласования», «добавь эскалацию по таймеру на согласование», «объясни выделенную таблицу решений».

Агент читает файлы рабочей папки, открытые схемы, выделение и проблемы линтера. Изменить схему или создать файл он может только после вашего «Да» в окне моделера. Сервер выключен по умолчанию, доступен только с этого компьютера, по токену и только к рабочей папке.

Подробная инструкция: Claude Code, Cursor, примеры, безопасность