Personalización del archivo XMÑ de invocación de cliente de servicio web

Cuando HCL Commerce actúa como consumidor de servicio, se llamará a una API de cliente de componente desde el mandato de tarea. La API de cliente utiliza el servicio de invocación y el servicio de invocación requerirá un archivo de configuración desplegado para determinar cómo comunicarse con el componente remoto. Cada componente tiene un archivo de configuración separado para configurar la API de cliente. Cada tienda también puede tener una versión del archivo de configuración que tendrá prioridad sobre la configuración por omisión. Esto permite a la tienda alterar temporalmente parte de la configuración o toda la configuración sin cambiar la configuración por omisión.

Por qué y cuándo se efectúa esta tarea

El archivo de configuración al que se hace referencia en esta tarea se crea como parte de la personalización y no se suministra con el producto. Los clientes deben crear la vía de acceso y el archivo. El nombre del archivo de configuración es:

  • workspace_dir/WC/xml/config/ext/.global/component id/wc-invocation-client.xml

Para alterar temporalmente la configuración de una tienda, se puede colocar una copia del archivo en workspace_dir/WC/xml/config/ext/ storedir o workspace_dir/WC/xml/config/ext/.global para todas las tiendas. Durante la invocación, el servicio primero determina si la tienda tiene una configuración definida. Si existe, el servicio fusiona la configuración personalizada en la configuración predeterminada. Si no, el servicio utiliza la configuración predeterminada. Esto permite que la alteración temporal de la tienda sin cambiar la configuración por omisión.

El XSD del archivo de configuración se encuentra en el directorio siguiente:

  • workspace_dir/WC/xml/config/xsd

Este es un archivo XML de invocación de ejemplo para llamar al servicio CheckInventory en SomeExternalApp, una aplicación ficticia que proporciona servicios de gestión como la comprobación de inventario.


<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">

El elemento de enlace, como se muestra a continuación, siempre debe estar en el archivo de invocación. La implementación debe implementar la interfaz InvocationBinding.



        <wc:InvocationBinding
               
bindingImpl="com.ibm.commerce.foundation.services.invocation.internal.impl.JCAInvocationBindingImpl"
/>

La sección de acción se puede utilizar para delimitar la configuración en un nivel de acción o componente. También permite utilizar un plug-in de mediación internaque implementa la interfaz de MessageInvocationMediator. Los enlaces de elementos de acción de ejemplo siguientes especifican una JSP que se debe utilizar para mediar entre el HCL Commerce uso de la estructura de mensajes de OpenApplications Group (OAGIS) y el WSDL utilizado por SomeExternalApp.

El parámetro asynchronous determina si el mensaje se debe enviar inmediatamente o cuando se comprometa la transacción actual (utilizando la función sendTransacted() de los servicios de envío del subsistema de mensajería). El parámetro scope determina si se debe delimitar la acción para todo el componente o por mensaje.


        <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>

PreInvokeMediator y PostInvokeMediator sirven para los casos en los que se utiliza la integración de punto a punto. En el caso de una solución de punto a punto donde HCL Commerce y el sistema externo soportan al mismo protocolo, HCL Commerce tiene una capacidad de mediación de mensaje local para transformar el mensaje de estilo OAGIS declarado al formato de mensaje del sistema externo. Esta mediación local utiliza una JSP para dar formato a la petición OAGIS de salida en el formato de mensaje del sistema externo y otra JSP para convertir la respuesta del sistema externo en la respuesta OAGIS esperada. Esta mediación local se proporciona si no puede utilizar la función de transformación de mensajes que puede encontrar en el middleware de ESB.

ESB (Enterprise Service Bus) es un patrón donde los sistemas se pueden comunicar utilizando distintos formatos de mensajes y dependerá del integrador de sistemas enlazar los distintos sistemas. Existen productos de middleware de terceros, como WebSphere ESB, que realizan esta mediación. Estos productos pueden realizar más acciones que una simple mediación de mensajes. También se utilizan para el direccionamiento de mensajes y el enlace de varios sistemas que utilizan distintos protocolos.