Моделирование бизнес-процессов в нотации BPMN в Business Studio 5. Практическое руководство - стр. 4
На рис. 8 показан шлюз «И». Слева показано ветвление потоков. Шлюз «И» работает следующим образом. После него будет одновременно запущено столько потоков (токенов), сколько показано исходящих стрелок. То есть после шлюза «И» будет выполняться несколько потоков работы одновременно.
Рис. 8. Шлюз «И».
Шлюз «И» также используется для слияния (объединения) потоков, как показано на рис. 8 справа. Пока все токены, бегущие по стрелкам, не соберутся на шлюзе «И», этот шлюз не сработает и процесс дальше не пойдет.
На рис. 9 показаны различные допустимые варианты использования шлюза «И».
Вариант 1 – шлюз «И» разветвляет процесс на два потока, которые заканчиваются различными End-ами.
Вариант 2 – показано параллельное выполнение двух потоков, которые потом сходятся на шлюзе «И», а процесс продолжается.
Варианты 3 и 4 отличаются одним шлюзом «И», но логически совершенно эквивалентны друг другу.
Рис. 9. Варианты применения шлюза «И».
Теперь вы понимаете, что на рис.2 задачи 4 и 5 выполняются исполнителями одновременно. Например, это может быть совместное обсуждение какого-то рабочего вопроса на совещании.
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. «Размножение токенов».