Correlacionadores de mensajes

Un correlacionador de mensajes es un mecanismo que toma un mensaje XML y lo convierte en un objeto CommandProperty. Proporciona una interfaz común para que los mensajes puedan convertirse a objetos CommandProperty y que los utilicen todos los componentes de HCL Commerce.

El objeto CommandProperty es un representante de un mandato de controlador. El objeto contiene el nombre de mandato que se debe ejecutar, las propiedades de mandato al ejecutar el mandato y los parámetros del mandato. La finalidad de los correlacionadores de mensajes es convertir los mensajes de petición de entrada en mandatos de controlador para que los ejecute un adaptador. Aunque pueden utilizarlos todos los componentes de HCL Commerce para correlacionar datos en un objeto TypedProperty ampliado, la finalidad principal de los correlacionadores de mensajes es convertir objetos XML en objetos Java comunes que representan mandatos de controlador.

El tipo de datos CommandProperty se compone de las tres partes siguientes:

commandName
Nombre del mandato que se debe ejecutar, en formato de serie.
propiedadesPetición
Propiedades del mandato al ejecutar el mandato, con el formato de un objeto TypedProperty.
executionProperties
Datos de control para ejecutar el mandato con el formato de un objeto TypedProperty.

Los adaptadores soportados, como por ejemplo el adaptador de programa, y los componentes de HCL Commerce pueden llamar a un correlacionador de mensajes. Para ambos, el correlacionador de mensajes realiza las tareas siguientes:

  • Recibe un mensaje XML.
  • Convierte el mensaje en un objeto CommandProperty.
  • Devuelve nulo si el mensaje XML no se puede convertir.

Los mensajes de entrada se envían a HCL Commerce por los sistemas de fondo o sistemas externos para solicitar alguna clase de acción. Con el fin de que HCL Commerce realice esa acción, el mensaje XML debe procesarlo el correlacionador de mensajes para determinar qué acción se ha solicitado. HCL Commerce incluye dos correlacionadores de mensajes durante la instalación: el correlacionador de mensajes XML para analizar mensajes de integración XML y el correlacionador de mensajes heredados para analizar mensajes heredados de integración de programa de fondo.

El objeto CommandProperty representa un mandato de HCL Commerce para adaptarse a los requisitos de los adaptadores de dispositivos soportados. Otros componentes también pueden utilizar el mecanismo de correlacionador de mensajes para convertir mensajes en objetos CommandProperty.

El ciclo de vida de un correlacionador de mensajes existe en toda la instancias de HCL Commerce. Se inicializa cuando se inicia una instancia y reside tanto tiempo como dure la ejecución de la instancia.HCL Commerce proporciona tres correlacionadores de mensajes: correlacionador de mensajes XML, correlacionador de mensajes XML para mensajes SOAP y correlacionador de mensajes legacy.

El archivo de configuración de HCL Commerce lista todos los correlacionadores de mensajes posibles e incluye su nombre, clase, formato de dispositivo, si están disponibles y parámetros de configuración específicos. Para localizar los parámetros para un determinado correlacionador de mensajes, busque el nombre del componente en MessageMapperGroup. Puesto que cada correlacionador de mensajes puede tener distintos atributos de configuración, cada uno tiene un elemento MessageMapperGroup aparte. El único requisito para el formato del elemento de parámetros de configuración es que los atributos deben ser parejas de nombre-valor. Esto permite que los parámetros de configuración del correlacionador de mensajes puedan convertirse fácilmente en un objeto TypeProperty.

A continuación se listan los parámetros para cada correlacionador de mensajes individual:

