Az IMS tranzakciók IMS TM erőforrás-illesztőn keresztüli eléréséhez megírható saját kezűleg az alkalmazás forráskódja a fejlesztői környezet által előállított alkalmazáskód használata helyett. Ez különbözik a fejlesztői környezet, például a Rational Application Developer használatától alkalmazások előállítására, amikor a kódolás szükségtelen.
A kód saját kezű megírásához az alkalmazásnak a Common Client Interface (CCI) programozási felületet kell használnia. A CCI API hozzáférést biztosít a J2EE ügyfelek, úgymint EJB-komponensek, JavaServer Pages (JSP) technológiák és kiszolgáló kisalkalmazások felől a vállalati információs rendszerek (EIS), például az IMS háttereként.
Azután létrehozható IMSConnection objektum az IMSConnectionFactory objektumból. Az IMSConnection objektum megadható egy IMSConnectionSpec objektumban a getConnection metódus felé paraméterként átadva, vagy az IMSConnectionFactory objektumban meghatározott alapértelmezett értékek kerülnek felhasználásra. Az IMSConnection objektum beszerzése után létrehozható belőle egy IMSInteraction objektum. Az IMSInteraction objektum az adott kapcsolaton végrehajtandó interakciót képviseli. A Connection objektumokhoz hasonlóan az Interaction objektumok rendelkezhetnek az IMSInteractionSpec osztályból származó egyéni tulajdonságokkal.
Az interakció végrehajtásához az alkalmazás hívást indít az IMSInteraction objektum execute() metódusa felé, bemeneti és kimeneti objektumokat adva át az adatok tárolásához. Létre kell hozni egy bemeneti byte tömböt, amely az IMS bemeneti üzenetében lévő összes mező értékét tartalmazza. Hasonlóan egy kimeneti byte tömböt is létre kell hozni az IMS által visszaadott válaszüzenet tárolására. A kimeneti üzenet összes mezőjének az értéke kibontásra kerül a kimeneti byte tömbből.
Megírhatja saját kezűleg a bemeneti és kimeneti byte tömböket vagy használhatja a Rational Application Developer (RAD) J2C lehetőségeit a CCI alkalmazás bemeneti és kimeneti üzeneteihez Java adatkötések létrehozására, még ha nem is tervezi az alkalmazásfejlesztéshez RAD használatát.
public void execute() { try { ConnectionFactory cf = null; if (isManaged) { //A JNDI lookup használata ConnectionFactory példány lekéréséhez - feltételezi, hogy a kapcsolatgyár JNDI neve MyIMS Context ic = new InitialContext(); cf = (ConnectionFactory) ic.lookup("MyIMS"); } else { //A ManagedConnectionFactory számára értékek létrehozása és beállítása IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory(); mcf.setDataStoreName("MyDSName"); mcf.setHostName("myHostNm"); mcf.setPortNumber(new Integer(1234)); //Kapcsolatgyár létrehozása a ManagedConnectionFactory objektumból cf = (IMSConnectionFactory) mcf.createConnectionFactory(); } Connection connection = cf.getConnection(); //IMS interakció létrehozása IVTNO tranzakció futtatásához IMSInteraction interaction = (IMSInteraction) connection.createInteraction(); IMSInteractionSpec ixnSpec = new IMSInteractionSpec(); ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE); //Új bemeneti rekord létrehozása 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 //Új kimeneti rekord létrehozása output = new PhoneBookOutputRecordField("cp037"); //Interakció végrehajtása interaction.execute(ixnSpec, input, output); //Kimenet megjelenítése System.out.println ("Output is: "); System.out.println("\nMessage: " + output.getOut__mesg() + "\nName:" + output.getOut__name1() + " " + output.getOut__name2() + "\nExtension: " + output.getOut__extn() + "\nZipcode: " + output.getOut__zip()); } catch (Exception e) { e.printStackTrace(); } finally { //Az interakció és a kapcsolat bezárása interaction.close(); connection.close(); } }