![Deprecated feature](../../base/images/deprecated.png)
Adición de plantillas de consulta para incluir información personalizada
En este archivo se describe cómo añadir plantillas de consulta para incluir la información que haya añadido al esquema.
Antes de empezar
Procedimiento
-
Cree un archivo de plantilla de consulta Get personalizado.
- Cree una carpeta WC\config\com.ibm.commerce.servicemodule-ext, si todavía no existe ninguna.
- Pulse el botón derecho del ratón en la carpeta WC\config\com.ibm.commerce.servicemodule-ext. Debe crear el archivo en el directorio -ext. No modifique las plantillas de consulta HCL Commerce de forma directa.
- Pulse .
- Ponga un nombre al archivo de plantilla de consulta personalizado, utilizando una serie que sea exclusiva (el nombre de su empresa) para diferenciarlo: wc-query-MyCompanyCatalogEntry-get.tpl.
- Pulse Finalizar.
-
Decida cuál de los dos tipos de consultas necesita crear:
- Consulta de un solo paso
- Una consulta de un solo paso, o consulta XPath, utiliza el bloque XPATH_TO_SQL_STATEMENT. Define la clave de XPath y Perfil de acceso conjuntamente. Debe utilizar, si es posible, consultas de un solo paso. No obstante, en algunos casos, no es posible recuperar todos los datos en una única consulta, o bien, dicha consulta debe unirse a un gran número de tablas y es posible que no se pueda realizar. En este caso, debe utilizarse una consulta de dos pasos. Los cambios en la plantilla de consulta son necesarios para dar soporte a la paginación de consulta de un solo paso. Para más información, consulte Soporte de paginación en la capa de servicios de datos.
- Consulta de dos pasos
- Una consulta de dos pasos, o asociada, utiliza el bloque ASSOCIATION_SQL_STATEMENT. Define la clave de XPath y el Perfil de acceso por separado. Otro motivo por el cual se debe utilizar una consulta de dos pasos es por si el cliente solicita utilizar la paginación. No se puede paginar el resultado de una consulta de un solo paso si devuelve muchos registros para cada registro de la tabla base. Una consulta de dos pasos le permite paginar el conjunto de resultados devuelto por la primera sentencia (las claves primarias) en lugar de paginar el conjunto de resultados de la segunda sentencia. Los cambios en el archivo TPL no son necesarios para dar soporte a la paginación de consulta de dos pasos.
Nota: Si se define la misma consulta, es decir, XPath y el perfil de acceso como una consulta de un solo paso y de dos pasos, la capa de servicios de datos elige de forma predeterminada la consulta de un solo paso. - Cree una consulta de plantilla XPATH_TO_SQL_STATEMENT. En el caso de una consulta de un solo paso, recupere toda la información necesaria. Para una consulta de dos pasos, devuelve los valores de clave primaria. Utilice la información de Archivo de plantilla de consulta como referencia.
- Opcional:
Crear un nuevo perfil de acceso para devolver datos diferentes, como se describe en Archivo de plantilla de consulta.
Nota: Tenga en cuenta la información siguiente cuando decida sobre un nuevo nombre de un perfil de acceso: Los nombres que empiecen por IBM_ están reservados para uso de IBM. Utilice un nombre que indique el ámbito de los datos que se devuelvan. Por ejemplo, MyCompany_Details.IBM_Admin_ IBM_Admin_ es el prefijo de todos los servicios pensados para ser utilizados por llamadas de servicios basadas en admin/CMC. Los perfiles de acceso que no sigan estos 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.
Ejemplo
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
.