CCI (Common Client Interface)

É possibile creare un'applicazione per utilizzare l'adattatore di risorse IMS TM per interagire con IMS mediante CCI (Common Client Interface).

Per accedere a transazioni IMS™ tramite l'adattatore di risorse IMS, è possibile scrivere il codice sorgente per le applicazioni e non utilizzare il codice dell'applicazione generato dall'ambiente di sviluppo. Ciò è differente dall'utilizzo di un ambiente di sviluppo come Rational Application Developer per generare applicazioni, cosicché la codifica non è necessaria.

Per scrivere il codice, l'applicazione deve utilizzare il programma di interfaccia CCI (Common Client Interface). L'API CCI fornisce l'accesso da client J2EE, come i bean enterprise, tecnologia JSP (JavaServer Pages) e servlet, ai sistemi informativi aziendali backend (EIS), come ad esempio IMS.

Le applicazioni che seguono il modello di interfaccia di programmazione CCI hanno una struttura comune, indipendente dall'EIS utilizzato. La specifica JCA (J2EE Connector Architecture) definisce due oggetti necessari per l'applicazione: Tali oggetti consentono che un server delle applicazioni gestisca la protezione, il contesto di transazione e i pool di connessione per un adattatore di risorse. Un'applicazione che utilizza IMS Connector per l'interfaccia di programmazione CCI Java, viene avviata ottenendo un oggetto IMSConnectionFactory. L'oggetto IMSConnectionFactory può essere ottenuto in due modi:

Connessioni IMS

Un oggetto IMSConnection può essere creato da quell'oggetto IMSConnectionFactory. Le proprietà dell'oggetto IMSConnection possono essere specificate in un oggetto IMSConnectionSpec passato come un parametro per ottenere il metodo getConnection o i valori predefiniti definiti nell'oggetto IMSConnectionFactory che verrà utilizzato. Dopo aver ottenuto IMSConnection, è possibile creare IMSInteraction da IMSConnection. IMSInteraction rappresenta l'interazione da eseguire su quella connessione. Come con la connessione, le interazioni possono avere proprietà personalizzate prese dalla classe IMSInteractionSpec.

Input e output

Per eseguire l'interazione, l'applicazione effettua una chiamata al metodo execute() dell'oggetto IMSInteraction, passando oggetti di intput e output per contenere i dati. Creare una matrice di byte di input contenente valori per ciascun campo nel messaggio di input a IMS. Similmente, creare anche una matrice di byte di output per contenere il messaggio di risposta restituito da IMS. Il valore di ciascun campo nel messaggio di output viene estratto dalla matrice di byte di output.

Requisiti per applicazioni che recuperano dati da un sistema IMS:
  • Utilizzare l'oggetto IMSConnectionFactory per creare un oggetto IMSConnection.
  • Utilizzare l'oggetto IMSConnection per creare un oggetto IMSInteraction.
  • Utilizzare l'oggetto IMSInteraction per eseguire transazioni sul sistema IMS backend.
  • Chiudere gli oggetti IMSInteraction e IMSConnection.

Codice dell'applicazione CCI di esempio

Il seguente esempio illustra l'utilizzo di interfacce CCI J2EE per eseguire un comando su un EIS:
public void execute() {
try {
   ConnectionFactory cf = null;
   if (isManaged) {
//Use JNDI lookup to get ConnectionFactory instance - assumes connection factory has JNDI name of MyIMS
      Context ic = new InitialContext();
      cf = (ConnectionFactory) ic.lookup("MyIMS");
   } else {
//Create and set values for ManagedConnectionFactory
      IMSManagedConnectionFactory mcf = new IMSManagedConnectionFactory();
      mcf.setDataStoreName("MyDSName");
      mcf.setHostName("myHostNm");
      mcf.setPortNumber(new Integer(1234));
//Create connection factory from ManagedConnectionFactory
      cf = (IMSConnectionFactory) mcf.createConnectionFactory();
   }
   Connection connection = cf.getConnection();

//Create interaction with IMS to run IVTNO transaction
   IMSInteraction interaction = (IMSInteraction) connection.createInteraction();
   IMSInteractionSpec ixnSpec = new IMSInteractionSpec();
   ixnSpec.setInteractionVerb(IMSInteractionSpec.SYNC_SEND_RECEIVE);

//Create new input record 
   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

//Create new output record 
   output = new PhoneBookOutputRecordField("cp037");

//Execute interaction
   interaction.execute(ixnSpec, input, output);

//Display output
   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 {
//Close both the interaction and the connection
   interaction.close();
   connection.close();
}
}

Feedback