go-bpm EN

Живое демо

Запустите процесс и посмотрите, как его ведёт движок

На этом сервере работает демо-сервис go-bpm — examples/demo из репозитория с PostgreSQL. Выберите процесс, запустите экземпляр и следите за ним: статус, пройденные элементы, переменные. Полная история на схеме и все экземпляры — в консоли.

Проверяем, отвечает ли демо…

Согласование заявки

TestUserTask
TestUserTask: «Согласовать заявку», шлюз «Согласовано?», возврат на «Исправить заявку»

Задачи пользователей как в Camunda 7. Заявку согласует менеджер из группы managers; вернёт на исправление — задача сразу назначится инициатору alice, после исправления снова уйдёт на согласование.

Как устроен процесс

Бизнес-правила DMN

TestDecision
TestDecision: две задачи бизнес-правил подряд

Две задачи бизнес-правил подряд: таблица Decision_1 по входам a и b выбирает c. Решение скомпилировано в Go — цепочка if.

Как устроен процесс

Шлюзы, скрипт и call activity

TestBpmProcess
TestBpmProcess: метод, service task, call activity, шлюз по amount, скрипт и параллельные ветки

Метод, service task, вызов процесса testSubProcess, exclusive gateway по amount. При amount = 1 — ветка «нет»: скрипт и две параллельные ветки со слиянием. Строка в amount роняет первый шаг: после 10 попыток (несколько минут) экземпляр упадёт, и его можно починить в истории — «Исправить переменные…» и повтор.

Как устроен процесс

Параллельные service task

testSubProcess
testSubProcess: метод и три параллельные ветки service task со слиянием

Три параллельные ветки из service task: каждая ставит свою задачу очереди, обработчики разных jobType выполняются одновременно, слияние ждёт все три.

Как устроен процесс

Таймеры и ошибки

TestTimerAndException
TestTimerAndException: граничные таймеры и ошибки, промежуточный таймер

Промежуточный таймер на 3 секунды и граничные события. Методы демо — заглушки, поэтому процесс идёт по основному пути; как заставить сработать граничные события — в разборе примера.

Как устроен процесс

Multi-instance: несколько кругов

TestMultiInstance
TestMultiInstance: «Отправить уведомление» и «Согласовать (до трёх кругов)» с маркером последовательного multi-instance

Последовательный multi-instance. Метод «Отправить уведомление» выполняется три раза подряд, каждый раз отдельным шагом очереди. «Согласовать» создаётся заново, пока менеджер не согласует, но не больше трёх кругов: условие завершения =approved, номер круга — переменная loopCounter.

Как устроен процесс

Ожидание сообщения

TestMessage
TestMessage: receive task «Дождаться оплаты» между стартом и концом

Receive task ждёт сообщение paymentReceived — ответ внешней системы об оплате. Сообщение находит экземпляр по бизнес-ключу: отправьте его кнопкой справа или POST /api/v1/messages.

Как устроен процесс

AI task: разбор обращения

TestAiTask
TestAiTask: AI task «Определить категорию» с граничным событием «Отказ модели» и AI task «Оценить срочность»

Две AI task: движок отправляет модели промпт с переменной request и пишет ответ в модель данных — категорию текстом в category, срочность JSON-ом в структуру triage. Отказ модели уводит по граничному событию ошибки ai_refusal. В демо модель — заглушка: в своём сервисе подключите любую, реализовав engine.AIClient.

Как устроен процесс

Консоль /ui/

Встроена в go-bpm: webui.Register(mux, history). Здесь она та же, что в демо-сервисе, — со всеми процессами и экземплярами.

  • Термокарта — элементы схемы окрашены по среднему, максимальному или суммарному времени либо числу проходов: видно, где процесс проводит время.
  • Динамика — экземпляры по дням запуска и чем они закончились, медиана и p95 длительности завершённых.
  • Упавшие экземпляры — в истории над схемой: элемент, попытки, текст ошибки, кнопки «Повторить», «Исправить переменные…» и «Отменить экземпляр».

Открыть консоль