Ajout de propriétés dépendantes de la langue dans l' Catalogs tool

Dans cette leçon, vous personnalisez l'Catalogs tool pour prendre en charge les données UserData supplémentaires qui sont ajoutées au nom CatalogEntry. Dans ce tutoriel, vous ajoutez la prise en charge des informations sur les détails de la garantie d'entrée de catalogue. Vous pouvez suivre la même procédure pour toutes les propriétés d'un nom indépendantes de la langue.

Pourquoi et quand exécuter cette tâche

Dans cette leçon, vous personnalisez le service de catalogue pour inclure de nouvelles informations en tant que UserData dans le nom CatalogEntry et ajoutez des requêtes personnalisées à un fichier de modèle de requête personnalisé. Ensuite, vous personnalisez l'interface utilisateur Management Center avec la balise <wcf:getData> .

Dans le cadre de cette leçon, vous devez enregistrer le profil d'accès personnalisé côté client pour configurer le client Management Center afin d'obtenir les données de garantie. Pour enregistrer le profil d'accès personnalisé du côté client, créez un fichier de configuration personnalisé, get-data-config.xml. Le fichier get-data-config.xml configure la façon dont Management Center récupère les données depuis le serveur avec la bibliothèque de balises constitutive <wcf:getData>. La version d'extension de ce fichier dans le répertoire com.ibm.commerce.catalog-ext remplace la définition d'origine.

La balise Configuration de la balise GetData est exécutée par l'action HCL Commerce getData. Cette action recherche des fichiers intitulés get-data-config.xml dans le répertoire WEB-INF/config. Les fichiers de configuration doivent respecter les règles suivantes :
  • L'élément racine doit être'get-data-config.
  • Chaque composant a un fichier de configuration, utilisé avec l'action getData.
  • Chaque fichier de configuration de composant se trouve dans le répertoire LOBTools > WebContent > WEB-INF > config > component component est le nom du composant.
  • Vos fichiers d'extension doivent se trouver dans le répertoire suivant : LOBTools > WebContent > WEB-INF > config > > component-ext. Ces fichiers sont chargés après les fichiers de configuration de composant.
Dans le fichier get-data-config.xml, indiquez les informations relatives au générateur d'expression et au profil d'accès. Le profil d'accès est MyCompany_All. Un générateur d'expression est une classe d'aide programmable ou un modèle, déclaré dans le fichier HCL Commerce get-data-config.xml. Il est utilisé par la balise getData dans un fichier JSP pour construire une expression XPath qui extrait des données.