name
El nombre del correlacionador de mensajes. Este nombre lo utilizará el mandato que está esperando analizar un mensaje sólo con este correlacionador de mensajes. Para utilizar el correlacionador de mensajes con HTTP o IBM MQ establezca el atributo enable del correlacionador en true. También debe añadir el nombre del correlacionador a la sección de adaptador correspondiente.
<HttpAdapters display="false"> <HttpAdapter deviceFormatTypeId="-10000" enabled="false" deviceFormatType="XmlHttp" deviceFormatId="-10000" name="XML/HTTP" factoryClassname="com.ibm.commerce.programadapter.HttpProgramAdapterImpl"> <ProgramAdapter> <SessionContext class="com.ibm.commerce.messaging.programadapter.security.CredentialsSpecifiedProgramAdapterSessionContextImpl"> <SessionContextConfig /> </SessionContext> <Configuration supportedMessageMappers="WCS.SOAPINTEGRATION, WCS.INTEGRATION" supportedMethods="POST, M-POST" supportedContentTypes="text/xml, text/xml; charset=UTF-8, text/xml-SOAP, text/xml; charset=utf-8" supportedCharacterEncoding="ISO8859-1, UTF-8, utf-8" /> </ProgramAdapter> </HttpAdapter> </HttpAdapters>
Clase
El nombre de la clase que contiene la implementación de la interfaz del correlacionador de mensajes.
messageMapperId
El ID para el correlacionador de mensajes. Cada ID de correlacionador de mensajes debe ser exclusivo.
enable
Indica si el correlacionador de mensajes debe o no utilizarse e inicializarse. Si este valor se establece en true, el correlacionador de mensajes se inicializa durante el arranque de la instancia y está disponible. Si este valor se establece en false, el correlacionador de mensajes se inhabilita.
EcInboundMessageDtdFiles
La lista de archivos DTD que se utilizan para analizar un mensaje XML de entrada.
EcInboundMessageDtdPath
La ubicación donde se encuentran los archivos DTD listados en el parámetro EcInboundMessageDtdFiles.
EcSystemTemplateFile
El archivo de plantilla de sistema que se entrega con HCL Commerce. Normalmente se establece en "" si se trata de un correlacionador de mensajes personalizado.
EcTemplatePath
La ubicación donde se encuentra el archivo de plantilla del sistema.
isValidating
El analizador XML que se entrega con HCL Commerce tiene una característica para validar un mensaje XML de entrada con su DTD correspondiente o no. Esta característica está habilitada (establecida en true) de forma predeterminada. Para inhabilitarla, configúrela en false.
HCL Commerce Version 9.1.12.0 or laterNote: Para HCL Commerce 9.1.12.0, el parámetro isValidating del correlacionador WCS.INTEGRATION está establecido en true de forma predeterminada. ParserFeatureList también se actualiza. Esta configuración impide que el analizador de XML analice entidades generales externas y entidades de parámetros externos.
EcTemplatePath
La ubicación donde se encuentra el archivo de plantilla de mensajes definido por el usuario.
EcUserTemplateFile
El nombre de archivo del archivo de plantilla de mensajes definido por el usuario.
EcSaxParserClass
Se utilizará el nombre de la clase del analizador. Por omisión, se utilizará org.apache.xerces.parsers.SAXParser.
DebugMode
La opción de depuración para messagemapper. De forma predeterminada, se establece en false. Cuando el valor se establece en true, todos los archivos de definición de plantilla de mensaje (por ejemplo, user_template.xml, sys_template.xml) y los archivos DTD se volverán a cargar cuando un mensaje de entrada es recibido por la escucha de IBM MQ.
EmptyElementClearsData
El distintivo que especifica cómo deben manejarse los elementos vacíos de los mensajes XML de entrada. De forma predeterminada se establece en false. Cuanto está establecido en false, los elementos vacíos de mensajes XML de entrada se descartarán y no se pasarán al mandato de destino. Cuanto está establecido en true, todos los elementos vacíos de mensajes XML de entrada se considerarán como series vacías de paso hacia el mandato de destino.
DuplicateCreatesArray
El distintivo que especifica cómo deben manejarse los elementos duplicados con las mimas entradas XPath que se han encontrado en el XML de entrada. De forma predeterminada se establece en false. Cuando está establecido en false, los elementos que se han encontrado en el XML de entrada sobrescribirán el valor anterior. Cuanto está establecido en true, los elementos duplicados que se han encontrado en el XML de entrada se convertirán en matrices de valores bajo la clave utilizada por las propiedades de la solicitud.
ParserFeatureList
Especifique la característica de analizador. Por ejemplo, ParserFeatureList="http://apache.org/xml/features/nonvalidating/load-external-dtd=false". Si desea más información, consulte Apache Xerces2. Para especificar varias características, utilice una lista separada por comas. De forma predeterminada, el valor del atributo isValidating en el correlacionador de mensajes es "true". Si el atributo isValidating es "false" y el valor de ParserFeatureList es http://apache.org/xml/features/nonvalidating/load-external-dtd=false,http://xml.org/sax/features/validation=true, el valor de ParserFeatureList anulará el valor del atributo isValidating.
HCL Commerce Version 9.1.12.0Note: Para HCL Commerce 9.1.12.0 y 9.1.13.0, el correlacionador WCS.INTEGRATION ParserFeatureList se establece en "http://apache.org/xml/features/nonvalidating/load-external-dtd=false,http://xml.org/sax/features/external-general-entities=false,http://xml.org/sax/features/external-parameter-entities=false". El parámetro isValidating también se actualiza. Esta configuración impide que el analizador de XML analice entidades generales externas y entidades de parámetros externos.
HCL Commerce Version 9.1.14.0 or later

