====== Моделируйте обработку события, инициированного внешним участником, отдельным процессом ======
{{tag>процесс-ru взаимодействие}}
В момент, когда происходит внешнее событие (например, приходит груз от поставщика), оно еще не привязано к контексту (заказ, по которому осуществляется доставка).
Это значит, что внешнее событие нельзя обработать в рамках экземпляра уже запущенного процесса (у нас множество заказов, ожидающих доставки) -
следовательно, его следует обрабатывать стартовым событием отдельного процесса-обработчика (не путать с подпроцессом-обработчиком).
===== ✔ Как надо =====
Flow_0fqr94i
Flow_1qzqmrm
DataStoreReference_0ptgekw
Flow_1qzqmrm
Flow_0mvecfq
Flow_0fqr94i
Flow_0mvecfq
Flow_1uu5pmf
Flow_1uu5pmf
Flow_0za1h4b
Flow_0g7l5fa
Flow_0xz7y35
Flow_0xz7y35
Flow_1or7fxn
Flow_1l6vlkb
Flow_1or7fxn
Flow_1l6vlkb
Flow_0za1h4b
Flow_12cq0dp
DataStoreReference_0ptgekw
Property_1tojodc
Flow_12cq0dp
Flow_0g7l5fa
Flow_14lwxg3
Flow_14lwxg3
===== ✘ Как НЕ надо =====
Flow_0fqr94i
Flow_1qzqmrm
Flow_1qzqmrm
Flow_0mvecfq
Flow_0fqr94i
Flow_0mvecfq
Flow_0o10xoz
Flow_0o10xoz
Flow_1uu5pmf
Flow_1uu5pmf
===== Примечания =====
* Обратите внимание на задачу "Идентифицировать доставку" на диаграмме [[#как надо]]. Эта задача имеет место в реальности: когда на наш склад прибывает фура от поставщика, то первое, что делает наш сотрудник - проверяет сопроводительные документы и выясняет, заказывали ли мы этот груз (возможно, он доставлен по ошибке). Но на диаграмме [[#как не надо]] для этой задачи нет места!
* Еще одно преимущество схемы [[#как надо]] - она предусматривает возможность, что груз не был принят (например, из-за претензий по качеству и/или количеству) с первой попытке, но был благополучно принят при повторной доставке поставщиком. В этом случае просто будет два экземпляра процесса приемки груза на один экземпляр процесса закупки.
* В приведенных примерах опущен таймер (процесс ждет доставки бесконечно) и другие подробности.
* На диаграмме [[#как надо]] изображены два развернутых процесса. При моделировании реальных (а не учебных) процессов лучше изображать каждый процесс [[single_process|на отдельной диаграмме]].
* Для моделирования взаимодействия между процессами предпочтительнее использовать не событие-сообщение, а [[conditional_event_collaboration|событие-условие]].
===== Исключения =====
Процесс-обработчик может не потребоваться, если модель процесса является исполняемой, а внешний участник процесса - не человек, а робот (информационная система, веб-портал).
Поток сообщений в этом случае моделирует вызов веб-сервиса.
===== Смотри также =====
* [[single_process]]
* [[conditional_event_collaboration]]
===== Автор(ы) =====
--- //[[user:bell|Anatoly Belaychuk]] 2024-08-27 17:17//