Examples: Outbound messaging system interface

The following Java code segment shows how interactions with the outbound messaging system can take place. Example 1 shows you how to build a new XML message and send it through the outbound messaging system. Example 2 shows you how to build an e-mail message and send it through the outbound messaging system:

Example 1

try

{

com.ibm.commerce.messaging.commands.SendMsgCmd api =

(com.ibm.commerce.messaging.commands.SendMsgCmd)

CommandFactory.createCommand(SendMsgCmd.NAME, getStoreId());

// Assume you have set the msgType in the MSGTYPES table to 100 and you are 
using

// storeId of 10001.

api.setMsgType("OrderCreateXMLFormat");
api.setStoreID(new Integer(10001));

 

// You have to choice on how to build the msg:

// First choice: build your XML msg in a String object and then use the 
setContent().

String CompanyAOrderCreateMsg = new String("<?xml version="1.0" encoding="UTF-8"?> 
...");
// Set the content for English (with language id of -1)
// The first parameter is null. This means that the transport used is 
// dependent on the value set in the Administration Console.

api.setContent(null, "-1" , OrderCreateMsg.getBytes()); 
 

// Or, use the message composition services (compose()) by passing the 
template/view name

// This view, "CompanyAOrderCreateMsgView", name should have been newly 
// created in VIEWREG referring 
// to a JSP message layout template, which requires values set into variables, 
// ORDER_REF_NUMBER and LANGUAGE_ID.
// In this case, the default view, OrderCreateXMLFormatView (associated with msgtype name 
// "OrderCreateXMLFormat") will not be used.
// If both api.setContent(Integer, String, byte[]) and api.compose(String,CommandContext,TypedProperty) 
// are used, content generated by composition will override the other.
// If no view can be found under the store id found in the commandContext object, the messaging system 
// will attempt to look up the view with storeent_id of "0".
String viewName = "CompanyAOrderCreateMsgView";
TypedProperty tp = new TypedProperty();

// get the orderRefNumber and put it into tp

tp.put("ORDER_REF_NUMBER", getOrderRn().toString());

// get the languageId and put it into tp

tp.put("LANGUAGE_ID", getCommandContext().getLanguageId());

// Pass the viewName, command Context and parameters stored in tp to compose 
services.

// Upon successful completion, a message is build according to message layout 
defined in the

// JSP message layout template referred by viewName.

api.compose(viewName, getCommandContext(), tp);

 

// Send out the message using sendTransacted send service.

api.sendTransacted();

// Set the command context obtained from the controller command.

api.setCommandContext(getCommandContext());

// Run the outbound messaging system services

api.execute();

}

catch (Exception ex )

{

ex.printStackTrace(System.err);

}

Example 2

try

{

com.ibm.commerce.messaging.commands.SendMsgCmd api =

(com.ibm.commerce.messaging.commands.SendMsgCmd)

CommandFactory.createCommand(SendMsgCmd.NAME, getStoreId());

// Assume you have set the msgType in the MSGTYPES table to 200 and you are 
using

// storeId of 1.

api.setMsgType("OrderReceived");
api.setStoreID(new Integer(1));

 

// You have to choice on how to build the msg:

// First choice: build your XML msg in a String object and then use the 
setContent().

String OrderNotifyMsg =

new String("Your Order has been received. Thank You for Shopping with us.");

// Set the content for English (with language id of -1)
// The first parameter is null. This means that the transport used is dependent on the 
// value set in the Administration Console.
api.setContent(null, "-1" , OrderCreateMsg.getBytes()); 
 

// Or, use the message composition services (compose()) by passing the 
template/view name

TypedProperty tp = null;

// Pass the viewName, command Context and null parameter stored in tp to composition 
// services, assuming the JSP file associating with default view does not require 
// any additional values from this command.
// Upon successful completion, a message is build according to message layout 
defined in the

// JSP message layout template referred by viewName associated with the 
// message type OrderReceive.

api.compose(null, getCommandContext(), tp);
 
// Set the subject, recipient and sender information using Configurable message data services.
// To adapt the following example to use the file adapter instead of the email adapter,  replace 
// the 3 lines of code for the email adapter with the following 2 lines:
// api.setConfigData("location","c:\"); 
// api.setConfigData("FileName","abc.txt");


api.setConfigData("subject","Your Order has been received");

api.setConfigData("recipient",getEmailAddress());

api.setConfigData("sender","storeAdmin@storeABC.com);

// Send out the message using sendImmediate send service.

api.sendImmediate();

// Set the command context obtained from the controller command.

api.setCommandContext(getCommandContext());

// Run the outbound messaging system services

api.execute();

}

catch (Exception ex )

{

ex.printStackTrace(System.err);

Feedback