Mejora del analizador XML

La seguridad del procesamiento XML en servicios web entrantes que utilizan el adaptador de programa y el correlacionador de mensajes WCS.INTEGRATION se ha reforzado.

La configuración del correlacionados de mensajes en wc-server.xml es la siguiente:
<configuration isValidating="true" ParserFeatureList="" isSanitizationEnabled="true" WhiteListSchemes="http,https,ftp,sftp" WhiteListDomains="xml.cxml.org" isLocalEntityEnabled="true"/>

La nueva característica ofrece una forma más flexible de evitar que los usuarios accedan a recursos remotos alojados en sitios que no son de confianza. El analizador validará y solo permitirá solicitudes que cumplan con las propiedades WhiteListSchemes y WhiteListDomains. Si desea inhabilitar esta característica, puede desactivarla simplemente estableciendo isSanitizationEnabled en false.

A continuación se enumeran las cuatro configuraciones recién añadidas:
isSanitizationEnabled
El distintivo que especifica si se debe realizar la desinfección de la carga útil de la solicitud entrante. Cuando esté habilitado, se activará el nuevo mecanismo de validación, que valida la solicitud y solo permite la que se ajuste a las propiedades WhiteListSchemes y WhiteListDomains.
WhiteListSchemes
Los esquemas permitidos. Se permiten los siguientes esquemas: http, https, ftp y sftp. Estos valores se establecen en wc-server y se pueden actualizar en consecuencia.
WhiteListDomains
La lista de dominios permitidos separados por comas, xml.cxml.org es el único dominio permitido. Estos valores se establecen en wc-server y se pueden actualizar en consecuencia.
isLocalEntityEnabled
El distintivo se utiliza durante la resolución de la entidad. Cuando está habilitado, el analizador intentará encontrar y resolver la entidad localmente antes de intentar resolver el Identificador universal de recursos (URI).

Correlacionador de mensajes XML

El correlacionador de mensajes XML es responsable de convertir los datos XML de los mensajes XML de entrada en objetos CommandProperty. Es una extensión del analizador ECSAX. El correlacionador de mensajes XML que se encuentra en el archivo de configuración de HCL Commerce debe ser parecido a lo siguiente:

