Как НЕ нарисовать процесс, который никто не поймёт?

Как НЕ нарисовать процесс, который никто не поймёт?, image #1

Разнообразие начальных событий

Сколько нужно времени, чтобы проснуться и выпить кофе?

Правильные шлюзы в пятницу вечером

Статьи и книги

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 с комплексным событием, когда процесс стартует с того или иного события при выполнении условий в подписи. Затем обе ветки собираются в одну.

Оба верны и означаю одно и то же. На ваш взгляд, какой проще читается?

Вариант 1 для стартовых событий
Вариант 1 для стартовых событий
Вариант 2 для стартовых событий (с комплексным событием)
Вариант 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 – Метод и стиль».

17 views·3 shares