Creación de un módulo de servicio de HCL Commerce

El módulo de servicio de HCL Commerce contiene todos los elementos utilizados por un servicio de HCL Commerce. Si está pensando en proporcionar nuevos servicios de HCL Commerce, debe crear un nuevo módulo de servicio y, a continuación, personalizar y ampliar adicionalmente los activos que éste crea.

Antes de empezar

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

Java Emitter Template (JET) se utiliza para generar el código base para el nuevo módulo de servicio desde un archivo XML simple. Al describir el módulo de servicio en una sintaxis XML especializada, se pueden generar los módulos de servicio. Puede empezar con la implementación del módulo de servicio sin tener que pasar horas con la preparación y configuración de un módulo de servicio.

Qué hay que hacer antes de crear un nuevo servicio:
  • Determinar si se necesita un nuevo servicio o se puede ampliar un servicio existente. Cuando sea necesaria información personalizada, dispone de tres opciones:
    • Incluir información personalizada en el área UserData de un nombre existente
    • Incluir información personalizada como una superposición de un nombre existente
    • Crear un servicio personalizado
  • Determine el nombre de servicio. Un servicio consta de un conjunto de nombres relacionados y las operaciones que se pueden realizar en dichos nombres. Por ejemplo, el servicio de catálogo consta de los nombres Catalog, CatalogGroup y CatalogEntry, y admite la recuperación, creación, actualización y supresión de estos nombres.
  • Determine los nombres de servicio. Para obtener más información, consulte Nombres.
  • Determine las operaciones (verbos) de cada nombre. Para obtener más información, consulte Verbos.
  • Determine la implementación de servicio (SOI frente a BOD). Para obtener más información sobre las diferencias entre los dos implementaciones, consulte Módulos de servicio SOI y BOD.

Procedimiento