<MessageMapper messageMapperId="-1" classname="com.ibm.commerce.messaging.programadapter.messagemapper.ecsax.ECSAXMessageMapper" enable="true" name="WCS.INTEGRATION"> <configuration/> </MessageMapper>

Cuando el correlacionador de mensajes XML analiza un mensaje XML de entrada, obtiene el tipo de documento, la versión, si está disponible, y el nombre de elemento, de uno en uno, de los documentos XML del mensaje. El correlacionador de mensajes busca el documento de plantilla definido en el elemento ECTemplate del archivo de definición de plantillas. El documento de plantilla indica al correlacionador de mensajes la información siguiente:

  • Desde qué elemento se debe iniciar la correlación de códigos.
  • Qué plantilla de códigos se debe utilizar.
  • El nombre de mandato que ha de invocar el mensaje de entrada. El mandato puede ser un mandato de controlador de HCL Commerce existente o uno nuevo que haya creado.

Una vez iniciada la correlación de códigos, el correlacionador de mensajes busca en TemplateTag, como se ha definido en el archivo ECTemplate, para determinar el nombre de campo y el tipo basándose en la XPath generada por el mensaje XML de entrada, y a continuación establece un valor para dicho campo. Las parejas de campo y valor se almacenan en la tabla de totales de control TypedProperty de commandProperty o messageProperty, en base al valor del atributo FieldInfo de dicho campo. Una vez analizado correctamente el mensaje de entrada, se devuelve un objeto PropertyCommand, que contiene el nombre de mandato y también los objetos commandProperty y messageProperty.

Para dar soporte a distintas versiones para un mensaje, pueden especificarse varios documentos de plantilla. Por ejemplo,

<TemplateDocument> <DocumentType version='1.0'>Update_NC_ProductInventory</DocumentType> <StartElement>Update_NC_ProductInventory</StartElement> <TemplateTagName>ProductInventory10Map</TemplateTagName> <CommandMapping> <Command CommandName='ProductInventoryUpdate' /> </CommandMapping> </TemplateDocument> <TemplateDocument> <DocumentType version='2.0'>Update_WCS_ProductInventory</DocumentType> <StartElement>Update_WCS_ProductInventory</StartElement> <TemplateTagName>ProductInventory20Map</TemplateTagName> <CommandMapping> <Command CommandName='ProductInventoryUpdate' /> </CommandMapping> </TemplateDocument>

Si el elemento de configuración está vacío, se utilizará el elemento de mensajería. La mensajería se encuentra dentro del archivo de configuración de HCL Commerce.

Correlacionador de mensajes XML para los mensajes SOAP

El correlacionador de mensajes XML para los mensajes SOAP es responsable de extraer los datos XML de los mensajes SOAP de entrada y de convertirlos en objetos CommandProperty. Es una extensión del analizador ECSAX. El correlacionador de mensajes que se encuentra en el archivo de configuración de HCL Commerce debe ser parecido a lo siguiente:

<MessageMapper classname="com.ibm.commerce.messaging.programadapter.messagemapper.ecsax.ECSAXMessageMapper" enable="false" messageMapperId="-3" name="WCS.SOAPINTEGRATION"> <configuration EcInboundMessageDtdFiles="" EcInboundMessageDtdPath="messaging" EcSystemTemplateFile="webservice_template.xml" EcTemplatePath="messaging" isValidating="false" DebugMode="FALSE" EmptyElementClearsData="FALSE" /> </MessageMapper>

Correlacionador de mensajes heredados

El correlacionador de mensajes heredados es responsable de convertir los datos de los mensajes heredados de entrada en objetos CommandProperty. El correlacionador de mensajes que se encuentra en el archivo de configuración de HCL Commerce debe ser parecido a lo siguiente:

<MessageMapper messageMapperId="-2" classname="com.ibm.commerce.messaging.programadapter.messagemapper.nclegacy.NetCMessageMapper" enable="true"> name="NC.LEGACY"> <configuration/> </MessageMapper>