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="acctFromBalance" refType="String" />
      <data id="acctToBalance" refType="String" />
      <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" />
      			<fString dataName="acctFromBalance" />
      			<fString dataName="acctToBalance" />
      		</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 {
      //call JMS
        String useJMS = "false";
        useJMS = mark.getString("useJMS");
        Invoker jmsInvoker = null;
        if(useJMS.equals("true")){
            jmsInvoker = InvokerFactory.getDefaultInvokerFactory().createInvoker("packageSend");
            String message = " TransferOperation ......., request data :" + this.getContext().getValueAt("amount");
            jmsInvoker.execute(new Object[]{message});
        }
      //set the reply page for html channel
    }
    Note: The block of code demonstrates how to use BTT JMS invoker to call a JMS application.