Para crear un nuevo módulo de servicio de HCL Commerce:
  1. Inicie HCL Commerce Developer.
  2. Cree el archivo de definición de aplicación de patrón para crear el código base:
    1. Cree el archivo de entrada del módulo de servicio.
      1. Pulse el botón derecho del ratón en el proyecto WebSphereCommerceServerExtensionsLogic y seleccione Nuevo > Otros > XML > XML y pulse Siguiente.

        Creación de una captura de pantalla de MyServiceModule.xml

      2. Pulse Siguiente.
      3. Seleccione Crear archivo XML a partir de un archivo de esquema XML y pulse Siguiente.

        Selección de Crear archivo XML a partir de una captura de pantalla de archivo de esquema XML

      4. Seleccione Seleccionar archivo de espacio de trabajo, seleccione WC > xml > config > xsd > wc-component-pattern.xsd y pulse Siguiente.

      5. Pulse Finalizar.
    2. Cree el archivo XML para describir el módulo de servicio de HCL Commerce. Empiece copiando el ejemplo XML siguiente.
      
      <_pattern:commerceComponent xmlns:_pattern="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://www.ibm.com/xmlns/prod/commerce/foundation/pattern 
          ../../WC/xml/config/xsd/wc-component-patten.xsd "
          name="MyServiceModuleName" packagenameprefix="com.mycompany.commerce" company="MyCompany"
          namespace="http://www.mycompany.com/xmlns/prod/commerce/9/MyServiceModuleName" nlsprefix="myco" type="SOI/BOD">
        <_pattern:noun name="MyBusinessObject" get="true" process="true" change="true" sync="false" /> 
      </_pattern:commerceComponent> 
      

      Donde Mi empresa es el nombre de su empresa.

      Este archivo se utiliza para crear los recursos de iniciador y la configuración para un módulo de servicio. En este archivo es necesaria la información del subsistema y de la empresa. También son necesarios todos los nombres que se vayan a incluir en el subsistema y los verbos admitidos para cada nombre. Actualmente, HCL Commerce solo admite cuatro verbos y el patrón solo se encarga de esos cuatro verbos.
    3. Sustituya los valores siguientes debajo de commerceComponent por los valores adecuados de su implementación:
      name="MyServiceModule"
      El nombre de su nuevo módulo de servicio
      packagenameprefix="com.mycompany.commerce"
      Se utiliza como prefijo del código de la tienda de inicio generado.
      Nota: No incluya el nombre de componente en este prefijo.
      namespace=http://www.mycompany.com/xmlns/prod/commerce/myservicemodule
      El espacio de nombres que se asociará a su componente. Este espacio de nombres representa su organización.
      nlsprefix="miempresa"
      El prefijo de esquema XML que se va a asociar al espacio de nombres. Para evitar el conflicto con el prefijo de HCL Commerce, no utilice un subrayado (_) como primer carácter del prefijo de espacio de nombre.
      type="SOI/BOD"
      Especifique el tipo de módulo de servicio. Si especifica SOI, el patrón crea un módulo de servicio que proporciona integración orientada a servicios en los mandatos de controlador, los beans de acceso y los EJB existentes.

      Si especifica BOD, el patrón crea un módulo de servicio de arquitectura orientada a servicios que utiliza mandatos desarrollados utilizando la infraestructura de mandatos de BOD. Estos mandatos BOD actúan en objetos de datos estructurados (SDO) y utilizan el Mediador de objetos de negocio para persistir y recuperar estos SDO.

    4. Sustituya los siguientes valores bajo el nombre name="MyBusinessObject"
      Donde: MyBusinessObject es el nombre del nuevo nombre.

      Los nombres definen el nombre de cada elemento de datos en el modelo lógico, y asignan ese nombre a un tipo de datos. El tipo de datos puede ser un tipo de esquema XML primitivo como, por ejemplo, booleano, o un tipo complejo. Un tipo complejo es una construcción de elementos de datos como, por ejemplo, CurrencyType que contiene el precio (representado por un tipo doble) y la moneda (representada como una serie). Un nombre puede contener una o más partes de nombre (denominadas, a veces, elementos de nombre). Una parte de nombre es un tipo XML complejo de un nombre que puede actuar de forma independiente. Las partes de nombre representan partes de un nombre lógico. Separar un nombre en partes simplifica la codificación ya que reduce el ámbito de los mandatos y los mediadores. En lugar de manejar el nombre entero, el código se limita solo a procesar una parte del mismo. Cuando llega una solicitud, se divide en diferentes partes y se ejecuta el mandato apropiado para cada una de ellas. Por ejemplo, el nombre CatalogEntry contiene una lista de descripciones. Una descripción catalogEntry se considera como una parte de nombre y se procesa mediante ChangeCatalogEntryDescriptionCmdImpl y ChangeCatalogEntryDescriptionMediator.

      Para cada uno de los verbos, Get Request / Show Response, Process Request / Acknowledge Response, Change Request / Respond Response y Sync Request / ConfirmBOD Response, indique si desea admitir o no esta operación para su nombre.
      Ejemplo:
      get="true"
      process="true"
      change="true"
      sync = "false"
      Nota: Puede crear varios elementos <noun> en un módulo de servicio. No elija Get, Process, Change o Sync como el nombre de su nombre (están reservados para utilizarlos como verbos).
    5. Guarde el archivo.
  3. Pulse con el botón derecho del ratón MyServiceModule.xml y seleccione Ejecutar como > Ejecutar configuraciones...
  4. Seleccione Transformación JET y pulse el icono Nuevo.
  5. En la sección Transformación:
    1. Seleccione el ID siguiente: com.ibm.commerce.toolkit.internal.pattern.componentprojects
    2. Pulse Aceptar.
  6. Una vez aplicado el patrón, verifique que los proyectos siguientes se han creado:
    MyServiceModule-Client
    Contiene el código Java de la biblioteca de cliente.
    MyServiceModule-DataObjects
    Contiene el XSD, el WSDL y los SDO generados.
    MyServiceModule-Server
    Contiene la implementación de la fachada de componente.
    MyServiceModule-UnitTests
    Módulo para que la unidad pruebe la implementación de cliente.
    MyServiceModuleServicesHTTPInterface
    Módulo web que se utiliza para habilitar el módulo de servicio para servicios web a través de HTTP.
    MyServiceModuleServicesJMSInterface
    Módulo EJB que se utiliza para habilitar el módulo de servicio para servicios web a través de JMS.
    Nota:
    • Puede ignorar los mensajes de error de compilación. Los objetos Java que representan el nombre aún no existen y se generan en el paso siguiente. Además, los proyectos recién generados todavía no se han añadido a la aplicación HCL Commerce y no pueden resolver las dependencias del código HCL Commerce.
    • Se pueden ignorar los mensajes informativos en el formato siguiente:
      
      CHKJ2500I: change<<Noun>>(javax.xml.soap.SOAPElement) in method 
      javax.xml.soap.SOAPElement must be serializable at runtime (EJB 2.0: 7.10.5).
      
      Es decir, los objetos SOAPElement se pueden serializar.
    • Cada proyecto generado también contiene un prefijo, SOI o BOD, según el tipo seleccionado de la implementación. Por ejemplo, MyServiceModule-Client puede ser SOIMyServiceModule-Client o BODMyServiceModule-Client.
      • Si especifica SOI, el patrón crea un módulo de servicio que proporciona integración orientada a servicios en los mandatos de controlador, los beans de acceso y los EJB existentes.
      • Si especifica BOD, el patrón crea un módulo de servicio de arquitectura orientada a servicios que utiliza mandatos desarrollados utilizando la infraestructura de mandatos de BOD. Estos mandatos BOD actúan en objetos de datos estructurados (SDO) y utilizan el Mediador de objetos de negocio para persistir y recuperar estos SDO.
  7. Añada los módulos generados a la aplicación HCL Commerce.
  8. Pasos siguientes:
    1. Cree su archivo SDO de genmodel.
      Nota: Realice hasta el paso 3.g. No haga el paso 3.h ni el paso 3.i, estos pasos son redundantes y se realizan más adelante en la página siguiente.
    2. Genere código a partir del archivo SDO de genmodel.
      Nota: El paso 7 requiere Establecer los valores predeterminados de SDO, lo que revierte la configuración desde el paso anterior. Por lo tanto, después de completar el paso 7, Establecer valores predeterminados de SDO, vuelva a realizar el paso para asegurarse de que el genmodel EMF puede generar objetos compatibles.
    3. Cree la fachada de componente para un módulo de servicio SOI.
    4. Implementar los mandatos de servicio en la infraestructura de mandatos de BOD.
    5. Cree la biblioteca de cliente.