Configuración del creador de objetos de tabla
Utilice TableObjectBuilder
para crear un objeto de tabla para cargar directamente datos para un objeto de negocio en una o más tablas de bases de datos. Puede configurar este creador definiendo valores de atributos y subelementos en el archivo de configuración de objeto de negocio. Utilice el mediador y creador de objetos de tabla para cargar datos de un archivo de entrada en varias tablas de base de datos.
Para obtener información general sobre el creador de objetos de tabla y el mediador de objetos de tabla, consulte Mediador y creador basados en tablas del programa de utilidad de carga de datos.
Procedimiento
- Abra la configuración de objeto de negocio para su edición.
-
Localice el elemento
<_config:BusinessObjectBuilder>
. Si está creando una configuración de objeto de negocio en lugar de editar un archivo existente, cree este elemento<_config:BusinessObjectBuilder>
dentro del elemento<_config:DataLoader>
en el archivo de configuración de objeto de negocio. Añada un elemento<_config:BusinessObjectBuilder>
para el elemento<_config:DataReader>
. -
Establezca el valor del atributo
className
de modo que sea la clase de creador de objetos com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilderPor ejemplo, el siguiente fragmento de código especifica la clase de creador de objetos de tabla<_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" > ... </_config:BusinessObjectBuilder>
-
Configure las tablas en las que se van a cargar los datos. Especifique cada una de las tablas en las que el programa de utilidad de carga de datos va a cargar datos dentro de un elemento
<_config:Table>
distinto.Especifique los atributos para esta propiedad de configuración<_config:Table>
. Estos atributos también están disponibles:- name
- Nombre de la tabla en la base de datos.
- deleteKey
- Apunta a un nombre de columna del archivo CSV. Consulte la descripción del atributo
deleteValue
sobre cómo utilizar este atributo. - deleteValue
- Se trata de un indicador de supresión. Si los datos del nombre de columna especificados por
deleteKey
coinciden condeleteValue
, la fila se suprime de la base de datos. - excludeUnListedColumns
- Indica si se debe excluir cualquier columna no listada de la carga. Los valores para este elemento pueden ser true o false. El valor predeterminado es false e indica que todas las columnas se sobrescribirán.
Por ejemplo, el siguiente fragmento de código declara el elemento<_config:Table>
para cargar datos de adjuntos en WebSphere Commerce:<_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" > <_config:Table name="ROLE"> ... </_config:Table> ... </_config:BusinessObjectBuilder>
-
Configure los columnas para cada una de las tablas en las que este programa de utilidad carga datos.
Especifique la configuración para cada columna por separado dentro del correspondiente
<_config:Table>
. Utilice el elemento<_config:Column>
para configurar una columna. Especifique los atributos para cada configuración de columna. Los atributos disponibles que se pueden utilizar para configurar una columna son:- name
- Nombre de la columna en la base de datos.
- value
- Valor de la columna. Generalmente se trata de una clave y su valor real depende del atributo
valueFrom
para indicar cómo se resuelve el valor. - valueFrom
- Indica cómo resolver el valor. Se da soporte a los cambios siguientes
valueFrom
:- InputData
- Indica que el valor es de
InputData
. - Fija
- El valor es un valor fijo que se especifica directamente dentro del atributo de valor en este archivo de configuración de objeto de negocio.
- IDResolve
- El valor es del resolvedor de ID. En este caso, el elemento
<_config:Column>
puede contener un elemento<_config:IDResolve>
para indicar cómo resolver el ID. - BusinessContext
- El valor procede de la sección de contexto de negocio en el archivo de configuración de entorno de carga de datos.
- CurrentTimestamp
- El valor es el indicador de fecha y hora actual.
- ColumnHandler
- El valor procede de un manejador de columna. En este caso, el elemento
<_config:ColumnHandler>
especifica la clase de manejador de columna para calcular el valor de la columna.
defaultValue
- El valor de columna predeterminado. Esta columna se utiliza cuando
valueFrom
esInputData
pero se omite en los datos de entrada. defaultValueFrom
- Indica cómo resolver el valor
defaultValue
. Se da soporte a los valores siguientesdefaultValueFrom
:InputData
: Indica quedefaultValue
procede deInputData
.Fixed
: Indica que eldefaultValue
es un valor fijo.BusinessContext
: EldefaultValue
procede del contexto de negocio.CurrentTimestamp
:defaultValue
es la indicación de fecha y hora actual.ColumnHandler
: El defaultValue es de un manejador de columna. En este caso, el elemento<_config:ColumnHandler>
especifica la clase de manejador de columna para calcular el valor de la columna.
El siguiente fragmento de código especifica la configuración de columna para cargar datos en la tabla de base de datos MBRROLE:<_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" > ... <_config:Table name="MBRROLE"> <_config:Column name="MEMBER_ID" value="-2001" valueFrom="Fixed" /> <_config:Column name="ROLE_ID" value="ROLE_ID" valueFrom="IDResolve" /> <_config:Column name="ORGENTITY_ID" value="-2001" valueFrom="Fixed" /> </_config:Table> ... </_config:BusinessObjectBuilder>
- Opcional:
Configure la resolución de ID para las columnas que necesitan esta propiedad. Especifique esta propiedad con el elemento
<_config:IDResolve>
.Las definiciones de atributos para esta propiedad se especifican de este modo:- nombreTabla
- Nombre de la tabla que debe utilizarse para IDresolver.
- generateNewKey
-
- true
- Si el ID no se puede resolver a partir de la base de datos, se genera una nueva clave.
- false
- Si el ID no se puede resolver a partir de la base de datos, se genera una excepción en lugar de generar una nueva clave.
- primaryKeyColumnName
- El nombre de la columna de clave primaria que se debe resolver. Este parámetro es opcional si la clave primaria para esta tabla solo tiene una columna. De lo contrario, es obligatorio.
El siguiente fragmento de código especifica la propiedad de resolución de ID para la tabla ROLE.<_config:Column name="ROLE_ID" value="ROLE_ID" valueFrom="IDResolve">
<_config:IDResolve tableName="ROLE" generateNewKey="true" >
... </_config:IDResolve> </_config:Column>Nota: Si el ID para una columna se declara en los atributos para la propiedad de la columna, o se declara en un elemento anterior diferente en el archivo de configuración de objeto de negocio, la propiedad de resolución de ID no es necesaria. - Opcional:
Configure todos los subelementos de columna de índice exclusivos para el elemento de resolución de ID.
Utilice el elemento
<_config:UniqueIndexColumn>
para especificar estas propiedades. Una propiedad<_config:IDResolve>
puede contener uno o varios subelementos<_config:UniqueIndexColumn>
para ayudarle a resolver el ID. Las definiciones de atributos se especifican de este modo:name
- Nombre de columna de índice exclusivo.
value
- Valor de columna de índice exclusivo. Generalmente se trata de una clave y su valor real depende del atributo
valueFrom
para indicar cómo se resuelve el valor. valueFrom
- Indica cómo resolver el valor. Se da soporte a los cambios siguientes
valueFrom
:- InputData
- Indica que el valor es de
InputData
. - Fija
- Es un valor fijo.
- BusinessContext
- El valor es del contexto de negocio.
- CurrentTimestamp
- El valor es el indicador de fecha y hora actual.
- ColumnHandler
- El valor procede de un manejador de columna. En este caso, el elemento
<_config:ColumnHandler>
especifica la clase de manejador de columna para calcular el valor de la columna.
- skipIDResolveIfNull
- Indica si se debe omitir la resolución de ID si el valor de la columna es nulo. El valor de esta columna puede ser true o false. El valor predeterminado es false.
El siguiente fragmento de código especifica el índice de columna exclusivo para la propiedad de resolución de ID para la tabla ROLE.<_config:Column name="ROLE_ID" value="ROLE_ID" valueFrom="IDResolve"> <_config:IDResolve tableName="ROLE" generateNewKey="true" >
<_config:UniqueIndexColumn name="NAME" value="roleName" />
</_config:IDResolve> </_config:Column> -
Especifique el mediador de objetos de negocio para que sea la clase com.ibm.commerce.foundation.dataload.businessobjectmediator.TableObjectMediator. Si está utilizando la clase com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder como creador, utilice siempre este mediador de objetos de tabla como mediador de objetos de negocio. Esta clase es el mediador que el programa de utilidad de carga de datos utiliza para toda la carga de datos basada en tablas.
El siguiente fragmento de código especifica el mediador de objetos de tablas:
<_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" > ... <_config:BusinessObjectMediator className="com.ibm.commerce.foundation.dataload.businessobjectmediator.TableObjectMediator" > </_config:BusinessObjectMediator> </_config:BusinessObjectBuilder>
- Opcional:
Si desea incluir los objetos que está cargando dentro del índice de búsqueda de HCL Commerce, especifique el mediador de índice de búsqueda para el objeto de negocio que está cargando. También debe especificar la correlación de datos para el objeto que se va a incluir dentro de la índice de búsqueda.
Para especificar el mediador de índice de búsqueda y la correlación de datos, cree una segunda configuración del creador de objetos de negocio para indexar el objeto de negocio. Añada la segunda configuración del creador de objetos de negocio después del elemento
</_config:BusinessObjectBuilder>
que cierra la configuración del creador de objetos de negocio inicial. Para obtener una lista de mediadores de índice de búsqueda disponibles, consulte Programa de utilidad de carga de datos mediadores de objetos de negocio.Por ejemplo, el siguiente fragmento de código especifica el mediador de índice de búsqueda para cargar categorías y los datos que se van a incluir en el índice de búsqueda.<_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" > ... <_config:BusinessObjectMediator className="com.ibm.commerce.foundation.dataload.businessobjectmediator.TableObjectMediator" > </_config:BusinessObjectMediator> </_config:BusinessObjectBuilder> <!-- Catalog Group Search Index --> <_config:BusinessObjectBuilder className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.BaseBusinessObjectBuilder" packageName="com.ibm.commerce.catalog.facade.datatypes.CatalogPackage" dataObjectType="CatalogGroupType" > <_config:DataMapping> <!-- The unique reference number of the category --> <_config:mapping xpath="CatalogGroupIdentifier/UniqueID" value="GroupUniqueId" /> <!-- The identifier of the category --> <_config:mapping xpath="CatalogGroupIdentifier/ExternalIdentifier/GroupIdentifier" value="GroupIdentifier" /> <!-- The unique reference number of the store that owns the category --> <_config:mapping xpath="CatalogGroupIdentifier/ExternalIdentifier/StoreIdentifier/ExternalIdentifier/NameIdentifier" value="StoreIdentifier" /> <!-- The unique reference number of the parent category --> <_config:mapping xpath="ParentCatalogGroupIdentifier/UniqueID" value="ParentGroupUniqueId" /> <!-- The identifier of the parent category --> <_config:mapping xpath="ParentCatalogGroupIdentifier/ExternalIdentifier/GroupIdentifier" value="ParentGroupIdentifier" /> <!-- The unique reference number of the store that owns the parent category --> <_config:mapping xpath="ParentCatalogGroupIdentifier/ExternalIdentifier/StoreIdentifier/UniqueID" value="ParentStoreUniqueId" /> <!-- The identifier of the store that owns the parent category --> <_config:mapping xpath="ParentCatalogGroupIdentifier/ExternalIdentifier/StoreIdentifier/ExternalIdentifier/NameIdentifier" value="ParentStoreIdentifier" /> <!-- The identifier of the catalog --> <_config:mapping xpath="Attributes/CatalogIdentifier" value="CatalogIdentifier" /> </_config:DataMapping> <_config:BusinessObjectMediator className="com.ibm.commerce.catalog.dataload.mediator.CatalogGroupRelationshipSearchIndexMediator" componentId="com.ibm.commerce.catalog" > </_config:BusinessObjectMediator> </_config:BusinessObjectBuilder>
Como referencia para ayudarle a configurar la correlación de datos para un objeto, revise los archivos de configuración de objeto de negocio que se proporcionan de forma predeterminada para utilizarlos con la subida de catálogo. Para revisar estos archivos, vaya al siguiente directorio:utilities_root/ts.ear/xml/config/com.ibm.commerce.catalog/dataload
workspace_dir\WC\xml\config\com.ibm.commerce.catalog\dataload
- wc-loader-AD-attribute-allowed-values.xml
- wc-loader-catalog-entry.xml
- wc-loader-catalog-group.xml
- wc-loader-catalog-group-description.xml
Resultados
<_config:BusinessObjectBuilder
className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" >
<_config:Table name="ROLE">
<_config:Column name="ROLE_ID" value="roleID" valueFrom="IDResolve">
<_config:IDResolve tableName="ROLE" generateNewKey="true" >
<_config:UniqueIndexColumn name="NAME" value="roleName" />
</_config:IDResolve>
</_config:Column>
<_config:Column name="NAME" value="roleName" />
<_config:Column name="DESCRIPTION" value="description" />
</_config:Table>
<_config:Table name="MBRROLE">
<_config:Column name="MEMBER_ID" value="-2001" valueFrom="Fixed" />
<_config:Column name="ROLE_ID" value="roleID" valueFrom="IDResolve" />
<_config:Column name="ORGENTITY_ID" value="-2001" valueFrom="Fixed" />
</_config:Table>
<_config:BusinessObjectMediator
className="com.ibm.commerce.foundation.dataload.businessobjectmediator.TableObjectMediator" >
</_config:BusinessObjectMediator>
</_config:BusinessObjectBuilder>
En este fragmento de código, se incluye la columna de índice exclusivo para el nombre para establecer el valor como roleName. Esta propiedad es opcional en este caso. El valor para la columna NAME se define anteriormente en la propiedad de configuración de columna para la columna Name