Deprecated feature

Ajout de modèles de requête pour inclusion d'informations personnalisées

Ce fichier décrit comment ajouter des modèles de requête afin d'inclure des informations que vous avez ajoutées au schéma.

Avant de commencer

Des informations personnalisées ont déjà été ajoutées au schéma.

Procédure

  1. Créez un fichier de modèle de requête Get personnalisé.
    1. Créez un dossier WC\config\com.ibm.commerce.servicemodule-ext, si celui-ci n'existe pas déjà.
    2. Cliquez avec le bouton droit sur le dossier WC\config\com.ibm.commerce.servicemodule-ext. Vous devez créer ce fichier dans le répertoire -ext. Ne modifiez pas directement les modèles de requête de HCL Commerce.
    3. Cliquez sur Nouveau > Fichier.
    4. Attribuez un nom au fichier de modèle de requête personnalisé, en utilisant une chaîne unique (nom de votre entreprise) pour pouvoir le différencier : wc-query-MyCompanyCatalogEntry-get.tpl.
    5. Cliquez sur Terminer.
  2. Déterminez lequel des deux types de requête vous avez besoin de créer :
    Requête en une étape
    Une requête à une seule étape, ou requête XPath, utilise le bloc XPATH_TO_SQL_STATEMENT. Celui-ci définit à la fois la clé XPath et le profil d'accès. Dans la mesure du possible, vous devriez utiliser ce type de requête. Cependant, dans certains cas, il n'est pas possible d'extraire toutes les données en une requête unique ou bien une telle requête doit joindre un très grand nombre de tables et peut ne pas être performante. Utilisez alors une requête à deux étapes. Les modifications apportées au modèle de requête sont requise pour rendre en charge la pagination de requêtes à étape unique. Voir Prise en charge de la pagination dans la couche service de données pour plus d'informations.
    Pour les requêtes à une seule étape, examinez l'exemple suivant de fichier de modèle de requête HCL Commerce par défaut :
    BEGIN_SYMBOL_DEFINITIONS
    	COLS:CATENTRY_ID=CATENTRY:CATENTRY_ID
    	COLS:CATENTRY=CATENTRY:*	
    	COLS:CATENTDESC=CATENTDESC:CATENTRY_ID,SHORTDESCRIPTION
    END_SYMBOL_DEFINITIONS
    			
    BEGIN_XPATH_TO_SQL_STATEMENT
    	name=/CatalogEntry[(PartNumber=)]+IBM_CatalogEntryWithDescription
    	base_table=CATENTRY
    	sql=
    	     SELECT 
    	        CATENTRY.$COLS:CATENTRY$,
                    CATENTDESC.$COLS:CATENTDESC$
    	     FROM
    	        CATENTRY
                       LEFT OUTER JOIN CATENTDESC ON 
                         (CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID  AND 
                          CATENTDESC.LANGUAGE_ID IN ($CONTROL:LANGUAGES$)),
                    STORECENT                   
    	    WHERE
    	       CATENTRY.CATENTRY_ID  = STORECENT.CATENTRY_ID AND
                   STORECENT.STOREENT_ID = $CTX:STORE_ID$ AND
                   CATENTRY.PARTNUMBER IN (?PartNumber?) 
    END_XPATH_TO_SQL_STATEMENT
    
    Requête en deux étapes
    Une requête en deux étapes, ou requête associée, utilise le bloc ASSOCIATION_SQL_STATEMENT. Celui-ci définit séparément la clé XPath et le profil d'accès. Une autre raison d'utiliser une requête à deux étapes émerge lorsqu'une pagination est requise par le client. La pagination d'une requête à une seule étape n'est pas possible si celle-ci renvoie plusieurs enregistrements pour chaque enregistrement de table de base. Une requête à deux étapes permet la pagination de l'ensemble de résultats renvoyé par la première instruction (les clés primaires) au lieu d'une pagination de l'ensemble de résultats renvoyé par la seconde instruction. Les modifications apportées au fichier TPL ne sont pas obligatoires pour la prise en charge de la pagination de requête en deux étapes.
    L'ordre des noms renvoyé par le service est cohérent avec l'ordre des clés primaires renvoyé par la requête XPath to SQL.
    Pour les requêtes à deux étapes, examinez l'exemple suivant de fichier de modèle de requête HCL Commerce par défaut :
    BEGIN_XPATH_TO_SQL_STATEMENT
    	name=/CatalogEntry[(PartNumber=)]
    	base_table=CATENTRY
    	sql=
    	     SELECT  CATENTRY.$COLS:CATENTRY_ID$
    	     FROM  CATENTRY, STORECENT                    
    	    WHERE
    	       CATENTRY.CATENTRY_ID  = STORECENT.CATENTRY_ID AND
                    STORECENT.STOREENT_ID = $CTX:STORE_ID$ AND
                    CATENTRY.PARTNUMBER IN (?PartNumber?) 
    END_XPATH_TO_SQL_STATEMENT
    
    BEGIN_ASSOCIATION_SQL_STATEMENT
    	name=IBM_CatalogEntryWithDescription
    	base_table=CATENTRY
    	sql=
    	     SELECT CATENTRY.$COLS:CATENTRY$,        
                                 CATENTDESC.$COLS:CATENTDESC$
    	     FROM
    	        CATENTRY
    	           LEFT OUTER JOIN CATENTDESC ON 
                         (CATENTDESC.CATENTRY_ID = CATENTRY.CATENTRY_ID  AND 
                          CATENTDESC.LANGUAGE_ID IN ($CONTROL:LANGUAGES$))
    	     WHERE  CATENTRY.CATENTRY_ID IN ($ENTITY_PKS$)
    END_ASSOCIATION_SQL_STATEMENT
    
    BEGIN_PROFILE 
         name=IBM_Admin_Summary
         BEGIN_ENTITY 
    				base_table=CATENTRY 
            associated_sql_statement=IBM_CatalogEntryWithDescription
         END_ENTITY
    END_PROFILE
    
    Remarque : Si vous définissez la même requête, c'est à dire le chemin XPath et le profil d'accès, comme une requête à une étape et à deux étapes, la couche service de données sélectionne par défaut la requête à étape unique.
  3. Créez un modèle de requête XPATH_TO_SQL_STATEMENT. Dans le cas d'une requête à une seule étape, récupérez toutes les informations requises. Dans le cas d'une requête à deux étapes, renvoyez les valeurs des clés primaires. Pour référence, reportez-vous aux informations de la rubrique Fichier de modèle de requête.
  4. Facultatif : Créez un nouveau profil d'accès pour renvoyer des données différentes, comme décrit dans la rubrique Fichier de modèle de requête.
    Remarque : Tenez compte des informations suivantes lorsque vous déterminez un nouveau nom pour un profil d'accès : Les noms commençant par IBM_ sont réservés à une utilisation par IBM. Utilisez un nom évocateur de la portée des données renvoyées. Par exemple, MyCompany_Details.IBM_Admin_ figure en préfixe de tous les services destinés à être utilisés par les appels de service basés admin/CMC. Les profils d'accès non conformes à ces 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.

