Exemple : Utilisation du service de composition du système de messagerie

L'exemple suivant montre comment utiliser le service de composition du système de messagerie. Si vous avez un magasin nommé MyStore et que vous souhaitez affecter deux transports, e-mail et fichier, au type de message CompanyAOrderCreateMsg, vous devez :

Ajouter une entrée aux fichiers de configuration Struts pour le fichier JSP à utiliser pour composer ce message sortant. Les clés des fichiers de configuration Struts sont le nom de l'affichage, l'ID de magasin et l'ID de format de périphérique qui peuvent être identifiés à partir de l'attribut de nom "OrderCreateXMLFormatView/0/-3". Par exemple, dans HCL Commerce version 9.0.0.x, les clés sont définies comme suit :

 <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>
Dans la version 9.0.1+, elles sont définies de cette façon :
<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>
Important : Chaque vue créée pour être utilisée par le service de composition du système de messagerie doit utiliser la commande d'affichage de messagerie pour les champs interface et nom de classe. Elle doit également contenir le nom du fichier JSP et tout sous-répertoire relatif à Stores.war et au répertoire de magasin dans la zone du chemin d'accès. Pour récapituler :
INTERFACENAME
com.ibm.commerce.messaging.viewcommands.MessagingViewCommand
CLASSNAME
com.ibm.commerce.messaging.viewcommands.MessagingViewCommandImpl
PATH
Paramètre contenant le nom de fichier JSP ajouté au début de n'importe quel sous-répertoire relatif au répertoire de magasin.
PROPERTIES
Utilisez le format suivant pour pointer vers le fichier JSP docname=jsp file.
Remarque : Dans la configuration Struts, PROPERTIES est facultatif et nécessaire uniquement si la valeur est "storeDir=no". Cette propriété est nécessaire si jsp se trouve dans le répertoire Stores.war par défaut.
DEVICEFMT_ID
Représente le format du périphérique et doit utiliser la valeur -3 (le format standard du périphérique) à moins d'utiliser des formats de périphérique personnalisés pour votre application. DEVICEFMT_ID doit correspondre au format de périphérique sélectionné lors de l'attribution d'un type de message à un transport.

Dans l'exemple suivant, le STOREENT_ID de MyStore est 10001 et viewname est CompanyAOrderAuthorizedView. Pour éviter d'éventuels problèmes de migration, assurez-vous d'ajouter un préfixe unique au nom de l'affichage et au nom du type de message. Dans l'attribut de nom, "CompanyAOrderAuthorizedView/10001/-3" représente viewname, respectivement l'ID de magasin et le format de périphérique.

Dans la version 9.0.0.x, le code est le suivant :


 <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>
 
Dans la version 9.0.1+, le code est le suivant :
<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>

Utilisez la console d'administration pour affecter les transports de messagerie et de fichier au message CompanyAOrderCreateMsg et configurez les paramètres. Cela peut être fait en utilisant l'autorité d'administration de niveau site ou magasin. La création de paramètres de niveau site le rendra accessible à tous les magasins.

Dans l'implémentation d'une commande, instanciez la commande SendMsgCmd pour utiliser les services de messagerie et appelez les méthodes setMsgType() et setStoreID(), à l'aide du nom du type de message de CompanyAOrderCreateMsg et de l'ID de magasin de storeent_id 10001. Placez le fichier CompanyAOrderCreateMsg.jsp dans le répertoire racine du magasin.

Pour utiliser la configuration de niveau site, procédez comme suit :

  1. Spécifiez 0 pour STOREENT_ID.
  2. Pour PROPERTIES, indiquez storeDir=no au nom du fichier JSP.
  3. Placez le fichier JSP dans le répertoire WC_eardir/Stores.war.
  4. Invoquez la méthode de composition de l'interface du système de messagerie sortante et transmettez tous les paramètres supplémentaires sous la forme d'un objet TypedProperty. Consultez la rubrique Services de définition de contenu de message.
  5. Appelez sendImediate ou sendTransacted sur SendMsgCmd si vous souhaitez que le message soit envoyé immédiatement ou après validation de la transaction. Reportez-vous à la documentation du système de messagerie pour obtenir une explication supplémentaire sur l'utilisation de chaque méthode.
  6. Appelez la méthode d'exécution de SendMsgCmd pour exécuter l'envoi.