Все модули

External Process Manager

Универсальный менеджер CLI-процессов: FFmpeg, расписания, любые команды — с очередью и мониторингом.

Возможности

Что умеет модуль

Сущность ExternalProcess

Жизненный цикл pending→running→completed/failed/timeout/cancelled; processType, pid, command, inputData, outputData, workingDir.

ProcessTypeHandler через интерфейс

6 методов: prepare/buildCommand/checkCompletion/importResults/onError/cleanup; фабрика создаёт по processType.

maxConcurrent на тип

Лимит параллельных процессов задаётся в metadata; StartExternalProcess не запустит больше указанного.

ProcessManager (Linux)

setsid sh -c для detach; PID-file; /proc/{pid} и ps для мониторинга; SIGTERM→SIGKILL для завершения.

Два ScheduledJob каждую минуту

StartExternalProcess запускает pending; CheckExternalProcess проверяет таймаут и завершение, обновляет лог.

Корректная отмена

CancelProcess hook: status→cancelled → terminate(pid) → handler.cleanup() — ничего не висит.

Модуль External Process Manager добавляет в платформу BPM2B единый механизм запуска и мониторинга внешних CLI-процессов: FFmpeg, движки расписания, произвольные shell-утилиты. Тяжёлые задачи запускаются как фоновые процессы, отслеживаются по PID и логу, корректно отменяются и собирают результат через типизированные обработчики.

Основные функциональные возможности:

  • Сущность ExternalProcess: запись о процессе со статусами pending → running → completed / failed / timeout / cancelled, полями processType, pid, command, inputData / outputData (jsonObject), workingDir, logFile, consoleOutput и timeoutSeconds (по умолчанию 7200 = 2 часа).
  • Обработчики через ProcessTypeHandlerInterface: 6 методов жизненного цикла — prepare(), buildCommand(), checkCompletion(), importResults(), onError(), cleanup(); ProcessTypeHandlerFactory создаёт handler по processType через InjectableFactory.
  • Реестр в metadata: обработчики регистрируются в app.externalProcessHandlers; формат — строка (класс) или объект {handler, maxConcurrent} для контроля параллельности.
  • Concurrency control: maxConcurrent на тип процесса; ScheduledJob StartExternalProcess подсчитывает running и запускает не больше указанного предела одновременно.
  • OS-уровень управления: ProcessManager делает setsid sh -c для detach, ждёт PID-файл 5 секунд, отслеживает состояние через /proc/{pid} и ps, завершает SIGTERM → SIGKILL с таймаутом.
  • Два ScheduledJob каждую минуту: StartExternalProcess поднимает pending → running с учётом maxConcurrent; CheckExternalProcess проверяет таймаут и завершение, обновляет последние 2 KB логов в consoleOutput.
  • Корректная отмена: хук CancelProcess на beforeSave при переходе в cancelled вызывает ProcessManager.terminate(pid) и затем handler.cleanup() — ничего не висит.
  • Изолированные рабочие директории: для каждого процесса своя data/upload/external-processes/{processId}/ с process.log, process.pid и файлами handler'а — после завершения легко чистится.

Модуль предназначен как фундамент для всех других модулей платформы, которым нужно дёргать тяжёлые внешние утилиты: bpm2bScheduleGateway, bpm2bScheduleUniver, обработка видео и аудио. Сам по себе никаких конкретных processType не предоставляет — всё подключается потребляющими модулями через metadata.

Совместимо с платформой версии 9.1.0+
Связаться

Готовы автоматизировать процессы?

Покажем работу системы на ваших данных за 30 минут. Расскажем, как окупится в вашей отрасли, и подберём конфигурацию под ваши процессы.

Email
info@bpm2b.ru
Москва
+7 (499) 113-22-35
Россия
8 (800) 551-91-16
Компания
ООО «Адм Про»

Мы свяжемся в течение 24 часов. Данные используем только для обработки заявки.