Aplikacja użytkownika może wymagać pobrania danych wyjściowych, które zostały umieszczone w kolejce w pewnym wcześniejszym punkcie czasu - stąd pochodzi termin wyjście asynchroniczne. Wyjście asynchroniczne może być wynikiem różnych sytuacji. Na przykład niedostarczone dane wyjściowe z interakcji trybu commitMode 0, dane wyjściowe z przełączników program-program, dane wyjściowe komend ISRT do alternatywnego bloku PCB, dane wyjściowe z aplikacji systemu IMS, która zwraca wiele komunikatów wyjściowych.
W celu pobrania asynchronicznych danych wyjściowych aplikacja Java użytkownika wykonuje interakcję SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT lub SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT. Aplikacja podaje wartość właściwości interactionVerb oraz wartość 0 dla właściwości commitMode obiektu IMSInteractionSpec używanego przez metodę execute tej interakcji.
Do pobierania asynchronicznych danych wyjściowych można wykorzystać obydwa istniejące typy połączeń gniazd - trwałe gniazdo współużytkowalne i trwałe gniazdo dedykowane. Sposób pobierania asynchronicznych komunikatów wyjściowych różni się w zależności od wybranego połączenia gniazda. Wartości właściwości interactionVerb, które mogą być wykorzystane do pobrania asynchronicznych danych wyjściowych to: SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT i SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT (razem ze starszą wartością SYNC_RECEIVE_ASYNCOUTPUT).
Różnica pomiędzy wartościami SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT i SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT dotyczy tego, w jaki sposób produkt IMS Connect sprawdza dane wyjściowe w asynchronicznej kolejce wstrzymania IMS OTMA. Dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT lub SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT jeśli w asynchronicznej kolejce wstrzymania IMS OTMA podczas wykonywania żądania pobrania nie będzie asynchronicznych danych wyjściowych, produkt IMS Connect zwróci powiadomienie o przekroczeniu limitu czasu wykonania, gdy tylko upłynie czas określony przez aplikację kliencką jako limit czasu wykonania. Dlatego dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT zalecany jest najmniejszy możliwy limit czasu, który wynosi 10.
W przypadku interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT jeśli w asynchronicznej kolejce wstrzymania IMS OTMA podczas wykonywania żądania pobrania nie będzie asynchronicznych danych wyjściowych, produkt IMS Connect będzie czekał na zwracany przez OTMA komunikat przez czas określony we właściwości executionTimeout tej interakcji. Jeśli po przekroczeniu limitu czasu wykonania w kolejce wstrzymania nadal nie będzie asynchronicznych danych wyjściowych, produkt IMS Connect zwróci błąd przekroczenia limitu czasu wykonania. Dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT zamiast najkrótszej możliwej wartości należy wybrać odpowiednią wartość czasu wykonania.
Wszystkie trzy wartości właściwości interactionVerb wymagają trybu kontroli transakcji 0 i mogą być używane zarówno w połączeniach trwałych gniazd współużytkowalnych, jak i trwałych gniazd dedykowanych. Dodatkowo właściwości purgeAsycOutput, reRoute i reRouteName obiektu IMSInteractionSpec nie mają zastosowania do interakcji, które korzystają z tych trzech wartości właściwości interactionVerbs i są ignorowane przez adapter zasobów IMS TM. Sposób wywoływania właściwości interactionVerb dla połączeń gniazd dedykowanych i współużytkowalnych jest różny. Dodatkowo asynchroniczne dane wyjściowe mogą zostać pobrane ze współużytkowanych połączeń trwałych gniazd za pomocą dwóch metod: przy użyciu alternatywnego identyfikatora klienta lub właściwości reRouteName w tym samym
Pobieranie asynchronicznych danych wyjściowych dla połączeń trwałego gniazda dedykowanego
Aby pobrać komunikat wyjściowy z kolejki dla trwałego gniazda dedykowanego, aplikacja kliencka musi wykonać interakcję w trybie kontroli transakcji 0 z właściwością interactionVerb obiektu IMSInteractionSpec ustawioną na SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT lub SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT.
Oprócz wykonywania interakcji w trybie kontroli transakcji 0 dla połączenia trwałego gniazda dedykowanego z odpowiednią wartością właściwości interactionVerb obiektu IMSInteractionSpec, aplikacja kliencka musi także udostępnić wartość dla właściwości clientID obiektu IMSConnectionSpec. Właściwość clientID jest wymagana, ponieważ określa potok TPIPE, z którego pobrane zostaną asynchroniczne dane wyjściowe. Aby z interakcji w trybie kontroli transakcji 0 dla trwałego gniazda dedykowanego pobierać komunikaty wyjściowe, wartość właściwości clientID, określona dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT, musi zgadzać się z wartością podaną dla początkowej interakcji w trybie kontroli transakcji 0. Aby można było pobierać komunikaty wyjściowe wysłane do alternatywnego bloku PCB, wartość właściwości clientID podana dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT musi być taka sama, jak nazwa alternatywnego bloku PCB. Aby można było pobierać komunikaty wyjściowe, które zostały przekierowane do miejsca docelowego reRouteName, wartość właściwości clientID dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT musi być ustawiona na wskazywane przez właściwość reRouteName miejsce docelowe.
Pobieranie asynchronicznych danych wyjściowych z alternatywnym identyfikatorem klienta we współużytkowanych połączeniach trwałego gniazda
Aplikacja kliencka może pobrać z asynchronicznego wyjścia komunikaty, które zostały przekierowane, jak i te, które nie zostały przekierowane z dowolnego potoku OTMA TPIPE, korzystając z alternatywnego identyfikatora klienta. Ten alternatywny identyfikator klienta jest określany za pośrednictwem właściwości altClientID obiektu IMSInteractionSpec używanego przez metodę execute interakcji. Alternatywny identyfikator klienta będzie zgodny z nazwą potoku OTMA TPIPE, który zawiera komunikaty z asynchronicznego wyjścia. Aplikacja kliencka nie może określać nazwy rerouteName oraz alternatywnego identyfikatora klienta w tej samej interakcji.
Pobieranie asynchronicznych danych wyjściowych bez alternatywnego identyfikatora klienta we współużytkowanych połączeniach trwałego gniazda
Aplikacja kliencka we współużytkowanym połączeniu trwałego gniazda i bez korzystania z alternatywnego identyfikatora klienta może pobrać z asynchronicznego wyjścia tylko nieprzekierowane komunikaty będące wynikiem interakcji, wykonując interakcję SYNC_RECEIVE_ASYNCOUTPUT, SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT lub SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT na tym samym współużytkowanym połączeniu trwałego gniazda i w tej samej aplikacji, która wywołała interakcję, w wyniku której asynchroniczne dane wyjściowe zostały umieszczone w kolejce.
Interakcja | Gniazdo | clientID | reRouteName | altClientID | Komentarze |
---|---|---|---|---|---|
resumeTPIPE bez określania altClientID | Współużytkowane | NULL | NULL | NULL | Pobranie asynchronicznych danych wyjściowych musi być wykonane w tym samym połączeniu, co poprzednia interakcja. W przeciwnym razie pobranie asynchronicznych danych wyjściowych nie będzie możliwe. Jeśli pobieranie nie powiedzie się, komunikat zostanie utracony. |
resumeTPIPE bez określania altClientID | Współużytkowane | null | mojePrz | null | Pobranie asynchronicznych komunikatów musi być wykonane w tym samym połączeniu, co poprzednia interakcja. Jeśli pobieranie nie powiedzie się, komunikat zostanie przekierowany do miejsca mojePrz. |
resumeTPIPE z określaniem altClientID | Współużytkowane | null | Nie dotyczy | potokTPIPE | Pobranie asynchronicznych komunikatów z potoku TPIPE o nazwie "potokTPIPE". Właściwości reRouteName i altClientID są wzajemnie wyłączne i nie mogą być używane w tym samym czasie. |
resumeTPIPE | Dedykowane | mojCID | N/A | N/A | Pobranie asynchronicznych komunikatów z potoku TPIPE "mojCID". |