Création d'un message XML entrant
Vous pouvez ajouter d'autres messages à la prise en charge existante des messages entrants XML et HCL Commerce.
Il existe deux méthodes principales pour ajouter de nouveaux messages entrants.
La méthode recommandée consiste à ajouter un nouveau message XML entrant à l'aide du fichier de définition de modèle de message entrant user_template.xml. Dans ce fichier, vous pouvez indiquer la commande du contrôleur que le nouveau message entrant appelle, définir les éléments du message et indiquer les paramètres de commande auxquels chaque élément correspond. Lorsque le message est reçu, le mappeur de messages XML identifie la commande à exécuter et les paramètres à utiliser. La commande est ensuite appelée à l'aide de l'autorité Administrateur de site. Pour des raisons de sécurité, vous devez vous assurer que seules les personnes autorisées peuvent accéder au fichier de définition de modèle de message user_template.xml, pour éviter que des utilisateurs non autorisés aient la possibilité d'écrire un nouveau message entrant et d'appeler n'importe quelle commande HCL Commerce en tant qu'administrateur de site.
Si vous ne souhaitez pas utiliser les fichiers de définition de modèle de message XML entrants avec le mappeur de messages XML, vous pouvez également implémenter la commande NewInboundMessage pour ajouter de nouveaux messages. Cette commande est appelée lorsque le mappeur de messages ne reconnaît pas le message comme un message hérité existant ou comme un message XML défini dans les fichiers de définition de modèle de message XML entrants. Comme la commande NewInboundMessage n'est pas préprogrammée, vous avez le plein contrôle sur le traitement qui a lieu une fois qu'elle est appelée. Toutefois, cette méthode nécessite un effort de programmation considérable, en particulier lorsqu'il y a un grand nombre de nouveaux messages.
HCL Commerce vous permet de modifier ou d'étendre la fonctionnalité de tous les messages entrants en modifiant la commande de contrôleur HCL Commerce qui est gérée par chaque message. Vous pouvez fournir des instructions supplémentaires de prétraitement ou de post-traitement à toute commande de message entrant utilisée, ou vous pouvez remplacer entièrement le traitement existant. Pour ce faire, vous devez avoir une connaissance de la programmation Java.
- doPreProcess()
- doProcess()
- doPostProcess()
Lorsque vous installez pour la première fois HCL Commerce, seule la méthode doProcess() contient des instructions de programmation. Vous pouvez ajouter des instructions de prétraitement en prolongeant la commande et en implémentant la méthode doPreProcess(), ou vous pouvez ajouter des instructions de post-traitement en implémentant la méthode doPostProcess(). Vous pouvez également implémenter la méthode doProcess() ou performExecute() pour remplacer l'ensemble du processus.
Effectuez les étapes suivantes pour ajouter la prise en charge d'un nouveau message entrant :
- Définissez un DTD pour le nouveau message XML et enregistrez-le dans le répertoire suivant :
workspace_dir/WC/xml/messaging
Vous pouvez utiliser les fichiers DTD pour les messages XML existants comme guide. Ces fichiers sont situés dans le répertoire de configuration XML.
Par exemple,
<!ELEMENT Update_First_Element (DataArea)> <!ATTLIST Update_First_Element version CDATA #FIXED "1.0"> <!ELEMENT DataArea (ABC)> <!ELEMENT ABC (#PCDATA)> - Ajoutez un nouveau fichier DTD au système, en effectuant l'une des opérations suivantes :
- Placez le fichier DTD que vous avez créé pour le nouveau message dans le même répertoire que vos autres fichiers DTD de messagerie. Ces fichiers sont stockés dans les répertoires suivants :
workspace_dir/WC/xml/messaging
Ajoutez le nom des fichiers DTD de message entrant sous la balise Messaging/EcInboundMessageDtdFiles trouvée dans le HCL Commerce fichier de configuration.
- Placez le fichier DTD que vous avez créé pour le nouveau message dans le même répertoire que vos autres fichiers DTD de messagerie. Ces fichiers sont stockés dans les répertoires suivants :
- Créez une nouvelle commande de contrôleur ou personnalisez une instruction de tâche existante pour traiter un message avec un ID ou un nom de message particulier. Par exemple,
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE Update_First_Element SYSTEM 'Update_New_Message.dtd'> <Update_First_Element version='1.0'> <DataArea> <ABC>123456</ABC> </DataArea> </Update_First_Element> - Mettez à jour le fichier de définition du modèle de message entrant user_template.xml pour le nouveau message. Par exemple,
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE ECTemplate SYSTEM 'ec_template.dtd' > <ECTemplate> <TemplateDocument> <DocumentType version='1.0'>Update_First_Element</DocumentType> <StartElement>Update_First_Element</StartElement> <TemplateTagName>NewMessageMap</TemplateTagName> <CommandMapping> <Command CommandName='NewCommand' /> </CommandMapping> </TemplateDocument> <TemplateTag name='NewMessageMap'> <Tag XPath='DataArea/ABC' Field='ABC_id' /> </TemplateTag> </ECTemplate>