====== Моделируйте обработку события, инициированного внешним участником, отдельным процессом ====== {{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//