Ejemplo: Utilización del servicio de composición del sistema de mensajería

En el siguiente ejemplo se muestra cómo podría utilizar el servicio de composición del sistema de mensajería. Si tuviera una tienda llamada MyStore y quisiera asignar dos transportes, correo electrónico y archivo, al tipo de mensaje CompanyAOrderCreateMsg, debería hacer lo siguiente:

Añada una entrada en los archivos de configuración Struts para que lo utilice el archivo JSP para crear este mensaje de salida. Las claves para los archivos de configuración Struts son el nombre de vista, el ID de tienda y el ID de formato de dispositivo, que puede identificarse a partir del atributo de nombre "OrderCreateXMLFormatView/0/-3". Por ejemplo, en HCL Commerce versión 9.0.0.x, las claves se definen del siguiente modo:

 <forward className="com.ibm.commerce.struts.ECActionForward"
 name="OrderCreateXMLFormatView/0/-3" path="/OrderCreateXML.jsp">
 <set-property property="resourceClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
 <set-property property="properties" value="storeDir=no"/>
 <set-property property="interfaceName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommand"/>
 <set-property property="implClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
 <set-property property="direct" value="true"/>
 </forward>
En la versión 9.0.1+, se definen de esta manera:
<result name="OrderCreateXMLFormatView/0/-3">
     <param name="location">/OrderCreateXML.jsp</param>
     <param name="properties">storeDir=no</param>
     <param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
     <param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param>
     <param name="resourceClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
     <param name="direct">true</param>
 </result>
Importante: Cada vista creada que vaya a utilizar el servicio de composición del sistema de mensajería deberá utilizar el mandato de vista de mensajería para los campos de nombre de clase e interfaz. También deberá contener el nombre del archivo JSP y de cualquier subdirectorio del directorio Stores.war y de la tienda en el campo de la vía de acceso. Resumiendo:
INTERFACENAME
com.ibm.commerce.messaging.viewcommands.MessagingViewCommand
CLASSNAME
com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl
PATH
El parámetro que contiene el nombre de archivo JSP precedido de cualquier subdirectorio del directorio de la tienda.
PROPERTIES
Utilice el formato siguiente para señalar al archivo JSP docname=jsp file.
Nota: En la configuración de struts, PROPERTIES es opcional y es necesaria si y solo si el valor es "storeDir=no". Esta propiedad es necesaria si el jsp se encuentra en el directorio Stores.war predeterminado.
DEVICEFMT_ID
Representa el formato de dispositivo y debe utilizar el valor -3 (el formato de dispositivo estándar) a menos que en su aplicación se utilicen los formatos de dispositivo personalizados. El valor de DEVICEFMT_ID debe corresponderse con el formato de dispositivo que se ha seleccionado al asignar un tipo de mensaje a un transporte.

En el ejemplo siguiente, el STOREENT_ID de MyStore es 10001 y el viewname es CompanyAOrderAuthorizedView. Para evitar posibles problemas de migración, asegúrese de poner un prefijo exclusivo tanto al nombre de vista como al nombre de tipo de mensaje. En el atributo de nombre, "CompanyAOrderAuthorizedView/10001/-3" representa el viewname, el ID de tienda y el ID de formato de dispositivo, respectivamente.

En la versión 9.0.0.x, el código es el siguiente:


 <forward className="com.ibm.commerce.struts.ECActionForward"
 name="CompanyAOrderAuthorizedView/10001/-3" path="/Store_10001_Dir/OrderCreateXML.jsp">
 <set-property property="resourceClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
 <set-property property="interfaceName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommand"/>
 <set-property property="implClassName" value="com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl"/>
 <set-property property="direct" value="true"/>
 </forward>
 
En la versión 9.0.1+, es:
<result name="CompanyAOrderAuthorizedView/10001/-3">
     <param name="location">/Store_10001_Dir/OrderCreateXML.jsp</param>
     <param name="implClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
     <param name="interfaceName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommand</param> 
     <param name="resourceClassName">com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl</param>
     <param name="direct">true</param>
 </result>

Utilice la Consola de administración para asignar los transportes correo electrónico y archivo al mensaje CompanyAOrderCreateMsg y configurar los valores. Esto se puede llevar a cabo utilizando la autorización de administración a nivel de sitio o a nivel de tienda. Al crear valores a nivel de sitio todas las tiendas podrán acceder a los mismos.

Cuando implemente un mandato, cree una instancia del mandato SendMsgCmd para utilizar los servicios de mensajería y llame a los métodos setMsgType() y setStoreID(), utilizando el nombre de tipo de mensaje del tipo de mensaje CompanyAOrderCreateMsg y el ID de tienda de storeent_id, 10001. Coloque el archivo CompanyAOrderCreateMsg.jsp en el directorio raíz de la tienda.

Para utilizar la configuración a nivel de sitio, haga lo siguiente:

  1. Especifique STOREENT_ID como 0.
  2. Añada PROPERTIES de storeDir=no en el nombre de archivo JSP.
  3. Coloque el archivo JSP en el directorio WC_eardir/Stores.war.
  4. Invoque el método de composición de la interfaz del sistema de mensajería de salida y pase cualquier parámetro adicional con el formato de un objeto TypedProperty. Consulte el tema Servicios de definición de contenido de mensajes.
  5. Llame al método sendImediate o sendTransacted de SendMsgCmd si desea que el mensaje se envíe inmediatamente o después de que la transacción se haya comprometido satisfactoriamente. Consulte la documentación del sistema de mensajería para obtener una explicación detallada de cómo utilizar cada método.
  6. Llame al método execute de SendMsgCmd para ejecutar el proceso de envío.