HCL Commerce Developer

Configurar el Mediador de objetos de negocio

Puede utilizar los datos de configuración XML para configurar el Mediador de objetos de negocio. Estos datos XML también pueden generarse utilizando el asistente de Capa de servicios de datos.

Antes de empezar

Los metadatos relacionales de objeto y las clases Java de SDO físicas para la personalización del esquema se generan utilizando el asistente de Capa de servicios de datos, siguiendo los pasos de Creación de metadatos y objetos de datos para reflejar los cambios de esquema de capa de servicios de datos.

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

El esquema (tanto lógico como físico) se puede ampliar para añadir una tabla de extensiones, que tenga una relación de uno a uno o uno a varios con una tabla de HCL Commerce existente. Estos datos se representan como parejas nombre-valor en el modelo lógico, y se asocian a un objeto existente en el modelo, en el área UserData. En el modelo físico, estos datos se representan como una nueva tabla que tiene una clave foránea en la tabla base.

Para permitir actualizaciones, un cliente define una nueva consulta para recuperar datos tanto de la tabla predeterminada como de la personalizada. wc-business-object-mediator.xml necesita actualizar el archivo para que pueda proporcionar al mediador de cambio adecuado el nuevo perfil de acceso personalizado.

Nota: Cada mediador de cambio de parte se fija en una parte de nombre específica, y uno o más objetos físicos. Un mediador de parte de cambio debe implementar el método getNounPartXPaths para devolver una matriz de XPath que el mediador de parte de cambio maneja. Dado que el valor de XPath no se puede cambiar a menos que, a su vez, también se cambie el mediador subyacente, el valor de XPath se define en el código Java.

Un ejemplo de definición del valor de XPath es el siguiente:

Para una acción de cambio <oa:ActionExpression actionCode="Change" expressionLanguage="_wcf:XPath">/Project[1]/Material[1]oa:ActionExpression actionCode="Change" expressionLanguage="_wcf:XPath">/Project[1]/Material[1]>, añada la línea <_config:part-mediator-implementation className="com.mycompany.commerce.project.facade.server.services.dataaccess.bom.mediator.ChangeProjectMaterialMediator" /> al archivo wc-business-object-mediator.xml. A continuación, defina la XPath private static final String[] XPATH = new String[] { "/Material[]" } ; en el archivo ChangeProjectMaterialMediator.java . Tenga en cuenta que private static final String[] XPATH = new String[] { "/" } ; está presente en el archivo ChangeProjectBasePartMediator.java.

La configuración wc-business-object-mediator.xml realiza las siguientes funciones:
  • Enlaza el nombre lógico (por ejemplo CatalogEntryType) al tipo físico personalizado (por ejemplo, MyCompanyCatalogCatalogEntry).Estas correlaciones se crean para facilitar el flujo de datos personalizados que se almacenan en la base de datos al cliente del servicio. Las propiedades lógicas se exponen como parejas nombre-valor en el elemento UserData de los objetos de negocio.
  • Indica al mediador de objetos de negocio que utilice los métodos adecuados en la clase Java de SDO físico (por ejemplo MyCompanyCatalogCatalogEntry) para añadir información al elemento de datos de usuario en el modelo lógico (CatalogEntryType).
  • Este archivo también configura los mediadores Read y Change para los objetos de negocio y las partes de objeto de negocio.

Si está ampliando un nombre de HCL Commerce, utilice este archivo para cambiar la correlación entre la clase que se utiliza para almacenar el objeto lógico y la clase que almacene el objeto físico. En concreto, puede cambiar la clase física para que sea una clase física personalizada. Ésta es la clase que contiene todos los métodos para poder acceder a los nuevos datos. A continuación, la infraestructura de DSL utilizará su clase de objeto físico en lugar de la clase de HCL Commerce predeterminada.

Puede utilizar el asistente de Capa de servicios de datos para generar este archivo y las correlaciones adecuadas, o proporcionarlas manualmente.

Procedimiento

  1. Pulse el botón derecho del ratón en la carpeta WC\config\com.ibm.commerce.myservicemodule-ext.
  2. Si wc-business-object-mediator.xml no existe en ese directorio, seleccione Nuevo > Otros > XML > XML > Siguiente.
    1. Seleccione Crear un archivo XML desde cero.
    2. Haga clic en Siguiente.
    3. Llame al archivo: wc-business-object-mediator.xml.
    4. Pulse Finalizar.
    Nota: El asistente de Capa de servicios de datos genera este archivo cuando se personaliza un módulo de servicio de WebSphere Commerce que ya existe.
  3. Si wc-business-object-mediator.xml no existe, abra el archivo para editarlo a fin de configurar el mediador de objetos de negocio.
  4. Utilice este archivo para correlacionar el valor logicalType con el valor physicalType, y todos valores physicalPropertyName con el valor logicalName correcto. Este archivo se crea y llena cuando se ejecuta el asistente de Capa de servicios de datos, por lo que raramente necesitará cambiar este archivo.

    El ejemplo siguiente correlaciona el SDO físico MyCompanyCatalogCatalogEntry con el nombre CatalogEntryType, y crea las relaciones para WARRANTY y WARDESC:

    <_config:BusinessObjectMediatorConfiguration xmlns:_config="http://www.ibm.com/xmlns/prod/commerce/foundation/config" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/config ../xsd/wc-business-object-mediator.xsd">
      <_config:object 	logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" 
    									physicalType="com.ibm.commerce.catalog.facade.server.entity.datatypes.CatalogEntry">
        <_config:property-mapping logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogDescriptionType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntryDescription">
          <_config:child-property-mapping relationshipName="XcareinstructionForCatentdesc">
            <_config:userDataProperty logicalPropertyName="careinstruction" physicalPropertyName="careinstruction"/>
          </_config:child-property-mapping>
        </_config:property-mapping>
      </_config:object>
      <_config:object logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntry">
        <_config:property-mapping logicalType="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType" physicalType="com.mycompany.commerce.catalog.facade.server.entity.datatypes.MyCompanyCatalogEntry">
          <_config:child-property-mapping relationshipName="XwarrantyForCatentry">
            <_config:userDataProperty logicalPropertyName="warterm" physicalPropertyName="warterm"/>
            <_config:userDataProperty logicalPropertyName="wartype" physicalPropertyName="wartype"/>               
          </_config:child-property-mapping>
        </_config:property-mapping>
      </_config:object>
    </_config:BusinessObjectMediatorConfiguration>
    En el ejemplo XML siguiente se configura la capa de servicios de datos para:
    • Enlace el logicalType com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType con el physicalType com.ibm.commerce.catalog.facade.server.entity.datatypes.CatalogEntry
    • Enlace el atributo lógico warterm con la propiedad física warterm.
    • Enlace el atributo lógico wartype con la propiedad física wartype.
    • Enlace el atributo lógico careinstruction con la propiedad física careinstruction.
    • Asigne la propiedad física warterm en una pareja nombre-valor en el elemento UserData del BOD.
    • Asigne la propiedad física wartype en una pareja nombre-valor en el elemento UserData del BOD.
    • Crear un método que se denomine getXwarrantyForCatentry() en el SDO físico MyCompanyCatalogEntry, que devuelve el SDO físico Xwarranty. Este SDO Xwarranty tiene métodos para recuperar los valores warterm y wartype.
    Nota: Para utilizar el soporte de UserData automático que se ilustra en esta tarea, la relación entre la tabla base y la tabla de extensiones, cada registro de la tabla base se puede correlacionar con un registro de la tabla de extensiones (una relaciónN to 1, donde N es mayor que 1).