Configurar el archivo de configuración de objeto de negocio del programa de utilidad de extracción de datos
Cree un archivo de configuración de objeto de negocio para que el programa de utilidad lo utilice para identificar los datos de objeto de negocio a extraer. En este archivo, debe especificar las clases de implementación para los componentes Lector de datos, Creador de objetos de negocio y Mediador de objetos de negocio.
El archivo de configuración de objeto de negocio define cómo extraer datos de la base de datos. Cuando configure los componentes de este archivo, indique cómo va a manejar el programa de utilidad los datos que deben convertirse. Por ejemplo, configure cómo el programa de utilidad va a convertir valores de ID exclusivos en valores de identificador externos. Si carga datos extraídos que incluyen valores de ID exclusivos en otra instancia, la operación de carga falla si los valores de ID existen para un objeto diferente.
Procedimiento
-
Vaya al siguiente directorio, que contiene los archivos de configuración de ejemplo para extraer datos:
- WCDE_installdir\samples\DataExtract
- Cree una copia de seguridad de los archivos de configuración wc-dataextract-business-object.xml en el directorio y subdirectorios para el objeto que desea extraer, donde business-object es el nombre del tipo de objeto.
-
Abra el archivo de configuración de objeto de negocios (wc-extract-business-object.xml) para el objeto que desea extraer.
Debe actualizar este archivo para añadir o cambiar cualquiera de los valores de configuración para extraer datos.Por ejemplo, para configurar el programa de utilidad para que utilice el proceso de extracción de datos basado en SQL, debe configurar cómo va a recuperar, transformar y generar datos el programa de utilidad.
-
Configure la clase de lector de datos para que sea la clase com.ibm.commerce.foundation.dataload.datareader.UniqueIdReader. Si no especifica esta clase de lector de datos, debe incluir una configuración
ColumnMappingoValueHandlerdentro de la configuración del mediador de objetos de negocio para que el programa de utilidad la utilice para recuperar datos.Esta clase de lector de datos añade soporte para que el programa de utilidad utilice sentencias SQL para recuperar únicamente los valores de ID exclusivos para un objeto de negocio. La clase
UniqueIdReaderdevuelve cada vez un valor de ID para un objeto al creador de objetos de negocio. Estos valores de ID después se pasarán como objeto de correlación al mediador de objetos de negocio. A continuación, el mediador recuperará los datos restantes para el objeto. La clave para la correlación es el nombre de columna que se incluye en la sentencia SQL select y el valor es el valor que se recupera de la base de datos para la columna. El lector de datos UniqueIdReader puede enviar varios objetos de correlación al creador de objetos de negocio.Si necesita extraer datos personalizados o datos que no están soportados para el programa de utilidad de forma predeterminada, puede incluir un elemento de consulta para indicar cómo va a recuperar los datos el programa de utilidad. Si incluye un elemento de consulta en la configuración del lector de datos, la sentencia SQL debe devolver una lista de valores de ID. Un valor de ID puede incluir varias columnas, pero el valor no puede ser nulo. Si bien puede configurar varias consultas en la definición de esquema XSD, el programa de utilidad solamente utiliza la primera consulta. Si no configura ninguna consulta en la definición de esquema XSD, el programa de utilidad no extrae ningún dato
Nota: El UniqueIdReader no utiliza ninguna configuraciónColumnMappingoValueHandler.El siguiente código es una configuración del lector de datos de ejemplo. Esta configuración establece el lector de datos en la claseUniqueIdReadere incluye un elemento de consulta.
El elemento de consulta<_config:DataReader className="com.ibm.commerce.foundation.dataload.datareader.UniqueIdReader" > <_config:Query> <_config:SQL> <![CDATA[ SELECT CATGROUP.CATGROUP_ID FROM CATGROUP JOIN STORECGRP ON (CATGROUP.CATGROUP_ID = STORECGRP.CATGROUP_ID AND STORECGRP.STOREENT_ID = ?) LEFT OUTER JOIN CATGRPDESC ON (CATGRPDESC.CATGROUP_ID = CATGROUP.CATGROUP_ID AND CATGRPDESC.LANGUAGE_ID = ?) WHERE CATGRPDESC.PUBLISHED = 1 AND CATGROUP.MARKFORDELETE = 0 ORDER BY CATGROUP.CATGROUP_ID ]]> </_config:SQL> <_config:Param name="storeId" valueFrom="BusinessContext" /> <_config:Param name="langId" valueFrom="BusinessContext" /> </_config:Query> </_config:DataReader><_config:Query>incluye una sentencia SQL y parámetros configurables. Si incluye parámetros configurables, el número de parámetros debe coincidir con el número de variables de signos de interrogación dentro de la sentencia SQL. Si los números no coinciden, se genera una excepción. -
Configure la clase de mediador de objetos de negocio.
- Si está extrayendo datos de promociones, establezca la clase para que sea la clase com.ibm.commerce.promotion.dataload.mediator.PromotionToDomTransformMediator. El programa de utilidad utiliza el mediador PromotionToDomTransformMediator para recuperar datos de promoción de la base de datos y crear un objeto DOM para las promociones. Después el objeto DOM se pasará al lector de datos, que generará el archivo XML de salida que incluirá los datos extraídos. Para crear el objeto DOM, el mediador puede sustituir algunos valores de claves primarias (por ejemplo, para categorías, entradas de catálogo, segmentos de clientes) con el correspondiente valor de identificador exclusivo. El programa de utilidad genera el valor de identificador en lugar del ID exclusivo, dado que el ID exclusivo D puede ser distinto entre entornos. Al cargar el XML en una tienda con el programa de utilidad de carga de datos, el programa de utilidad resuelve el ID exclusivo para las promociones del valor de identificador.
- Si está extrayendo datos de marketing o de Commerce Composer, establezca la clase para que sea la clase com.ibm.commerce.foundation.dataload.businessobjectmediator.AssociatedObjectMediator. El mediador de objetos empresariales AssociatedObjectMediator añade soporte para que el programa de utilidad SQL utilice sentencias SQL para recuperar la información detallada de objetos de negocio para el objeto de correlación. El mediador podrá enviar un objeto de correlación actualizado que contenga la información detallada de objetos de negocio a la clase de grabador de datos configurados. La clave para este objeto de correlación son las correlaciones de nombres de columna configuradas. El valor es el valor que se recupera para la correspondiente columna de base de datos.
Para recuperar la información de objeto de negocio detallada para un objeto, el mediador AssociatedObjectMediator utiliza uno o varios elementos de consulta. Cada elemento de consulta incluye una sentencia SQl para recuperar datos. Estas sentencias utilizan los valores de ID del objeto de correlación que el creador de objetos de negocio ha pasado al mediador. Los valores de ID se utilizan como valores de parámetros en la sentencia SQL para recuperar la información detallada para un objeto de correlación. Si incluye parámetros configurables en la sentencia SQL, el número de parámetros debe coincidir con el número de variables de signos de interrogación dentro de la sentencia SQL. Si los números no coinciden, se genera una excepción. Cuando el mediador utiliza la consulta, el mediador devuelve solamente el primer registro que se encuentra con las sentencias SQL configuradas. Este registro se incluirá en el objeto de correlación que se envía a la clase de grabador de datos.Nota: Si el SQL devuelve varios registros, puede que sea necesario afinar la SQL para asegurarse de que el mediador está recuperando el registro correcto.Al configurar el mediador AssociatedObjectMediator, también puede incluir una correlación de columnas para cada columna de la sentencia SQL. Puede utilizar la correlación para convertir el nombre de base de datos en un nombre más legible que coincida con el nombre de elemento o columna en el archivo de salida. Si no incluye una correlación de columnas, el nombre de columna de base de datos se utiliza en la clave del objeto de correlación que se envía al grabador de datos. El nombre de columna de base de datos siempre se especifica en mayúsculas.
Nota: Si selecciona datos de varias tablas, algunas columnas pueden tener el mismo nombre de columna de base de datos. Debe utilizar SQL para cambiar el nombre de los nombres de columna duplicados para el proceso de extracción. Por ejemplo,SELECT IDENTIFIER AS PARENT_IDENTIFIER. A continuación podrá definir la correlación de columnas para la columnaPARENT_IDENTIFIER.Si ha identificado varios elementos de consulta, el mediador crea un objeto de correlación para cada consulta y, a continuación, fusionará los objetos de correlación. Si el mediador encuentra nombres de columna duplicados en las consultas, el valor de columna de la última consulta añadida al objeto de correlación sobrescribirá el valor de la columna de la consulta añadida anteriormente al objeto de correlación.
Por ejemplo, el siguiente código muestra una configuración de mediador de objetos de negocio de ejemplo que incluye correlaciones de columna y una sentencia SQL con parámetros de sustitución.<_config:Query> <_config:SQL> <![CDATA[ SELECT IDENTIFIER,NAME,SHORTDESCRIPTION,LONGDESCRIPTION,THUMBNAIL,FULLIMAGE,KEYWORD FROM CATGROUP LEFT OUTER JOIN CATGRPDESC ON (CATGROUP.CATGROUP_ID = CATGRPDESC.CATGROUP_ID AND LANGUAGE_ID = ?) WHERE CATGROUP.CATGROUP_ID in (?) ]]> </_config:SQL> <_config:Param name="langId" valueFrom="BusinessContext" /> <_config:Param name="CATGROUP_ID" /> <_config:ColumnMapping name="IDENTIFIER" value="GroupIdentifier" /> <_config:ColumnMapping name="NAME" value="Name" /> <_config:ColumnMapping name="SHORTDESCRIPTION" value="ShortDescription" /> <_config:ColumnMapping name="LONGDESCRIPTION" value="LongDescription" /> <_config:ColumnMapping name="THUMBNAIL" value="Thumbnail" /> <_config:ColumnMapping name="FULLIMAGE" value="FullImage" /> <_config:ColumnMapping name="KEYWORD" value="Keyword" /> </_config:Query> -
Configure el grabador de datos para que el programa de utilidad especifique si el programa de utilidad va a generar datos en un archivo con formato CSV o XML.
Establezca la clase de grabador de datos en una de las siguientes clases:
- com.ibm.commerce.foundation.dataload.datawriter.CSVWriter
-
Al configurar el programa de utilidad de extracción de datos para que utilice el grabador de datos CSVWriter, el programa de utilidad genera los datos extraídos en archivos de salida con formato CSV. Este grabador de datos hace que el programa de utilidad tome un objeto de correlación del mediador de objetos de negocio y grabe el objeto dentro de una sola fila en el archivo de salida generado. Puede configurar el programa de utilidad para que utilice este grabador de datos, mediante la edición de la propiedad configurable
<_config:DataWriter>dentro del archivo de configuración de objeto de negocio. Por ejemplo, el siguiente código es una configuración de ejemplo que configura el programa de utilidad para utilizar el grabador de datos CSVWriter:
Cuando se configura el programa de utilidad para utilizar este grabador de datos, el programa de utilidad incluye los nombres para cada propiedad configurable<_config:DataWriter className="com.ibm.commerce.foundation.dataload.datawriter.CSVWriter"> <_config:Data> <_config:column number="1" name="GroupIdentifier" /> <_config:column number="2" name="TopGroup" /> <_config:column number="3" name="ParentGroupIdentifier" /> <_config:column number="4" name="Sequence" /> <_config:column number="5" name="Name" /> <_config:column number="6" name="ShortDescription" /> <_config:column number="7" name="LongDescription" /> <_config:column number="8" name="Thumbnail" /> <_config:column number="9" name="FullImage" /> <_config:column number="10" name="Keyword" /> </_config:Data> </_config:DataWriter><_config:column>como las cabeceras de columna en el archivo de salida CSV. Para cada propiedad configurable<_config:column>puede incluir los siguientes atributos opcionales configurables para preconfigurar un valor de columna para cada objeto de correlación que se graba en el archivo de salida.value- Establece un valor de columna específica para cada objeto de correlación que se graba en el archivo de salida.
valueFrom- Indica donde va a recuperar el programa de utilidad el valor de la columna. Puede establecer el valor para el atributo en uno de los siguientes valores:
Fixed- El valor que se especifica para el atributo
valuese utiliza como valor de columna para cada objeto de correlación que se graba en el archivo de salida. CurrentTimestamp- El valor de columna es la indicación de fecha y hora actual, que se graba en un formato de serie
java.sql.Timestamp.
valueyvalueFrom, el programa de utilidad genera el valor para una columna a partir del objeto de correlación que se pasa al grabador de datos desde el mediador de objetos de negocio.Cuando el programa de utilidad genera un archivo de salida CSV, el archivo incluye las siguientes propiedades:- La codificación del archivo
UTF-8. - El terminador de línea es el terminador de línea de estilo UNIX
'\n'. - El separador de señal es el carácter de coma
','. - El delimitador del valor de señal es el carácter de comillas
". Utilice este delimitador cuando la señal incluya algunos caracteres especiales, como un carácter de coma, un carácter de nueva línea o un carácter de comillas.
Al configurar el programa de utilidad para que utilice el grabador de datos CSVWriter puede configurar una o varias de las siguientes propiedades opcionales para el grabador de datos, además de los atributos configurables específicos del valor de columna:firstTwoLinesAreHeader- Configura los archivos de salida CSV generados de modo que incluyan dos líneas de datos de cabecera. La primera línea incluye la palabra clave para el tipo de objeto de negocio que se incluye en el archivo. La segunda línea incluye las cabeceras de columna. Puede incluir los siguientes valores para esta propiedad:
true- Los archivos CSV incluyen dos líneas de datos de cabecera.
false- Los archivos CSV no incluyen dos líneas de datos de cabecera. Este valor es el valor predeterminado.
firstLineIsHeader- Configura los archivos de salida CSV generado de modo que incluyan la cabecera de columna como línea de los datos de cabecera. Puede incluir los siguientes valores para esta propiedad:
true- Los archivos CSV incluyen las cabeceras de columna como una línea de cabecera.
false- Los archivos CSV no incluyen una línea de datos de cabecera. Este valor es el valor predeterminado.
false, el archivo de salida CSV generado no incluye ningún dato de cabecera. Los archivos incluyen solamente los registros de datos. Si incluye las dos propiedades establecidas entrue, los archivos de salida CSV generados incluirán dos líneas de datos de cabecera.trimColumns- Elimina el espacio en blanco final para los valores de la lista configurada de nombres de columna CSV. Separe los nombres de columna en la lista utilizando un carácter de coma. Para cada columna de la lista, el espacio en blanco final para el valor de columna se recorta. Considere incluir esta propiedad para las columnas con un tipo de columna CHAR. Cuando el valor de columna para este tipo de columna incluye un espacio en blanco, el espacio en blanco se incluye en el archivo de salida. El espacio en blanco para cualquier columna que no esté en esta lista configurada no se ve afectado.
replaceLineTerminator- Configura el programa de utilidad para que sustituya todos los terminadores de línea, como
"\n"o"\r\n"o los caracteres de nueva línea, con un carácter de espacio. Puede incluir los siguientes valores para esta propiedad:true- El programa de utilidad sustituye los terminadores de línea. Este valor es el valor predeterminado.
false- Los terminadores de línea no se sustituyen.
timestampPattern- Defina el formato de indicación de fecha y hora que se debe utilizar. Si utiliza la propiedad configurable
timestampColumns, puede que necesite utilizar esta propiedad. De forma predeterminada, se utiliza el formato"yyyy-mm-dd hh:mm:ss". timestampColumns- Configura una lista de columnas que deben incluirse en un valor de indicación de fecha y hora específico. Este valor está en el formato que se ha definido para la propiedad
timestampPattern. Separe los nombres de columna en la lista utilizando un carácter de coma. Si una columna tiene el atributo configurablevalueFrom="CurrentTimestamp"no es necesario incluir la columna en la lista. El mediador presupone que esta columna es una indicación de fecha y hora, y siempre aplica eltimestampPatternconfigurado.
- com.ibm.commerce.foundation.dataload.datawriter.XmlWriter
-
Al configurar el programa de utilidad de extracción de datos para que utilice el grabador de datos XmlWriter, el programa de utilidad genera los datos extraídos en archivos de salida con formato XML. Este grabador de datos hace que el programa de utilidad tome un objeto de correlación del mediador de objetos de negocio y grabe el objeto dentro de un solo elemento XML en el archivo de salida generado. Puede configurar el programa de utilidad para que utilice este grabador de datos, mediante la edición de la propiedad configurable
<_config:DataWriter>dentro del archivo de configuración de objeto de negocio. Por ejemplo, el siguiente código es una configuración de ejemplo que configura el programa de utilidad para utilizar el grabador de datos XmlWriter:
Al configurar el programa de utilidad para utilizar el grabador de datos XmlWriter puede configurar una o más de las siguientes propiedades opcionales para el grabador de datos:<_config:DataWriter className="com.ibm.commerce.foundation.dataload.datawriter.XmlWriter"> <_config:property name="rootElementName" value="CataloagGroups" /> <_config:property name="elementName" value="CataloagGroup" /> <_config:property name="indent" value="true" /> <_config:property name="indentAmount" value="2" /> </_config:DataWriter>rootElementName- El nombre de elemento XML raíz en el archivo XML de salida. El nombre del elemento predeterminado es "
root". elementName- El nombre de elemento para cada objeto de negocio que extrae el programa de utilidad. El nombre predeterminado es "
elementName". indent- Indica si el XML en el archivo de salida generado se va a formatear. Puede establecer los siguientes valores para esta propiedad:
true- El XML se formatea dentro del archivo de salida.
false- El XML no se formatea. Este valor es el valor predeterminado.
indentAmount- Indica el número de espacios que cada elemento se sangra del elemento padre.
nvpToAttribute- Indica si cada par nombre-valor de un objeto de correlación se graba en el archivo de salida como subelemento o como atributo para el elemento de objeto. Puede establecer los siguientes valores para esta propiedad:
true- Cada par nombre-valor se incluye como atributo del elemento.
false- Cada par nombre-valor se incluye como subelemento del elemento dentro del archivo de salida. Este valor es el valor predeterminado.
Nota: Para generar archivos de salida XML, también debe configurar el archivo de configuración de orden de extracción para especificar una extensión de nombre de archivo XML para cada archivo de salida que se va a generar. - com.ibm.commerce.foundation.dataload.datawriter.DomXmlWriter
- Utilice esta clase cuando se extraigan datos de promociones. El programa de utilidad utiliza esta clase para generar el XML de promociones dentro de un archivo de salida basándose en el objeto DOM que se pasa del mediador de objetos de negocio. El formato XML de promociones generado es distinto del XML de tiempo de ejecución de promociones. El formato XML de promociones generado es parecido al XML de creación de promociones. El XML de salida generado difiere del XML de creación en que durante el proceso de extracción, el programa de utilidad de extracción de datos sustituye algunos valores de claves primarias (por ejemplo, para categorías, entradas de catálogo, segmentos de cliente) por el correspondiente valor de identificador exclusivo. El programa de utilidad genera el valor de identificador en lugar del ID exclusivo, dado que el ID exclusivo D puede ser distinto entre entornos. Al cargar el XML en una tienda con el programa de utilidad de carga de datos, el programa de utilidad resuelve el ID exclusivo para las promociones del valor de identificador.
-
Configure todas las configuraciones de manejador de valores para las columnas de base de datos que está extrayendo. Establezca la clase para que la configuración del manejador de valores sea la clase com.ibm.commerce.foundation.dataload.config.ResolveValueBasedOnSQLHandler.
Esta clase proporciona un punto de personalización que se puede utilizar cuando el programa de utilidad no puede recuperar datos directamente de la base de datos o cuando es necesario modificar los datos antes de que la clase de grabador de datos grabe los datos en el archivo de salida.Por ejemplo, si tiene previsto cargar los datos en otra instancia de HCL Commerce. Cuando se extraen datos de estas columnas para cargarlos en otra instancia de HCL Commerce, es necesario el valor del identificador (clave externa), no los valores de ID exclusivos. La configuración del manejador de valores indica la forma en que el mediador puede recuperar el valor de identificador para sustituir los valores de ID exclusivos que se han pasado al mediador en el objeto de correlación desde el creador de objetos de negocio.
Cada correlación de columnas que incluye en la configuración del mediador de objetos de negocio puede incluir la propiedad configurable
<_config:ValueHandler. Incluya una configuración de manejador de valores cuando sea necesario modificar el valor que el mediador recupera de la base de datos. También puede incluir una propiedad configurable del manejador de valores para una configuración de elementos de parámetros en la sentencia SQL que utiliza el mediador de objetos de negocio.Para incluir una configuración del manejador de valores, también es necesario identificar de dónde se recupera el valor incluyendo los siguientes atributos configurables.value- Especifica el valor que debe utilizarse para la columna. Este valor puede ser un valor específico o puede ser el SQL para recuperar el valor de columna.
valueFrom- Indica donde va a recuperar el programa de utilidad el valor de la columna. Puede establecer el valor para el atributo en uno de los siguientes valores:
Fixed- El valor que se especifica para el atributo
valuese utiliza como el valor de columna. CurrentTimestamp- El valor de la columna es la indicación fecha y hora actual, la cual se escribe en un formato de serie
java.sql.Timestamp.
Por ejemplo, el siguiente código es una configuración de mediador de objetos de negocio de ejemplo que incluye una configuración de manejador de valores para la columna CONTENT.<_config:ColumnMapping name="CONTENTTYPE" value="contentType" /> <_config:ColumnMapping name="CONTENT" value="content" > <_config:ValueHandler className="com.ibm.commerce.foundation.dataload.config.ResolveValueBasedOnSQLHandler" > <_config:Parameter name="sqlBasedOnKey" value="contentType" valueFrom="Fixed" /> <_config:Parameter name="CatalogEntry" value="SELECT PARTNUMBER FROM CATENTRY WHERE CATENTRY.CATENTRY_ID = ?" valueFrom="Fixed" /> <_config:Parameter name="CatalogGroup" value="SELECT IDENTIFIER FROM CATGROUP WHERE CATGROUP_ID = ?" valueFrom="Fixed" /> <_config:Parameter name="MarketingContent" value="SELECT NAME FROM COLLATERAL WHERE COLLATERAL_ID = ?" valueFrom="Fixed" /> </_config:ValueHandler> </_config:ColumnMapping>