Exemple

Ci-dessous figure un exemple de fichier de modèle de requête personnalisé pour une requête à une seule étape. Ce fichier inclut des informations de schéma personnalisées (la table WARRANTY)

BEGIN_SYMBOL_DEFINITIONS
 <!-- CATENTRY table -->
 COLS:CATENTRY=CATENTRY:*
 COLS:CATENTRY_ID=CATENTRY:CATENTRY_ID

 COLS:WARRANTY=WARRANTY:*
 COLS:WARDESC=WARDESC:*

  END_SYMBOL_DEFINITIONS

  BEGIN_XPATH_TO_SQL_STATEMENT
 name=/CatalogEntry[CatalogEntryIdentifier[(UniqueID=)]]+MyCompany_CatalogEntryWarrantyProfile
 entity_table=CATENTRY
 sql=
 SELECT 
  CATENTRY.$COLS:CATENTRY$,
  WARRANTY.$COLS:WARRANTY$,
  WARDESC.$COLS:WARDESC$
 FROM
  CATENTRY 
   JOIN WARRANTY ON (CATENTRY.CATENTRY_ID = WARRANTY.CATENTRY_ID) 
   JOIN WARDESC ON (CATENTRY.CATENTRY_ID = WARDESC.CATENTRY_ID AND 
  WARDESC.LANGUAGE_ID = $CTX:LANGUAGE_ID$)
 WHERE
  CATENTRY.CATENTRY_ID IN (?UniqueID?) AND
  CATENTRY.MARKFORDELETE = 0
END_XPATH_TO_SQL_STATEMENT

.