Interfejs CCI (Common Client Interface)

Można utworzyć aplikację, która wykorzysta adapter zasobów IMS TM do interakcji z systemem IMS przy użyciu interfejsu CCI (Common Client Interface).

Aby uzyskać dostęp do transakcji systemu IMS za pośrednictwem adaptera zasobów IMS TM, można samodzielnie napisać kod źródłowy dla aplikacji i nie korzystać z kodu aplikacji generowanego przez środowisko programistyczne. Jest to inne podejście niż korzystanie ze środowiska programistycznego, takiego jak Rational Application Developer, do generowania aplikacji dla użytkownika w celu wyeliminowania konieczności kodowania.

Przy samodzielnym pisaniu kodu aplikacja musi korzystać z interfejsu programistycznego CCI (Common Client Interface). Interfejs API CCI zapewnia dostęp klientom J2EE, takim jak komponenty EJB, technologia JSP (JavaServer Pages) oraz serwlety, do systemów EIS (enterprise information systems) zaplecza, takich jak system IMS.

Aplikacje, które stosują model interfejsu programistycznego CCI, mają wspólną strukturę, niezależną od używanego systemu EIS. Specyfikacja JCA (J2EE Connector Architecture) definiuje dwa obiekty, które są niezbędne dla aplikacji: Te obiekty pozwalają serwerowi aplikacji na zarządzanie bezpieczeństwem, kontekstem transakcji oraz pulami połączeń dla adaptera zasobów. Aplikacja, która korzysta z interfejsu programistycznego CCI adaptera zasobów IMS TM rozpoczyna działanie od uzyskania obiektu IMSConnectionFactory. Obiekt IMSConnectionFactory można pobrać na dwa sposoby:

Połączenia IMS

Obiekt IMSConnection można następnie utworzyć z obiektu IMSConnectionFactory. Właściwości obiektu IMSConnection mogą zostać określone w obiekcie IMSConnectionSpec przekazanym jako parametr do metody getConnection albo zostaną użyte wartości domyślne zdefiniowane w obiekcie IMSConnectionFactory. Po uzyskaniu obiektu IMSConnection można z niego utworzyć obiekt IMSInteraction. Obiekt IMSInteraction reprezentuje interakcję, która zostanie wykonana w tym połączeniu. Podobnie jak w przypadku połączeń, interakcje mogą mieć swoje właściwości niestandardowe pochodzące z klasy IMSInteractionSpec.

Wejście i wyjście

Aby wykonać interakcję, aplikacja wywołuje metodę execute() obiektu IMSInteraction, przekazując jej obiekt wejściowy i obiekt wyjściowy do przechowywania danych. Należy utworzyć wejściową tablicę bajtów zawierającą wartości dla każdego pola w komunikacie wejściowym dla systemu IMS. Podobnie należy utworzyć wyjściową tablicę bajtów w celu przechowania komunikatu odpowiedzi zwracanego przez system IMS. Wartość każdego pola w komunikacie wyjściowym jest pobierana z wyjściowej tablicy bajtów.

Wejściową i wyjściową tablicę bajtów można napisać samodzielnie, ale można również skorzystać z opcji J2C produktu Rational Application Developer (RAD) do utworzenia powiązań danych Java dla komunikatów wejściowych i wyjściowych aplikacji CCI, nawet jeśli nie zakłada się użycia produktu RAD w procesie rozwoju aplikacji.

Wymagania dla aplikacji, które pobierają dane z systemu IMS:
  • Użycie obiektu IMSConnectionFactory do utworzenia obiektu IMSConnection.
  • Użycie obiektu IMSConnection do utworzenia obiektu IMSInteraction.
  • Użycie obiektu IMSInteraction do wykonania transakcji w systemie IMS zaplecza.
  • Zamknięcie obiektów IMSInteraction i IMSConnection.

Przykładowy kod aplikacji CCI

W poniższym przykładzie pokazano sposób użycia interfejsów CCI J2EE do wykonania komendy w systemie EIS:
public void execute() {
try {
   ConnectionFactory cf = null;
   if (isManaged) {
//Zastosuj wyszukiwanie JNDI, aby uzyskać instancję ConnectionFactory - założono, że fabryka połączeń ma nazwę JNDI MyIMS
      Context ic = new InitialContext();
      cf = (ConnectionFactory) ic.lookup("MyIMS");
   } else {
//Utwórz i ustaw wartości obiektu ManagedConnectionFactory
      IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory();
      mcf.setDataStoreName("MyDSName");
      mcf.setHostName("myHostNm");
      mcf.setPortNumber(new Integer(1234));
//Utwórz fabrykę połączeń z obiektu ManagedConnectionFactory
      cf = (IMSConnectionFactory) mcf.createConnectionFactory();
   }
   Connection connection = cf.getConnection();

//Utwórz interakcję z systemem IMS, aby uruchomić transakcję IVTNO
   IMSInteraction interaction = (IMSInteraction) connection.createInteraction();
   IMSInteractionSpec ixnSpec = new IMSInteractionSpec();
   ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE);

//Utwórz nowy rekord wejściowy
   input = new PhoneBookInputRecordField("cp037");
   input.setIn__ll((short)59);
   input.setIn__zz((short) 0);
   input.setIn__trcd("IVTNO");
   input.setTranCodeLength(10);
   input.setIn__command("DISPLAY");
   input.setIn__name1("LAST3");
   input.setIn__name2("");
   input.setAllFieldsGiven(false);
   PhoneBookOutputRecordField

//Utwórz nowy rekord wyjściowy
   output = new PhoneBookOutputRecordField("cp037");

//Wykonaj interakcję
   interaction.execute(ixnSpec, input, output);

//Wyświetl dane wyjściowe
   System.out.println ("Dane wyjściowe: ");
   System.out.println("\nKomunikat: "
      + output.getOut__mesg()
      + "\nNazwa:"
      + output.getOut__name1()
      + " "
      + output.getOut__name2()
      + "\nNumer wewnętrzny: "
      + output.getOut__extn()
      + "\nKod pocztowy: "
      + output.getOut__zip());

} catch (Exception e) {
   e.printStackTrace();
} finally {
//Zamknij interakcję i połączenie
   interaction.close();
   connection.close();
}
}

Opinie