Añadir propiedades no sensibles al idioma a la Catalogs tool

En esta lección, personalizará la Catalogs tool para dar soporte a más información de UserData que se añade al nombre CatalogEntry. En esta guía de aprendizaje, añadirá soporte para la información de detalles de garantía de entrada de catálogo. Puede seguir el mismo procedimiento para cualquier propiedad no sensible al idioma de un nombre.

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

En esta lección, personalizará el servicio de catálogo para incluir nueva información como, por ejemplo, UserData en el nombre CatalogEntry y añadir consultas personalizadas a un archivo de plantilla de consulta personalizado. A continuación, podrá personalizar la interfaz de usuario del Management Center con la etiqueta <wcf:getData> .

Como parte de esta lección, deberá registrar el perfil de acceso personalizado en el lado del cliente para poder configurar el cliente del Management Center para que obtenga los datos de garantía. Para registrar el perfil de acceso personalizado en el lado del cliente, cree un archivo de configuración personalizado, get-data-config.xml. El archivo get-data-config.xml configura cómo el Management Center recupera los datos del servidor con la biblioteca de etiquetas base <wcf:getData>. La versión de extensión de este archivo del directorio com.ibm.commerce.catalog-ext altera temporalmente la definición original.

La acción Configuración del código GetData ejecuta la etiqueta HCL Commerce getData. Esta acción busca archivos de configuración llamados get-data-config.xml en el directorio WEB-INF/config. Los archivos de configuración deben seguir las normas siguientes:
  • El elemento raíz debe ser get-data-config.
  • Cada componente tiene un archivo de configuración, que se utiliza con la acción getData.
  • Cada archivo de configuración de componente se encuentra en el directorio LOBTools > WebContent > WEB-INF > config > component, donde component es el nombre del componente.
  • Los archivos de extensión deben estar en el directorio siguiente: LOBTools > WebContent > WEB-INF > config > > component-ext. Estos archivos se cargan después de los archivos de configuración de componente.
En el archivo get-data-config.xml, podrá especificar el generador de expresiones y la información de perfil de acceso. El perfil de acceso predeterminado es MyCompany_All. Un generador de expresiones es una clase de ayuda, o una plantilla, declarada en el archivo HCL Commerce get-data-config.xml. Lo utiliza la etiqueta getData en un archivo JSP para crear una expresión XPath que recupera los datos.

