Я работаю над структурой модели продажи билетов, где мы получаем запросы на создание одной или нескольких учетных записей пользователей в системе SAP. Запрос — это агент, в котором есть несколько агентов — пользователей.
Итак, как вы можете видеть на изображении, у нас есть
Источник - Запрос поступает отсюда.
Задержка (createRequestNo) - Номер запроса. назначается запросу в этом блоке.
Сервис (создание пользователя) - Пользователи создаются в этом блоке.
Раковина - Запрос (агент) выходит из этого блока.
пул ресурсов — команда из 15 человек, которая занимается созданием учетных записей пользователей. Он связан с сервисным блоком.
Представьте, что приходит массовый запрос на создание 5 пользователей.
Как ресурсы в сервисном блоке обрабатывают все 5 пользовательских агентов, которые находятся внутри агента запроса?
Вы говорите, что ваш агент запроса, который проходит через поток процесса, имеет в нем несколько агентов, но это не обязательно должны быть агенты, они могут быть чистыми классами Java, или запросы могут также просто содержать несколько пользователей для создания.
Все зависит от требуемой детализации
Чтобы ответить на ваш вопрос, вы можете получить доступ к внутренней части агентов, которые проходят через поток процессов, и использовать их для определения задержки или количества ресурсов, которые необходимо захватить, следующим образом:
Просто убедитесь, что тип агента в дополнительных настройках установлен на тип агента, который вы ожидаете в этом блоке. Если вы установите источник для создания определенного типа агента, он автоматически обновит все последовательно подключенные блоки для вас.
Обратите внимание, что если процесс создания пользователя будет отличаться для каждого создаваемого пользователя, вам нужна отдельная задержка для каждого пользователя... и, таким образом, было бы лучше разделить на несколько агентов для каждого создания пользователя, а затем заставить их захватывать, задерживать и выпускать каждый ресурс отдельно.
С вашей нынешней логикой их всех схватят и отпустят одновременно.
Спасибо за разъяснение, но единственным фактором, влияющим на большее количество или разных пользователей внутри запроса, будет более длительная задержка на захваченном ресурсе, верно? Таким образом, вы просто обновляете формулу задержки. В конце задержки в коде onExit вы снова можете использовать коллекции пользователей для создания фактических записей данных или чего-то еще, что вы хотите сделать. Это решает ваш вопрос?
Хорошо, даже если мы исходим из того предположения, что мы будем играть с временем задержки, чтобы имитировать реальный сценарий, но есть ли способ хотя бы показать, что 5 ресурсов обрабатывают этот пришедший запрос?
Да - Смотрите мой обновленный скриншот, я написал это в тексте, но не показал на скриншоте. Вы просто захватываете количество ресурсов, равное количеству пользователей, которых нужно создать.
Спасибо @Jaco-Ben - я применил его и проверил с помощью линии трассировки. Работает как шарм. Загрузил модель для будущей помощи. cloud.anylogic.com/model/4d52664c-3d11-42fa-b800-fa151fbf5d62?mode=SETTINGS&tab=ОБЩИЕ
Спасибо, не забудьте принять мой ответ, если вы нашли его полезным, и проголосовать, если считаете его достойным ;-)
Спасибо @Jaco за такую сложную работу в очень короткие сроки. Обратите внимание, что пользователи в запросе могут иметь другой тип, например. Финансовый пользователь, производственный пользователь и т. д. плюс нам, возможно, придется назначить им разные роли. Итак, я хочу создать их как агентов внутри запроса, а не коллекции. Но это битва для другого дня. Я хотел бы сначала решить эту проблему (конкретные ресурсы блока службы, обрабатывающие вложенного агента).