Полная палитра BPMN включает сотни элементов (если считать все возможные комбинации). И хотя профессионал знать их должен все, не надо стремиться все их использовать.
Во-первых, этим вы усложните понимание процесса неподготовленными бизнес-пользователями. И это в лучшем случае, в худшем - вызовите отторжение. Ведь одно из главных преимуществ BPMN состоит в том, что он одновременно и интуитивно понятен, и достаточно точен, чтобы люди бизнеса, аналитики и ИТ-специалисты понимали схему процесса одинаково. Но только при условии следования хорошему стилю и здорового минимализма в использовании палитры BPMN.
Во-вторых, если говорить о процессах, исполняемых движком, то ни один из них не реализует нотацию идеально и в полном объеме. Поэтому у потенциальных заказчиков часто возникают вопросы: насколько критично, если движок не поддерживает тот или иной элемент и существует ли обходной путь, позволяющий без него обойтись?
Попробуем ответить на эти вопросы и показать, какие элементы абсолютно необходимы, а без каких можно обойтись, заменив их другими.
Начнем с развилок.
1. Развилка “или/или”
Пытаться заменить эту развилку мы не будем.
Примечание: пустой ромб и ромб с косым крестом внутри - альтернативные варианты начертания одного и того же элемента. Ясно, что лучше выбрать (для себя или для организации) один вариант и придерживаться его.
2. Развилка “и” (параллельная)
Тоже вещь незаменимая.
3. Развилка “и/или”
Заменяется комбинацией развилок “или/или” и параллельной:
= |
Развилка “и/или” полезна, так как моделирует вполне определенный и достаточно распространенный сценарий “набор независимых опций”; альтернативная реализация получается более громоздкой. Минус тот, что бизнес-пользователи схему справа поймут без дополнительных объяснений, а схему слева - вряд ли.
У процессного движка могут возникнуть затруднения с синхронизацией потоков на сходящейся развилке и/или, с этой точки зрения также схема справа может быть предпочтительной.
4. Комплексная развилка
Комплексная развилка управляет токенами на схождении нескольких потоков управления. Заменяется парой развилок или/или:
= |
5. Развилка по событиям
Заменяется с помощью подпроцесса:
= |
Это универсальная техника, позаимствованая у Брюса Силвера, пригодная для любых комбинаций событий.
Если одно из событий - получение сообщения, то можно использовать более простой прием:
6. Стартовая развилка по событиям
= |
Обоих вариантов лучше избегать: для пользователей их поведение неочевидно, а движки большинства BPMS не умеют их исполнять. Лучше моделируйте поток работ от каждого события как отдельный процесс, обращающийся к повторно-используемым подпроцессам.
7. Параллельная стартовая развилка по событиям
= |
Представляет в основном лишь академический интерес.
Выводы
Двух развилок - или/или и параллельной, в принципе, достаточно. Остальные развилки позволяют строить более компактные схемы, но это преимущество частично нивелируется тем, что читатели без специальной подготовки их вряд ли поймут.
О взаимозаменяемости событий и других элементах - в следующих статьях.
Анатолий, очень красиво и элегантно изложено, добавлю статью себе в закладки.
Не смогу, наверное, отказаться от и/или, и развилки по событиям, - привык к ним, а остальными, кроме 2х базовых не пользуюсь.
“Развилка “и/или” полезна, так как моделирует вполне определенный и достаточно распределенный сценарий”.
Видимо, “… и достаточно РАСПРОСТРАНЕННЫЙ сценарий”?
Спасибо, исправил.
Упрощение сейчас в тренде:
https://habrahabr.ru/post/319344/
Статья неплохая по содержанию, но хамская по форме. И она точно не про упрощение. Оставлю ваш комментарий в виде исключения, но обсуждать ее тут не надо.