Procedimiento

  1. Actualice el archivo de plantilla de consulta wc-query-MyCompanyCatalogEntry-get.tpl para añadir datos al nombre CatalogEntry.
    Este archivo contiene la información siguiente:
    • Una sección de definiciones de símbolos en la que se definen las tablas incluidas en la plantilla de consulta. En esta guía de aprendizaje, incluirá las tablas de base de datos CATENTRY, CATENTDESC, XWARRANTY y XCAREINSTRUCTION en la sección de definiciones de símbolos.
    • Definición de una nueva sentencia SQL de asociación que busca los nuevos datos personalizados.
    • Definición de un nuevo perfil de acceso MyCompany_All, que amplía el perfil de acceso de resumen de entrada de catálogo predeterminado: IBM_Admin_Summary.
      Nota: Los prefijos IBM_Admin_ que se utilizan en el perfil de acceso IBM_Admin_Summary están pensados para que los utilicen las llamadas de servicios de administración y del Management Center. Los perfiles de acceso que no sigan los nuevos convenios de denominación continuarán funcionando correctamente, ya que se mantiene la compatibilidad con las versiones anteriores. No obstante, se recomienda seguir dichos convenios para los perfiles de acceso existentes y al realizar cambios en los perfiles de acceso futuros.
    La guía de aprendizaje de la capa de servicios de datos, que ha completado como un requisito previo antes de comenzar esta guía de aprendizaje, utiliza una plantilla de consulta sencilla para añadir datos nuevos. En esta lección, actualizará una consulta del Management Center que muestra entradas de catálogo. En función de cómo se ha definido la consulta utilizando consultas asociadas, es posible que tenga que ampliar el perfil de acceso y añadir una consulta asociada.
    1. Abra HCL Commerce Developer y vaya a la vista Explorador de empresa.
    2. Expanda WC > xml > config > com.ibm.commerce.catalog-ext.
    3. Abra el archivo wc-query-MyCompanyCatalogEntry-get.tpl para editarlo.
    4. Localice el código siguiente:
      
      BEGIN_XPATH_TO_SQL_STATEMENT
        name=/CatalogEntry[CatalogEntryIdentifier[(UniqueID=)]]+MyCompany_All
        base_table=CATENTRY
          sql=
            SELECT
              CATENTRY.$COLS:CATENTRY$,
              CATENTDESC.$COLS:CATENTDESC$,
              XWARRANTY.$COLS:XWARRANTY$,
              XCAREINSTRUCTION.$COLS:XCAREINSTRUCTION$
            FROM
              CATENTRY 
                 LEFT OUTER JOIN XWARRANTY ON (CATENTRY.CATENTRY_ID = XWARRANTY.CATENTRY_ID)
                 LEFT OUTER JOIN CATENTDESC ON 
                      (CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID AND CATENTDESC.LANGUAGE_ID in ($CONTROL:LANGUAGES$))
                 LEFT OUTER JOIN XCAREINSTRUCTION ON 
                      (CATENTRY.CATENTRY_ID = XCAREINSTRUCTION.CATENTRY_ID AND XCAREINSTRUCTION.LANGUAGE_ID = CATENTDESC.LANGUAGE_ID)
            WHERE
              CATENTRY.CATENTRY_ID IN (?UniqueID?) AND
              CATENTRY.MARKFORDELETE = 0
      END_XPATH_TO_SQL_STATEMENT
      
    5. Sustitúyalo por el código siguiente:
      
      BEGIN_ASSOCIATION_SQL_STATEMENT
        name=MyCompanyWarrantygetCatalogEntryDetailsByParentCatalogGroupId
        base_table=CATENTRY
        additional_entity_objects=true
          SQL=
            SELECT
              CATENTRY.$COLS:CATENTRY$,
              CATENTDESC.$COLS:CATENTDESC$,
              XWARRANTY.$COLS:XWARRANTY$,
              XCAREINSTRUCTION.$COLS:XCAREINSTRUCTION$
            FROM
              CATENTRY
               LEFT OUTER JOIN XWARRANTY ON (CATENTRY.CATENTRY_ID = XWARRANTY.CATENTRY_ID)
               LEFT OUTER JOIN CATENTDESC ON (CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID 
              AND CATENTDESC.LANGUAGE_ID in ($CONTROL:LANGUAGES$))
               LEFT OUTER JOIN XCAREINSTRUCTION ON (CATENTRY.CATENTRY_ID = XCAREINSTRUCTION.CATENTRY_ID 
              AND XCAREINSTRUCTION.LANGUAGE_ID in ($CONTROL:LANGUAGES$))
            WHERE
              CATENTRY.CATENTRY_ID IN ($ENTITY_PKS$) AND
              CATENTRY.MARKFORDELETE = 0
      END_ASSOCIATION_SQL_STATEMENT
      
    6. Amplíe el perfil de acceso predeterminado IBM_Admin_Summary en la definición de perfil. Añada al siguiente código al final del archivo wc-query-MyCompanyCatalogEntry-get.tpl:
      
      <!-- ========================================================================= -->
      <!-- =============================PROFILE DEFINITIONS========================= -->
      <!-- ========================================================================= -->
      
      BEGIN_PROFILE
        name=MyCompany_All
        extends = IBM_Admin_Summary
          BEGIN_ENTITY
            associated_sql_statement=MyCompanyWarrantygetCatalogEntryDetailsByParentCatalogGroupId
          END_ENTITY
      END_PROFILE
      
      Donde:
      name
      Especifique el nombre del perfil personalizado, por ejemplo MyCompany_All.
      extends
      Especifique el perfil de acceso predeterminado que va a ampliar, por ejemplo, IBM_Admin_Summary.
      associated_sql_statement
      Especifique la nueva sentencia SQL asociada para capturar sus daros personalizados, por ejemplo, MyCompanyWarrantygetCatalogEntryDetailsByParentCatalogGroupId.
      Nota: No es necesario que copie todas las consultas asociadas que se hayan definido en el perfil de acceso de detalles de entrada de catálogo predeterminado, por ejemplo, IBM_Admin_Summary. Si sigue los pasos siguientes, se le devolverán tanto los datos de entrada del catálogo existentes como los datos personalizados nuevos. Para obtener más información sobre la definición de un nuevo perfil de acceso, consulte Perfiles de acceso.
  2. Habilite el registro y el rastreo del Management Center.
    1. Abra la Consola de administración de WebSphere Application Server. Haga clic en el botón derecho del ratón en el servidor de prueba: Seleccione Administración > Ejecutar consola administrativa.
    2. Expanda Resolución de problemas y seleccione Registro y rastreo.
    3. Haga clic en el servidor.
    4. Haga clic en Cambiar los niveles de detalle del registro
    5. Habilite el rastreo com.ibm.commerce.lobtools.*=all en la pestaña Configuración o Tiempo de ejecución.
      • Los valores de configuración provocan que los mensajes del registro se visualicen después de que se reinicie el servidor. Cuando se reinicia éste, el mensaje BOD se visualiza sin habilitar el rastreo en la consola administrativa.
      • Los valores de tiempo de ejecución provocan que el mensaje de registro se visualice sin necesidad de reiniciar el servidor. Después de reiniciar el servidor, es necesario volver a habilitar el valor de rastreo, de lo contrario, el mensaje del registro no se visualizará.


    6. Haga clic en Aplicar. Guarde el cambio realizado.
  3. Determine el nombre del URL de servicio. Para buscar el nombre del URL de servicio, debe habilitar el rastreo en el Management Center.
    1. Abra Management Center con el registro habilitado.
      Utilice el URL https://host_name:8000/lobtools?logger.display=true, donde host_name es el nombre de host para el entorno de desarrollo. Para obtener más información sobre el registro en el Management Center, consulte Habilitar el registro cronológico y el rastreo del Management Center del lado del cliente.
    2. Haga clic en Management CenterHerramientas > Registro y rastreo.
    3. En el diálogo Anotación cronológica y rastreo, establezca las opciones siguientes:
      • En el campo Nivel de registro predeterminado, seleccione CONFIG.
      • Haga clic en Habilitar.
    4. Se habilita el rastreo. No cierre el diálogo Registro y rastreo.
    5. Abra la Catalogs tool en el Management Center. Vaya a un producto del catálogo, y abra la vista de propiedades del producto.
    6. Haga clic en Enviar ahora en el panel Registro y rastreo.
    7. Abra WCDE_installdir\wasprofile\logs\server_name\trace.log para ver el archivo de registro de rastreo. Localice la llamada de servicio. El URL de servicio debe ser /cmc/GetCatalogGroupChildren-CatalogEntry.
  4. Determine el archivo JSP de controlador.
    1. En vista Enterprise Explorer, expanda LOBTools > WebContent > WEB-INF.
    2. Abra el archivo spring-ibm-catalog.xml para ver el contenido del archivo.
    3. Busque la línea de código que asocie un controlador de JSP con el servicio GetCatalogGroupChildren-CatalogEntry.
      
      <bean id="/GetCatalogGroupChildren-CatalogEntry" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName" value="/jsp/commerce/catalog/restricted/GetChildCatalogEntryForCatalogGroup.jsp"/>
      </bean>
      
      El servicio está asociado al archivo JSP de controlador GetChildCatalogEntryForCatalogGroup.jsp.
  5. Determine el generador de expresiones que se utilizará para la personalización.
    1. Expanda LOBTools > WebContent > jsp > commerce > catalog > restricted
    2. Abra el archivo GetChildCatalogEntryForCatalogGroup.jsp para visualizar el contenido del archivo.
    3. Busque el código que define la configuración del código getData.
      
      <wcf:getData type="com.ibm.commerce.catalog.facade.datatypes.CatalogEntryType[]"
      	var="catalogEntryChildren"
      	expressionBuilder="getCatalogEntryDetailsByParentCatalogGroupId"
      	varShowVerb="showVerb"
      	recordSetStartNumber="${param.recordSetStartNumber}"
      	recordSetReferenceId="${param.recordSetReferenceId}"
      	maxItems="${param.maxItems}">
      	<wcf:contextData name="storeId" data="${param.storeId}"/>
      	<wcf:contextData name="catalogId" data="${param.catalogId}"/>
      	<wcf:contextData name="versionId" data="${param.objectVersionId}"/>
      	<wcf:param name="catGroupId" value="${param.parentId}"/>
      	<wcf:param name="dataLanguageIds" value="${param.defaultLanguageId}"/>
      </wcf:getData>
      
      Anote el valor del atributo expressionBuilder, getCatalogEntryDetailsByParentCatalogGroupId. Deberá declarar este generador de expresiones en el archivo personalizado get-data-config.xml.
  6. Determinar el perfil de acceso predeterminado para el generador de expresiones.
    1. Expanda LOBTools > WebContent > WEB-INF > config > com.ibm.commerce.catalog.
    2. Abra el archivo get-data-config.xml para ver el contenido del archivo.
    3. Busque la configuración getCatalogEntryDetailsByParentCatalogGroupId del generador de expresiones, y anote el valor para el parámetro accessProfile.
      
      <expression-builder>
        <name>getCatalogEntryDetailsByParentCatalogGroupId</name>
        <data-type-name>CatalogEntry</data-type-name>
        <expression-template>
         {_wcf.ap=$accessProfile$;_wcf.dataLanguageIds='$dataLanguageIds$'}/CatalogEntry[ParentCatalogGroupIdentifier[(UniqueID='$catGroupId$')]]
        </expression-template>
        <param>
          <name>accessProfile</name>
          <value>IBM_Admin_Summary</value>
        </param>
        <param>
          <name>dataLanguageIds</name>
          <value></value>
        </param>
      </expression-builder>

      El perfil de acceso predeterminado es IBM_Admin_Summary. Puede alterar temporalmente el generador de expresiones personalizado en el archivo get-data-config.xml, cambiando el valor del perfil de acceso.

  7. Altere temporalmente el generador de expresiones dentro de su archivo get-data-config.xml personalizado.
    Puede utilizar su archivo de configuración personalizado para recuperar información de garantía adicional del nombre CatalogEntry. El archivo personalizado debe alterar temporalmente el archivo de configuración de componente base.
    1. Expanda LOBTools > WebContent > WEB-INF > config.
    2. Haga clic en el botón derecho del ratón en el directorio config y seleccione Nuevo > Carpeta.
    3. En el campo Nombre de carpeta, escriba com.ibm.commerce.catalog-ext.
    4. Haga clic en Finalizar. Se crea el directorio com.ibm.commerce.catalog-ext debajo del directorio config.
    5. Haga clic con el botón derecho en del ratón en la carpeta com.ibm.commerce.catalog-ext. A continuación, Haga clic en Nuevo > Archivo.
    6. En el campo Nombre de archivo, escriba get-data-config.xml.
    7. Haga clic en Finalizar. Se abre el archivo get-data-config.xml.
    8. Copie el siguiente código en el archivo.
      <?xml version="1.0" encoding="UTF-8"?>
      <_config:get-data-config 
      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/get-data-config.xsd ">
        <expression-builder>
          <name>getCatalogEntryDetailsByParentCatalogGroupId</name>
          <data-type-name>CatalogEntry</data-type-name>
          <param>
            <name>accessProfile</name>
            <value>MyCompany_All</value>
          </param>
        </expression-builder>
      </_config:get-data-config> 
      Nota: En este código no se incluye la plantilla de expresión. Este generador de expresiones utiliza el perfil de acceso que haya definido el usuario y la plantilla de expresión de la definición proporcionada por IBM. Este comportamiento se debe a que ha ampliado el generador de expresiones y el nombre, getCatalogEntryDetailsByParentCatalogGroupId sigue siendo el mismo.
    9. Opcional: También puede declarar el generador de expresiones findAllCatentriesBasicSearch. findAllCatentriesBasicSearch garantiza que los nuevos datos personalizados se visualicen en los detalles del producto que se devuelven de las búsquedas de comprador del escaparate. Para utilizar este generador de expresiones, añada el código para el mismo después del código del generador de expresiones getCatalogEntryDetailsByParentCatalogGroupId en el archivo get-data-config.xml.
      
      <expression-builder>
        <name>findAllCatentriesBasicSearch</name>
        <data-type-name>CatalogEntry</data-type-name>
        <param>
          <name>accessProfile</name>
          <value>MyCompany_All</value>
        </param>
      </expression-builder>

Resultados

Hasta ahora, ha registrado el perfil de acceso personalizado en el lado del cliente, de modo que lado del cliente pueda comunicarse con el lado del servidor. En la lección siguiente, comenzará a personalizar la interfaz de usuario del lado del cliente.