Model programowania z wyjściem asynchronicznym

Ten model programowania umożliwia pobieranie danych wyjściowych, które zostały umieszczone w kolejce przez system IMS.

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).

Uwaga: Nie ma żadnej różnicy funkcjonalnej między wartościami SYNC_RECEIVE_ASYNCOUTPUT i SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT. Zaleca się jednak używanie nowej nazwy SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT w przypadku wersji 9.1.0.1 oraz wersji późniejszych adaptera zasobów IMS TM. W pozostałej części tego dokumentu używana będzie tylko nowa nazwa SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT.

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.

Alternatywny identyfikator klienta jest obsługiwany, gdy aplikacja kliencka korzysta z wszystkich wymienionych niżej elementów:

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.

W poniższej tabeli pokazano zachowanie interakcji pobrania komunikatu z asynchronicznego wyjścia (resumeTpipe) przy użyciu różnych wartości właściwości.
Tabela 1. Zachowanie interakcji resumeTpipe, gdy podane są wartości właściwości obiektu IMSConnectionSpec
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".
Uwaga: W przypadku współużytkowanych połączeń trwałego gniazda tryb kontroli transakcji dla interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT zostanie wewnętrznie automatycznie ustawiony na wartość 0 przez adapter zasobów IMS TM, niezależnie od wartości, która została ustawiona dla tej interakcji w obiekcie IMSInteractionSpec. To zachowanie różni się od zachowania interakcji SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT w dedykowanych połączeniach trwałego gniazda. Dla dedykowanych połączeń gniazda tryb kontroli transakcji musi być jawnie ustawiony na wartość 0.

Opinie