Implementing a transfer transaction

To implement a transfer transaction, do the following:
  1. Define the transfer transaction in accountTransferOp.xml.
    <accountTransferOp.xml>
      <operation context="accountTransferCtx" id="accountTransferOp"
        implClass="com.ibm.btt.poc.operation.TransferOperation">
        <refFormat name="csReplyFormat" refId="transferSecondRecFmt" />
      </operation>
    </accountTransferOp.xml>
  2. Define the transfer context in dsectxt.xml.
    <context id="accountTransferCtx" type="oper">
      <refKColl refId="accountTransferData"/>
    </context>
  3. Define the transfer data element in dsedata.xml.
    <kColl id="accountTransferData">
    <data id="acctFrom" refType="String">
    <param id="isMandatory" value="true" />
    </data>
    <data id="acctTo" refType="String">
    <param id="isMandatory" value="true" />
    </data>
    <data id="amount" refType="String">
    <param id="isMandatory" value="true" />
    </data>
    <data id="pageName" refType="String"></data>
    <field id="AccountBalance" />
    <field id="outcome" />
    <field id="TrxReplyCode" />
    </kColl>
  4. Define the transfer data format in dsefmts.xml.
    • Format definition used for transfer transaction in Web 2.0 channel:
      <fmtDef id="transferXMLFmt">
      <fXML dataName="accountTransferData">
      <fString dataName="acctFrom" />
      <fString dataName="acctTo" />
      <fString dataName="amount" />
      </fXML>
      </fmtDef>
      <fmtDef id="transferFirstRecFmt">
      <record>
      
      </record>
      </fmtDef>
    • Format definition used for transfer transaction in HTML channel, JSF channel and Rich Client:
      <fmtDef id="transferSecondRecFmt">
      		<record>
      			<fString dataName="TrxReplyCode" />
      			<delim delimChar="#" />
      		</record>
      	</fmtDef>
      <fmtDef id="transferSecondReqFmt">
      		<record>
      			<constant value="Tx06" />
      			<delim delimChar="#" />
      			<fString dataName="acctFrom" />
      			<delim delimChar="#" />
      			<fString dataName="acctTo" />
      			<delim delimChar="#" />
      			<fString dataName="amount" />
      			<delim delimChar="#" />
      		</record>
      	</fmtDef>
  5. Define the JMS Invoker for transfer transaction in invoker.xml:
    <JMS id="packageSend" connectionFactory="jms/sampleConnectionFactory"
      sendDestination="jms/backendEmulatorQueue">
    </JMS>
  6. Implement the execute() method of transfer transaction in <toolkit_root>/samples/BTTMultiChannleSample/SampleBusiness/com.ibm.btt.poc.operation.TransferOperation.java
    public void execute() throws Exception {
    System.out.println("====== TransferOp Start =====");
    // call JMS
    String useJMS="false";
    useJMS=mark.getString("useJMS");
    Invoker jmsInvoker=null;
    if(useJMS.equals("true")){
    System.out.println("useJMS===="+useJMS);
    jmsInvoker= InvokerFactory.getDefaultInvokerFactory().createInvoker("packageSend");
    String message=" TransferOperation ......., request data :"+this.getContext().getValueAt("amount");
    
    jmsInvoker.execute(new Object[]{message});
    }
    // Set the page to display for HTML channel
    
    
    setValueAt(HtmlConstants.REPLYPAGE, "transfercomplete.jsp");
    setValueAt("outcome","succcess");
    setValueAt("errorCode", HtmlException.OK);
    setValueAt("TrxReplyCode","OK");
    }
    Note: The block of code demonstrates how to use BTT JMS invoker to call a JMS application.