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
Procédure
-
Créez un fichier de modèle de requête Get personnalisé.
- Créez un dossier WC\config\com.ibm.commerce.servicemodule-ext, si celui-ci n'existe pas déjà.
- 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.
- Cliquez sur .
- 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.
- Cliquez sur Terminer.
-
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.
- 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.
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. - 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.
- 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
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
.