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.sample.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.
    <bColl id="accountTransferData" bean="com.ibm.btt.sample.data.TransferDataBean" />
  4. Define the transfer java bean.
    public class TransferDataBean {
    	private String acctFrom;
    	private String acctTo;
    	private String amount;
    	private String pageName;
    	private String accountBalance;
    	private String outcome;
    	private String TrxReplyCode;
    
    	
    	public String getAcctFrom() {
    		return acctFrom;
    	}
    	public void setAcctFrom(String acctFrom) {
    		this.acctFrom = acctFrom;
    	}
    	
    		
    	public String getAcctTo() {
    		return acctTo;
    	}
    	public void setAcctTo(String acctTo) {
    		this.acctTo = acctTo;
    	}
    	
    	public String getAmount() {
    		return amount;
    	}
    	public void setAmount(String amount) {
    		this.amount = amount;
    	}
    	
    	public String getPageName() {
    		return pageName;
    	}
    	public void setPageName(String pageName) {
    		this.pageName = pageName;
    	}
    	
    	public String getAccountBalance() {
    		return accountBalance;
    	}
    	public void setAccountBalance(String accountBalance) {
    		this.accountBalance = accountBalance;
    	}
    	
    	public String getOutcome() {
    		return outcome;
    	}
    	public void setOutcome(String outcome) {
    		this.outcome = outcome;
    	}
    	
    	public String getTrxReplyCode() {
    		return TrxReplyCode;
    	}
    	public void setTrxReplyCode(String trxReplyCode) {
    		this.TrxReplyCode = trxReplyCode;
    	}
  5. 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>
  6. Define the JMS Invoker for transfer transaction in invoker.xml:
    <JMS id="packageSend" connectionFactory="jms/sampleConnectionFactory"
      sendDestination="jms/backendEmulatorQueue">
    </JMS>
  7. Implement the execute() method of transfer transaction in <toolkit_root>/samples/BTTMultiChannleSample/SampleBusiness/com.ibm.btt.sample.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.