Сообщение асинхронного внешнего вызова помещается в очередь блокировки и ожидает, пока его заберет внешнее приложение или служба. Если ожидается ответ, внешнее приложение выполняет обычную транзакцию IMS для передачи выходных данных в соответствующее приложение IMS.
На следующем рисунке показан типичный поток сообщений асинхронного вызова:
Рис. 1. Процедура передачи сообщений с запросами асинхронных внешних вызовов
- В WebSphere Application
Server запускается приложение Java™, которое устанавливает общее постоянное соединение с IMS Connect с помощью IMS TM. Приложение выполняет взаимодействие SYNC_RECEIVE_CALLOUT, указав значение тайм-аута и имя tpipe в качестве значения альтернативного ИД клиента. В свою очередь, IMS TM отправляет запрос RESUME TPIPE в tpipe и ожидает запрос внешнего вызова от IMS Connect.
- Инициирующий клиент, например, терминал или IMS Connect или клиент OTMA, запускает приложение IMS.
- Приложение IMS отправляет вызов ISRT ALTPCB дескриптору целевого расположения OTMA, содержащему имя tpipe расположения. Сообщение с запросом внешнего вызова помещается в очередь в данном tpipe.
- Если запрос внешнего вызова недоступен во время выполнения SYNC_RECEIVE_CALLOUT, IMS TM блокируется, и объект ожидает прихода сообщения внешнего вызова до истечения тайм-аута. Как только запрос внешнего вызова доступен в tpipe, IMS Connect доставляет сообщение внешнего вызова в IMS TM.
- IMS TM получает сообщение запроса внешнего вызова и возвращает запрос внешнего вызова объекту. Объект EJB обрабатывает запрос внешнего вызова.
- Если объект получает данные ответа, которые необходимо переслать обратно в IMS, он отправляет обычный запрос транзакции IMS с выходными данными соответствующему приложению IMS.