Procédure

  1. Mettez à jour le fichier de modèle de requête wc-query-MyCompanyCatalogEntry-get.tpl pour ajouter des données au nom CatalogEntry.
    Ce fichier contient les informations suivantes :
    • Une section de définition de symboles qui définit les tables incluses dans le modèle de requête. Dans ce tutoriel, vous incluez les tables de base de données CATENTRY, CATENTDESC, XWARRANTY, XCAREINSTRUCTION dans la section de définition de symboles.
    • Une définition de la nouvelle instruction SQL d'association qui recherche les nouvelles données personnalisées.
    • Définition d'un nouveau profil d'accès MyCompany_All, qui étend le profil d'accès du récapitulatif de CatalogEntry par défaut : IBM_Admin_Summary.
      Remarque : Les préfixes IBM_Admin_ utilisés dans le profil d'accès IBM_Admin_Summary sont destinés à être utilisés par les appels administratifs et de services Management Center. Les profils d'accès non conformes aux nouvelles conventions de dénomination continuent à fonctionner correctement, la compatibilité ayant été maintenue avec les versions antérieures. Il est cependant recommandé de suivre ces conventions pour les profils d'accès existants et en cas de modification de profils d'accès futurs.
    Le tutoriel de couche de service de données que vous avez terminé comme condition préalable avant de commencer ce tutoriel utilise un modèle de requête simple pour ajouter de nouvelles données. Dans cette leçon, vous mettant à jour une requête Management Center qui affiche les entrées de catalogue. En fonction du mode de définition de la requête à l'aide de requêtes associées, vous devrez peut-être étendre le profil d'accès existant et ajouter une requête associée.
    1. Ouvrez HCL Commerce Developer et basculez vers la vue Explorateur d'entreprise.
    2. Développez WC > xml > config > com.ibm.commerce.catalog-ext.
    3. Ouvrez le fichier wc-query-MyCompanyCatalogEntry-get.tpl pour l'éditer.
    4. Localisez le code suivant :
      
      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. Remplacez-le par le code suivant :
      
      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. Etendez le profil d'accès par défaut IBM_Admin_Summary dans la définition de profil. Ajoutez le code suivant à la fin du fichier 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
      
      Où :
      name
      Indiquez le nom de votre profil personnalisé, par exemple MyCompany_All.
      extends
      Indiquez quel profil d'accès par défaut vous allez étendre, par exemple IBM_Admin_Summary.
      associated_sql_statement
      Indiquez la nouvelle instruction SQL associée pour récupérer vos données personnalisées, par exemple, MyCompanyWarrantygetCatalogEntryDetailsByParentCatalogGroupId.
      Remarque : Il n'est pas nécessaire de copier toutes les requêtes associées définies dans le profil d'accès des détails d'entrées de catalogue par défaut, comme IBM_Admin_Summary. Appliquez les étapes suivantes pour renvoyer les données d'entrée de catalogue existantes et les nouvelles données personnalisées. Pour des informations sur la définition d'un nouveau profil d'accès, voir Profils d'accès.
  2. Activez la journalisation et du traçage pour Management Center.
    1. Ouvrez la console d'administration de WebSphere Application Server. Cliquez avec le bouton droit sur votre serveur de test : sélectionnez Administration > Exécuter la console d'administration.
    2. Développez Identificiation et résolution des incidents et sélectionnez Journaux et suivi.
    3. Cliquez sur votre serveur.
    4. Cliquez sur Modification des niveaux de détail de journalisation.
    5. Activez le suivi com.ibm.commerce.lobtools.*=all, dans l'onglet Configuration ou Exécution :
      • Les paramètres de configuration provoquent l'affichage des messages du journal après le redémarrage du serveur. Lorsque le serveur redémarre, les messages BOD apparaissent sans activation du suivi dans la console d'administration.
      • Les paramètres d'exécution font que le message du journal s'affiche sans redémarrer le serveur. Après le redémarrage du serveur, le paramètre de suivi doit être réactivé, faute de quoi le message de journal n'est pas affiché.


    6. Cliquez sur Appliquer. Enregistrez vos modifications.
  3. Déterminez le nom d'URL du service. Pour identifier le nom d'URL du service, vous devez activer le traçage dans Management Center.
    1. Ouvrez Management Center avec la journalisation activée.
      Utilisez l'URL https://host_name:8000/lobtools?logger.display=truehost_name est le nom d'hôte de votre environnement de développement. Pour plus d'informations sur la connexion dans Management Center, voir Activation de la journalisation et du traçage côté client dans le Management Center.
    2. Cliquez sur Management Center Outils > Journalisation et traçage.
    3. Dans la boîte de dialogue Journalisation et traçage, définissez les options suivantes :
      • Dans la zone Niveau de journalisation par défaut, sélectionnez CONFIG.
      • Cliquez sur Activer.
    4. La trace est activée. Ne fermez pas la boîte de dialogue Journalisation et traçage.
    5. Ouvrez l'Catalogs tool dans Management Center. Accédez à un produit de votre catalogue et ouvrez la vue des propriétés du produit.
    6. Cliquez sur Envoyer maintenant dans le panneau Journalisation et traçage.
    7. Ouvrez WCDE_installdir\wasprofile\logs\server_name\trace.log pour afficher le fichier du journal de suivi. Localisez l'appel de service. L'URL de service doit être /cmc/GetCatalogGroupChildren-CatalogEntry.
  4. Déterminez le fichier JSP de contrôleur.
    1. Dans la vue Explorateur d'entreprise, développez LOBTools > WebContent > WEB-INF.
    2. Ouvrez le fichier spring-ibm-catalog.xml pour afficher le contenu du fichier.
    3. Recherchez la ligne de code qui associe un contrôleur JSP au service GetCatalogGroupChildren-CatalogEntry.
      
      <bean id="/GetCatalogGroupChildren-CatalogEntry" class="org.springframework.web.servlet.mvc.ParameterizableViewController">
        <property name="viewName" value="/jsp/commerce/catalog/restricted/GetChildCatalogEntryForCatalogGroup.jsp"/>
      </bean>
      
      Le service est associé au fichier JSP du contrôleur GetChildCatalogEntryForCatalogGroup.jsp.
  5. Déterminez le générateur d'expression à utiliser pour la personnalisation.
    1. Développez LOBTools > WebContent > jsp > commerce > catalog > restricted.
    2. Ouvrez le fichier GetChildCatalogEntryForCatalogGroup.jsp pour afficher le contenu du fichier.
    3. Recherchez le code qui définit la configuration de la balise 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>
      
      Notez la valeur de l'attribut expressionBuilder, getCatalogEntryDetailsByParentCatalogGroupId. Vous devez déclarer ce générateur d'expression dans votre fichier get-data-config.xml personnalisé.
  6. Déterminez le profil d'accès par défaut pour le générateur d'expression.
    1. Développez LOBTools > WebContent > WEB-INF > config > com.ibm.commerce.catalog.
    2. Ouvrez le fichier get-data-config.xml pour afficher le contenu du fichier.
    3. Recherchez la configuration du générateur d'expression getCatalogEntryDetailsByParentCatalogGroupId et notez la valeur du paramètre 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>

      Le profil d'accès par défaut est IBM_Admin_Summary. Vous remplacez le générateur d'expression dans votre fichier get-data-config.xml personnalisé en modifiant la valeur du profil d'accès.

  7. Remplacez le générateur d'expression dans votre fichier get-data-config.xml personnalisé.
    Vous utilisez votre fichier de configuration personnalisé pour récupérer des informations de garantie supplémentaires à partir du nom CatalogEntry. Votre fichier personnalisé doit remplacer le fichier de configuration du composant de base.
    1. Développez LOBTools > WebContent > WEB-INF > config.
    2. Cliquez avec le bouton droit de la souris sur le répertoire config et sélectionnez Nouveau > Dossier
    3. Dans la zone Nom du dossier, entrez com.ibm.commerce.catalog-ext.
    4. Cliquez sur Terminer. Le répertoire com.ibm.commerce.catalog-ext est créé dans le répertoire config.
    5. Cliquez avec le bouton droit sur com.ibm.commerce.catalog-ext. Ensuite, cliquez sur Nouveau > Fichier.
    6. Dans la zone Nom de fichier, entrez get-data-config.xml.
    7. Cliquez sur Terminer. Le fichier get-data-config.xml s'ouvre.
    8. Copiez le code suivant dans votre fichier.
      <?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> 
      Remarque : Dans ce code, le modèle d'expression n'est pas inclus. Ce générateur d'expression utilise le profil d'accès que vous avez défini et le modèle d'expression de la définition fournie par IBM. Ce comportement s'explique par le fait que, puisque vous avez étendu le générateur d'expression et le nom, getCatalogEntryDetailsByParentCatalogGroupId reste identique.
    9. Facultatif : Vous pouvez également déclarer le générateur d'expression findAllCatentriesBasicSearch. findAllCatentriesBasicSearch s'assure que vos nouvelles données personnalisées s'affichent dans les détails du produit renvoyées via les recherches effectuées par les clients sur votre vitrine. Pour utiliser ce générateur d'expression, ajoutez le code de ce générateur d'expression après le code du générateur d'expression getCatalogEntryDetailsByParentCatalogGroupId dans le fichier 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>

Résultats

A ce stade, vous avez enregistré le profil d'accès personnalisé du côté client afin que ce côté puisse communiquer avec le côté serveur. Dans la leçon suivante, vous commencerez à personnaliser l'interface utilisateur côté client.