Implementing an account summary transaction

To implement an account summary transaction, do the following:
  1. Define the account summary operation in accountSummaryOp.xml:
    <accountSummaryOp.xml>
      <operation id="accountSummaryOp" context="accountSummaryCtx"
        implClass="com.ibm.btt.sample.operation.AccountSummaryOp">
        <refFormat name="csReplyFormat" refId="accountSummaryOpRecFmt" />
        <opStep id="journalHostRequestDataStep" on0Do="next" onOtherDo="return" />
        <opStep id="sendHostStep" on0Do="next" onOtherDo="return" />
        <opStep id="journalHostReplyDataStep" on0Do="return" />
      </operation>  
    </accountSummaryOp.xml>
  2. Define the account summary context in dsectxt.xml.
    <context id="accountSummaryCtx" type="op">
      <refKColl refId="accountSummaryData" />
    </context>
  3. Define the account summary data element in dsedata.xml.
    <bColl id="accountSummaryData" bean="com.ibm.btt.sample.data.AccountSummaryBean" />
  4. Define the payment java bean.
    public class AccountSummaryBean {
    	/*
    	<refData refId="TrxId" />
    	<refData refId="AccountNumber" />
    	<refData refId="accountSummaryDetails" />
    	<refData refId="TrxReplyCode" />
    	<refData refId="TrxErrorMessage" />
    	<field id="UserId" />
    	<field id="TID" />
    	<field id="HostBuff" />
    	<field id="AccountBalance" />
    	<data id="pageName" refType="String"></data>
    	<field id="recNumber" />*/
    	
    	private String TrxId;
    	private String AccountNumber;
    	private String TrxReplyCode;
    	private String TrxErrorMessage;
    	private String UserId;
    	private String TID;
    	private String HostBuff;
    	private String AccountBalance;
    	private String pageName;
    	private int recNumber;
    	private ArrayList<AccountSummaryLine> accountSummaryDetails=new ArrayList<AccountSummaryLine>();
    	
    	
    	public int getRecNumber() {
    		return recNumber;
    	}
    
    	public void setRecNumber(int recNumber) {
    		this.recNumber = recNumber;
    	}
    
    	public String getTrxId() {
    		return TrxId;
    	}
    
    	public void setTrxId(String trxId) {
    		TrxId = trxId;
    	}
    
    	public String getAccountNumber() {
    		return AccountNumber;
    	}
    
    	public void setAccountNumber(String accountNumber) {
    		AccountNumber = accountNumber;
    	}
    
    	public String getTrxReplyCode() {
    		return TrxReplyCode;
    	}
    
    	public void setTrxReplyCode(String trxReplyCode) {
    		TrxReplyCode = trxReplyCode;
    	}
    
    	public String getTrxErrorMessage() {
    		return TrxErrorMessage;
    	}
    
    	public void setTrxErrorMessage(String trxErrorMessage) {
    		TrxErrorMessage = trxErrorMessage;
    	}
    
    	public String getUserId() {
    		return UserId;
    	}
    
    	public void setUserId(String userId) {
    		UserId = userId;
    	}
    
    	public String getTID() {
    		return TID;
    	}
    
    	public void setTID(String tid) {
    		TID = tid;
    	}
    
    	public String getHostBuff() {
    		return HostBuff;
    	}
    
    	public void setHostBuff(String hostBuff) {
    		HostBuff = hostBuff;
    	}
    
    	public String getAccountBalance() {
    		return AccountBalance;
    	}
    
    	public void setAccountBalance(String accountBalance) {
    		AccountBalance = accountBalance;
    	}
    
    	public String getPageName() {
    		return pageName;
    	}
    
    	public void setPageName(String pageName) {
    		this.pageName = pageName;
    	}
    
    	
    
    	public ArrayList<AccountSummaryLine> getAccountSummaryDetails() {
    		return accountSummaryDetails;
    	}
    
    	
    
    	public void setAccountSummaryDetails(
    			ArrayList<AccountSummaryLine> accountSummaryDetails) {
    		this.accountSummaryDetails = accountSummaryDetails;
  5. Define the account summary java bean.
    public class AccountSummaryBean {
    	/*
    	<refData refId="TrxId" />
    	<refData refId="AccountNumber" />
    	<refData refId="accountSummaryDetails" />
    	<refData refId="TrxReplyCode" />
    	<refData refId="TrxErrorMessage" />
    	<field id="UserId" />
    	<field id="TID" />
    	<field id="HostBuff" />
    	<field id="AccountBalance" />
    	<data id="pageName" refType="String"></data>
    	<field id="recNumber" />*/
    	
    	private String TrxId;
    	private String AccountNumber;
    	private String TrxReplyCode;
    	private String TrxErrorMessage;
    	private String UserId;
    	private String TID;
    	private String HostBuff;
    	private String AccountBalance;
    	private String pageName;
    	private int recNumber;
    	private ArrayList<AccountSummaryLine> accountSummaryDetails=new ArrayList<AccountSummaryLine>();
    	
    	
    	public int getRecNumber() {
    		return recNumber;
    	}
    
    	public void setRecNumber(int recNumber) {
    		this.recNumber = recNumber;
    	}
    
    	public String getTrxId() {
    		return TrxId;
    	}
    
    	public void setTrxId(String trxId) {
    		TrxId = trxId;
    	}
    
    	public String getAccountNumber() {
    		return AccountNumber;
    	}
    
    	public void setAccountNumber(String accountNumber) {
    		AccountNumber = accountNumber;
    	}
    
    	public String getTrxReplyCode() {
    		return TrxReplyCode;
    	}
    
    	public void setTrxReplyCode(String trxReplyCode) {
    		TrxReplyCode = trxReplyCode;
    	}
    
    	public String getTrxErrorMessage() {
    		return TrxErrorMessage;
    	}
    
    	public void setTrxErrorMessage(String trxErrorMessage) {
    		TrxErrorMessage = trxErrorMessage;
    	}
    
    	public String getUserId() {
    		return UserId;
    	}
    
    	public void setUserId(String userId) {
    		UserId = userId;
    	}
    
    	public String getTID() {
    		return TID;
    	}
    
    	public void setTID(String tid) {
    		TID = tid;
    	}
    
    	public String getHostBuff() {
    		return HostBuff;
    	}
    
    	public void setHostBuff(String hostBuff) {
    		HostBuff = hostBuff;
    	}
    
    	public String getAccountBalance() {
    		return AccountBalance;
    	}
    
    	public void setAccountBalance(String accountBalance) {
    		AccountBalance = accountBalance;
    	}
    
    	public String getPageName() {
    		return pageName;
    	}
    
    	public void setPageName(String pageName) {
    		this.pageName = pageName;
    	}
    
    	
    
    	public ArrayList<AccountSummaryLine> getAccountSummaryDetails() {
    		return accountSummaryDetails;
    	}
    
    	
    
    	public void setAccountSummaryDetails(
    			ArrayList<AccountSummaryLine> accountSummaryDetails) {
    		this.accountSummaryDetails = accountSummaryDetails;
  6. Define the account summary data format in dsefmts.xml.
    • Format definition used for account summary transaction in Web 2.0 channel.
      <fmtDef id="accountSummaryXMLFmt">
        <fXML>
          <fString dataName="CustomerName" />
            <iCollF dataName="accounts" times="*">
              <record dataName="account">
                <fString dataName="name" />
                <fString dataName="type" />
                <fString dataName="number" />
                <fString dataName="amount" />
              </record>
      			 </iCollF>
        </fXML>
      	</fmtDef>
      <fmtDef id="accountSummaryDetailQueryXMLFmt">
        <fXML dataName="accountSummaryData">
          <fString dataName="TrxId" />
          <fString dataName="AccountNumber" />
          <iCollF dataName="accountSummaryDetails" times="*">
            <record dataName="accountSummaryLine">
              <fString dataName="OpnDate" />
              <fString dataName="OpnDescription" />
              <fString dataName="OpnAmount" />
              <fString dataName="OpnBalance" />
              <fString dataName="billNumber" />
              <fString dataName="billType" />
              <fString dataName="debitOrCredit" />
            </record>
          </iCollF>
          <fString dataName="TrxErrorMessage" />
        </fXML>
      </fmtDef>
    • Format definition used for account summary transaction in HTML channel, JSF channel and Rich Client.
      <fmtDef id="accountSummaryOpSendFmt">
      		<record>
      			<constant value="Tx04" />
      			<delim delimChar="#" />
      			<fString dataName="AccountNumber" />
      			<delim delimChar="#" />
      		</record>
      	</fmtDef>
      
      	<fmtDef id="accountSummaryOpRecFmt">
        <record>
          <fString dataName="TrxReplyCode" />
          <delim delimChar="#" />
          <iCollF dataName="accountSummaryDetails" times="*">
            <record dataName="accountSummaryLine">
              <fString dataName="OpnDate" />
              <delim delimChar="@" />
              <fString dataName="OpnDescription" />
              <delim delimChar="@" />
              <fString dataName="OpnAmount" />
              <delim delimChar="@" />
              <fString dataName="OpnBalance" />
              <delim delimChar="@" />
              <fString dataName="billNumber" />
              <delim delimChar="@" />
              <fString dataName="billType" />
              <delim delimChar="@" />
              <fString dataName="debitOrCredit" />
              <delim delimChar="@" />
            </record>
          </iCollF>
          <delim delimChar="#" />
          <fString dataName="TrxErrorMessage" />
          <delim delimChar="#" />
        </record>
      </fmtDef>
    • Format definition used for account summary opStep. It’s used to format Journal information.
      <fmtDef id="preSendJournalFmt">
        <hashtable>
          <fObject dataName="UserId" />
          <fObject dataName="TID" />
          <fObject dataName="HostBuff" />
        </hashtable>
      </fmtDef>
      <fmtDef id="afterRecJournalFmt">
        <hashtable>
          <fObject dataName="TrxReplyCode" />
          <fObject dataName="TrxErrorMessage" />
          <fObject dataName="AccountBalance" />
        </hashtable>
      </fmtDef>
  7. Implement the execute() method of account summary opStep.
    • Refer to com.ibm.btt.sample.opstep.JournalHostRequestDataStep.java in the <toolkit_root>/samples/BTTMultiChannleSample/SampleBusiness/ for details.
      Note: This block of code demonstrates how to use Journal service to update a record from the database.
    • Refer to com.ibm.btt.sample.opstep.SendHostStep.java in the <toolkit_root>/samples/BTTMultiChannleSample/SampleBusiness/ for details.
      Note: This block of code demonstrates how to use BTT dummy JCA service to simulate the JCA server.
    • Refer to com.ibm.btt.sample.opstep.JournalHostReplyDataStep.java in the <toolkit_root>/samples/BTTMultiChannleSample/SampleBusiness/ for details.
      Note: This block of code demonstrates how to use Journal service to update a record from a database.