В этой статье вы узнаете, какие элементы BPMN поддерживает DES-симуляция (имитационное моделирование) в Storm BPMN, а также что делать, если в вашей схеме есть подпроцессы, граничные события, условия на стрелках или другие элементы, которые движок не моделирует. Здесь описаны ограничения по типам задач, шлюзов, событий и буферов, а также способы упростить схему для успешного запуска симуляции.
Движок DES-симуляции строит модель на основе BPMN-схемы, но учитывает не все элементы. Если в схеме присутствуют неподдерживаемые конструкции, симуляция может не запуститься или дать неточные результаты. Ниже — полный список того, что движок понимает, и рекомендации по адаптации схемы.
Поддерживаемые элементы
Движок корректно моделирует следующие элементы BPMN:
- Задачи всех видов — пользовательские, сервисные, скриптовые и другие. Каждая задача настраивается отдельно: длительность, распределение, ресурс, доход и расходы.
- Начальное и конечное события — стандартные круглые маркеры без триггеров. Они обозначают начало и завершение процесса.
- Исключающий шлюз (XOR) — развилка «или-или». Для него вы задаёте вероятности ветвей, и их сумма должна быть 100 %.
- Параллельный шлюз (AND) — развилка «и-и». Все ветки выполняются одновременно.
- Включающий шлюз (OR) — считается как исключающий (XOR). То есть из нескольких ветвей выбирается одна по вероятности.
- Промежуточные события — используются как задержка во времени. Условное промежуточное событие может быть включено как буфер (межоперационное хранилище с конечной ёмкостью).
- Петли — допустимы, но заявка не может пройти один и тот же узел более 100 раз. При превышении лимита заявка отбрасывается с причиной «Превышены повторы».
Неподдерживаемые элементы и ограничения
Следующие элементы движок не моделирует. На экране настройки симуляции их нельзя добавить, а если они есть в исходной BPMN-схеме — их нужно убрать или заменить:
- Подпроцессы и вызовы активности — движок не раскрывает вложенные схемы. Если в схеме есть подпроцесс, его содержимое нужно вынести на основной уровень как отдельные задачи.
- Граничные события — таймеры, ошибки и другие события, привязанные к задачам (маленькие квадратики на границе задачи). Движок их игнорирует. Если логика требует таймаута или обработки ошибки, используйте политику таймаутов в настройках симуляции или добавьте отдельную задачу после основной.
- Событийный и сложный шлюзы — не поддерживаются. Замените их на исключающий (XOR) или параллельный (AND) шлюз в зависимости от логики.
- Стартовые и конечные события с триггерами — события, запускаемые сообщением, таймером, сигналом, ошибкой или terminate. Движок понимает только «чистые» начальное и конечное события без триггеров.
- Объекты данных — иконки данных, связанные со стрелками. Движок их не учитывает.
- Второй пул и потоки сообщений — моделируется только первый пул. Межпульное взаимодействие через сообщения не поддерживается.
- Условия на стрелках — текстовые условия на последовательных соединениях. Маршрут определяется только вероятностями на шлюзах, а не условиями на стрелках.
Как упростить схему для запуска симуляции
Если ваша BPMN-схема содержит неподдерживаемые элементы, выполните следующие шаги:
- Откройте схему в редакторе Storm BPMN.
- Найдите подпроцессы и вынесите их содержимое на основной уровень как отдельные задачи, соединённые последовательными стрелками.
- Удалите граничные события с задач. Если таймаут критичен для анализа, настройте политику таймаутов в секции «Политика таймаутов» на экране настройки симуляции.
- Замените событийные и сложные шлюзы на исключающие или параллельные.
- Уберите условия со стрелок. Если логика требует выбора пути, добавьте исключающий шлюз и задайте вероятности ветвей.
- Удалите объекты данных и потоки сообщений между пулами. Оставьте только один пул.
- Сохраните изменённую схему и привяжите её к симуляции.
После упрощения нажмите «Проверить» на экране настройки симуляции. Если проверка пройдена успешно, кнопка «Запустить симуляцию» станет активной.
Частые формулировки
«поддерживаемые элементы BPMN в симуляции», «почему подпроцесс не работает в DES», «граничные события в имитационном моделировании», «ограничения BPMN для симуляции», «как упростить схему для запуска симуляции», «условия на стрелках в DES-симуляции», «второй пул в имитационном моделировании», «событийный шлюз в симуляции».