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.
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.
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.
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(); } }