Personnalisation du fichier XML d'invocation du client de service Web
Lorsque HCL Commerce agit comme consommateur de services, une API de client de composant doit être appelée depuis votre instruction de tâche. L'API de client utilise le service d'invocation, qui nécessite un fichier de configuration déployé pour déterminer comment communiquer avec le composant distant. A chaque composant est associé un fichier de configuration distinct, qui sert à configurer l'API de client correspondante. Chaque magasin peut aussi avoir sa propre version du fichier de configuration, qui est prioritaire sur la configuration par défaut. Cela permet au magasin de remplacer tout ou partie de la configuration sans pour autant changer la configuration par défaut.
Pourquoi et quand exécuter cette tâche
Le fichier de configuration référencé dans cette tâche est créé dans le cadre de la personnalisation et n'est pas livré avec le produit. Les clients doivent créer le chemin d'accès et le fichier. Le nom du fichier de configuration est le suivant :
- workspace_dir/WC/xml/config/ext/.global/component id/wc-invocation-client.xml
Pour remplacer la configuration d'un magasin, vous pouvez placer une copie du fichier dans votre répertoire workspace_dir/WC/xml/config/ext/ storedir ou workspace_dir/WC/xml/config/ext/.global pour tous les magasins. Durant l'invocation, le service commence par déterminer si le magasin a une configuration définie. S'il existe, le service fusionne la configuration personnalisée dans la configuration par défaut. Si ce n'est pas le cas, le service utilise la configuration par défaut. Cela permet de remplacer la configuration d'un magasin particulier sans pour autant altérer la configuration par défaut.
Le schéma XSD du fichier de configuration se trouve dans le répertoire suivant :
- workspace_dir/WC/xml/config/xsd
Voici un exemple de fichier XML d'invocation que l'on utilise pour appeler le service CheckInventory sur SomeExternalApp, application fictive qui fournit des services de gestion des commandes tels que la gestion des stocks.
<wc:InvocationService
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:wc="http://www.ibm.com/xmlns/prod/WebSphereCommerce"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.ibm.com/xmlns/prod/WebSphereCommerce
../../../xsd/wc-invocation-client.xsd">
Comme on le voit ci-après, l'élément de liaison (bind) doit toujours être dans votre fichier d'invocation. Il doit implémenter l'interface InvocationBinding.
<wc:InvocationBinding
bindingImpl="com.ibm.commerce.foundation.services.invocation.internal.impl.JCAInvocationBindingImpl"
/>
La section Action peut servir à restreindre la portée de la configuration au niveau d'un composant ou d'une action. Elle permet aussi d'utiliser un plug-in de médiation interne qui implémente l'interface MessageInvocationMediator. Les liaisons de l'élément Action dans l'exemple ci-après spécifient un JSP à utiliser pour assurer la médiation entre l'utilisation par HCL Commerce de la structure de message OAGIS (OpenApplications Group) et le document WSDL utilisé par SomeExternalApp.
Le paramètre asynchronous détermine si le message doit être envoyé immédiatement ou seulement quand la transaction courante sera validée (en utilisant la fonction sendTransacted() des services d'envoi du sous-système de messagerie). Le paramètre scope détermine si l'action doit porter sur le composant entier ou si elle doit s'exercer message par message.
<wc:Action name="CheckInventory" asynchronous="false"
scope="component">
<wc:PreInvokeMediator
mediatorImpl="com.ibm.commerce.foundation.services.invocation.internal.impl.JSPMessageInvocationMediatorImpl">
<wc:Property name="url"
value="https://localhost:8002/webapp/wcs/admin/IBM.WC.Compose/mediation/SomeExternalApp/OagisToSomeExternalAppCheckInventory.jsp"
/>
</wc:PreInvokeMediator>
<wc:PostInvokeMediator
mediatorImpl="com.ibm.commerce.foundation.services.invocation.internal.impl.JSPMessageInvocationMediatorImpl">
<wc:Property name="url"
value="https://localhost:8002/webapp/wcs/admin/IBM.WC.Compose/mediation/SomeExternalApp/SomeExternalAppToOagisCheckInventory.jsp"
/>
</wc:PostInvokeMediator>
</wc:Action>
</wc:InvocationService>
Les éléments PreInvokeMediator et PostInvokeMediator s'appliquent aux cas où vous utilisez une intégration point-à-point. Dans une solution point-à-point où HCL Commerce et le système externe admettent le même protocole, HCL Commerce a une capacité de médiation locale des messages qui lui permet de transformer le message du style OAGIS déclaré en un message au format du système externe. Cette médiation locale utilise un JSP pour formater la demande OAGIS sortante en un message au format du système externe, et un autre JSP pour convertir la réponse du système externe en une réponse au format OAGIS attendu. Cette médiation locale est fournie si vous ne pouvez pas utiliser la capacité de transformation des messages disponible dans le middleware ESB (bus de service d'entreprise).
ESB (Enterprise service bus, ou bus de service d'entreprise) est un pattern dans lequel les systèmes peuvent communiquer au moyen de formats de message différents ; le lien entre les systèmes est assuré par l'intégrateur de systèmes. Il existe des produits tiers, tels que WebSphere ESB, qui prennent en charge cette médiation. Ces produits peuvent faire bien plus que la simple médiation des messages. Ils servent aussi à router les messages et à lier ensemble plusieurs systèmes utilisant des protocoles différents.