Common Client Interface (CCI)

A Common Client Interface (CCI) segítségével létrehozható olyan alkalmazás, amely az IMS TM erőforrás-illesztőt használja az IMS együttműködéshez.

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.

A CCI programozási felület modellt követő alkalmazások általános szerkezettel rendelkeznek, amely független a használt EIS rendszertől. A J2EE Connector Architecture (JCA) specifikáció az alkalmazás számára szükséges két objektumot határoz meg: Ezek az objektumok az alkalmazáskiszolgálók számára lehetővé teszik a biztonság, tranzakció környezet és egy erőforrás-illesztő kapcsolatkészleteinek kezelését. Az IMS TM erőforrás-illesztő CCI programozási felületét használó alkalmazások egy IMSConnectionFactory objektum beszerzésével indulnak. Az IMSConnectionFactory objektum két módon szerezhető be:

IMS kapcsolatok

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.

Bemenet és kimenet

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.

Egy IMS rendszerből adatokat lekérő alkalmazás követelményei:
  • Használja az IMSConnectionFactory objektumot IMSConnection objektum létrehozásához.
  • Használja az IMSConnection objektumot IMSInteraction objektum létrehozásához.
  • Használja az IMSInteraction objektumot a háttér IMS rendszeren tranzakciók végrehajtására.
  • Zárja be az IMSInteraction és IMSConnection objektumokat.

Minta CCI alkalmazáskód

Az alábbi példa a J2EE CCI felületek használatát mutatja be egy EIS rendszeren parancs végrehajtásához:
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();
}
}

Visszajelzés