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

  1. Abra la configuración de objeto de negocio para su edición.
  2. 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>.
  3. Establezca el valor del atributo className de modo que sea la clase de creador de objetos com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder
    Por 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>
  4. 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 con deleteValue, 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>
  5. 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 es InputData pero se omite en los datos de entrada.
    defaultValueFrom
    Indica cómo resolver el valor defaultValue. Se da soporte a los valores siguientes defaultValueFrom:
    • InputData: Indica que defaultValue procede de InputData.
    • Fixed: Indica que el defaultValue es un valor fijo.
    • BusinessContext: El defaultValue 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>
  6. 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.
  7. 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>
    
  8. 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>
  9. 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:
    • Linuxutilities_root/ts.ear/xml/config/com.ibm.commerce.catalog/dataload
    • HCL Commerce Developerworkspace_dir\WC\xml\config\com.ibm.commerce.catalog\dataload
    Los siguientes archivos incluyen la configuración para ejecutar la indexación de búsquedas:
    • wc-loader-AD-attribute-allowed-values.xml
    • wc-loader-catalog-entry.xml
    • wc-loader-catalog-group.xml
    • wc-loader-catalog-group-description.xml

Resultados

La configuración del creador de objetos de tabla se ha completado. Por ejemplo, el siguiente fragmento de código especifica la configuración para cargar roles de miembros:

<_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