Как НЕ нарисовать процесс, который никто не поймёт?
Разнообразие начальных событий
Сколько нужно времени, чтобы проснуться и выпить кофе?
Правильные шлюзы в пятницу вечером
C BPMN (Business Process Modeling Notation) я впервые познакомилась, когда работала над продуктом на BPMS (Business Process Management Systems). Там я работала над моделями исполняемого уровня, где каждый графический элемент строго следовал стандарту BPMN и требованиям движка.
Потом я перешла в другую команду и получила задание описать процессы в BPMN 2.0. Здесь я столкнулась с тем, что на аналитическом уровне моделей походы другие. Я честнейшим образом старалась использовала все мощь нотации со шлюзами и событиями. Поняла, что заинтересованные стороны привыкли к адаптированной версии и испытали шок от моих диаграмм.
Стандарт BPMN содержит около 480 элементов, но в реальной работе используется два-три десятка. Остальное для эстетов нотации и BPMS-движков. Если диаграмма предназначена не для исполнения, а для обсуждения с бизнесом, разработчиками или тестировщиками, её нужно адаптировать под аудиторию. Диаграммы могут быть сложными для неподготовленной аудиторией и вместо общей понятной картины процесса можно получить непонимание.
На этом опыте я и поняла как BPMN-диаграммы могут быть полезны или бесполезны в зависимости от того, как их построить. Основные враги понимания - синтаксические ошибки. О некоторых расскажу дальше.
К синтаксическим ошибкам относятся нарушения правил нотации, когда:
- на модели не обозначено, с чего начинать (нет ни вызывающего потока, ни стартового события);
- нет конечного события (процесс не завершается);
- поток управления обрывается, заводит в стартовое событие или выходит из конечного события;
- имеются ошибки использования шлюзов;
- неправильно использованы события-таймеры или некорректная синхронизация процессов по событиям.
Разнообразие начальных событий
Стандарт BPMN разрешает множественные стартовые или конечные события, вопрос: как это правильно сделать?
Однажды с менти решали кейс на использование стартовых событий. И знаете что оказалось сложным? Мне было тяжело вывести разговор из категорий «правильно или неправильно». Не сразу поняла, что от нотации ожидаются какие-то однозначно принятые обозначения. Тем временем вариантов в BPMN в больше одного.
Всего в BPMN 13 типов событий из них 10 применимы к стартовым. Можно найти полный список, например, в приложении к статье Как начать моделировать бизнес-процессы в BPMN. Легко читаются простое событие, событие-сообщение и событие-таймер. Если начать использовать весь арсенал событий-условий, то схема становится сложной.
Кейс. Начать оформление заказа можно из мобильного приложения магазина, а можно с сайта. Все заказы собираются в единую очередь на выполнение и по общим правилам берутся в работу.
Для этого кейса можно выбрать несколько вариантов:
🔸Вариант 1 с простыми событиями, которые приводят в одному и ту же последовательность управления. Обратите внимание, что хотя использован исключающий шлюз, в этом случае он по сути объединяет все возможные стартовые события.
🔸Вариант 2 с комплексным событием, когда процесс стартует с того или иного события при выполнении условий в подписи. Затем обе ветки собираются в одну.
Оба верны и означаю одно и то же. На ваш взгляд, какой проще читается?
Сколько нужно времени, чтобы проснуться и выпить кофе?
В части событий-таймеров хочу предложить небольшой кейс. Чтобы потренироваться в отображении времени на диаграмме, ниже пример с промежуточными событиями-таймерами, в том числе прикрепленными. Прерывающими и не прерывающими. На диаграмме модель утренней борьбы со сном и с повторами будильника ☺️ Обратите внимание, что здесь два завершающих события при которых либо день начат штатно, либо будильник пропущен и его владелец проспал.
🔅Прерывающее событие-таймер (Timer Boundary Event (Interrupting) ) показывает дату, шаг цикла или время ожидания в процессе. Когда бы ни произошло такое событие, связанное действие прерывается.
🔅Непрерывающее событие-таймер (Timer Intermediate Catch Event) показывает дату, шаг цикла или время ожидания в процессе. Когда бы это событие ни произошло, процесс может продолжаться.
По диаграмме на картинке, сколько нужно времени, чтобы подняться утром и выпить кофе? Нет, этого не возможно понять по диаграмме. Таймеры показывают только время ожидания и период повтора, который в каждом экземпляре процесса может сработать по-разному.
Правильные шлюзы в пятницу вечером
В работе с параллельными или взаимоисключающимися потоками не всегда получается правильно расставить шлюзы. Здесь важно помнить, что при исключающем шлюзе (“ИЛИ“) процесс будет исполняться дальше как только выполнится первая же задача, а при параллельном (“И“) исполнение продолжится только когда завершатся обе.
На картинке к посту пример «вечер пятницы» из книги Владимира Репина «Моделирование бизнес-процессов в нотации BPMN. Пособие для начинающих». Компания решает, как провести вечер. Иванов идёт в супермаркет, Петров - в магазин (шлюз «И»). А дальше — шлюз «Исключающее ИЛИ»: первый, кто вернётся, запускает следующий шаг (отдых). Второго могут и не дождаться. Этот пример не является ошибкой, если он не нарушает логику процесса. Но есть подозрение, что Иванова и Петрова такая логика может не устроить 🤔
Здесь я вывела те варианты ошибок, что привлекли когда-то мое внимание, как вы понимаете 480 вариантов использования элементов BPMN создают большое пространство для ошибок. Главное вовремя заметить, что поток пошёл не туда, а шлюз оказался не тем.
Статьи и книги
Вот несколько публикаций и две книги, которые могут быть полезны:
🔅6 неправильных способов использовать BPMN и альтернативы BPMN. Статья от гуру нотации BPMN, в которой объясняется для каких задач не нужно ее использовать.
📌Использование таймеров при моделировании в нотации BPMN статья от автора книг по BPMN, с примерами верного и неверного использования таймеров.
📌Примеры моделирования с событием-остановом и событием-ошибкой пост с примером лучших практик BPMN от президента Ассоциации BPM-профессионалов. Пост состоит из графических примеров.
📌Пример моделирования бизнес-исключений через событие-ошибку Аналогично предыдущему пункту, еще одна статья с примерами, которые можно легко и быстро перенести в работу.
🔖Использование события-ошибки для моделирования исключений Это ещё одна статья от президента от президента Ассоциации BPM-профессионалов. Она состоит из примеров диаграмм и короткого текста-пояснения как нужно и как не нужно использовать событие-ошибку на диаграмме.
📌 Памятка по BPMN и BPMN-диаграммам Статья с основными используемыми элементами BPMN.
📌 Тренажёр по BPMN: дистанционное банковское обслуживание Статья-тренажёр с задачами на примере конкретного процесса.
📌 Все шлюзы с примерами Статья с графическими примерами и рекомендациями по использованию шлюзов.
📚 Книга. Владимир Репин «Моделирование бизнес-процессов в нотации BPMN. Пособие для начинающих».
📚 Книга. Брюс Сильвер «BPMN – Метод и стиль».
