Читать книгу Моделирование бизнес-процессов в нотации BPMN в Business Studio 5. Практическое руководство - Владимир Репин - Страница 6

1. Базовые элементы нотации
BPMN
1.3. Типовые логические ошибки

Оглавление

При использовании логических операторов (шлюзов) возможны логические ошибки, которые приводят к тому, что процесс нельзя выполнить. Рассмотрим типовые, чаще всего встречающиеся ситуации.

На рис. 10 показана ситуация, когда после первого шлюза «Исключающее ИЛИ» запускается Задача 2 или Задача 3. Если будет запущена, например, Задача 3, то токен придет на шлюз «И» после этой задачи. Данный шлюз может пропустить поток процесса дальше только в том случае, если на него придут два токена. Но в рассматриваемой ситуации это невозможно – процесс застрянет на шлюзе «И». Если у вас возник вопрос: «Как правильно?», то ответ следующий. Нужно использовать либо два шлюза «ИЛИ», или два шлюза «И». Тогда схема будет рабочей.


Рис. 10. Логическая ошибка. Процесс «застрянет»

на шлюзе «И».


На рис. 11 показана другая ситуация. После выполнения Задачи 1 на первый шлюз «И» приходит токен 1. После этого шлюза возникают токены 2 и 3. Если после шлюза «ИЛИ» токен 2 пойдет по стрелке А, то второй шлюз «И» не сработает никогда, так как токен 3 будет ждать токен 2, который уже «убежал» по стрелке А. Если же токен 2 пойдет по стрелке Б после «ИЛИ», то шлюз «И» сработает и процесс перейдет на Задачу 4. Таким образом, в одном из случаев возникает логическая ошибка и процесс «зависает». Это весьма распространенная ошибка при моделировании. В таком простом контексте она достаточно очевидна. Но в сложных схемах такую ошибку легко не заметить. Так что нужно быть аккуратнее.


Рис. 11. Логическая ошибка. Процесс «застрянет»

на шлюзе «И» в одном из случаев.


Рассмотрим следующую ситуацию, представленную на рис. 12. Она называется «Размножение токенов». После Задачи 1 шлюз «И» разделяет процесс на два параллельных потока (токены 2 и 3). Задачи 2 и 3 могу иметь разную длительность выполнения. Поэтому один из токенов первым прибежит на шлюз «ИЛИ». Этот шлюз сработает и будет запущена Задача 4. Потом прибежит второй токен и ситуация повторится. Даже если токены прибегут на шлюз «ИЛИ» одновременно, оба будут пропущены дальше и Задача 4 будет выполнена два раза.


Рис. 12. «Размножение токенов».


На рис. 13 показан пример схемы, в рамках которой ситуация с размножением токенов является практически целесообразной.


Рис. 13. «Размножение токенов». Практический пример.


В ряде случаев это действительно нужно. Например, Исполнитель 1 дает задание разным сотрудникам на одновременный сбор данных по Агрегатам А и Б. Задачи одновременно выполняют Исполнитель 2 и 3. Затем Исполнитель 1 вводит данные в базу. Задача «Занести данные в базу» будет выполнена два раза, но с разными данными на входе.

Конечно, в данном случае, можно было бы вместо «ИЛИ» поставить второй шлюз «И», а Исполнитель 1 мог бы вносить данные в рамках выполнения одной задачи. Выбор решения зависит от практических особенностей выполняемого процесса.

На рис. 14 показан фрагмент модели реального процесса (названия задач изменены). Обратите внимание, что шлюз «И», обведенный красным овалом, никогда не сработает, так как токен 2 никогда на него не придет. Почему? Задача «Дать предложения» не может запуститься, а значит и весь последующий фрагмент процесса никогда не будет выполнен и токен 2 никогда не прибежит на шлюз «И», обведенный красным овалом.


Рис. 14. Пример логической ошибки на схеме процесса.

Моделирование бизнес-процессов в нотации BPMN в Business Studio 5. Практическое руководство

Подняться наверх