Configuration du générateur d'objet de table

Utilisez TableObjectBuilder pour générer un objet de table afin de charger directement des données pour un objet métier dans une ou plusieurs tables de base de données. Vous pouvez configurer ce générateur en définissant des sous-éléments et des valeurs d'attribut dans le fichier de configuration d'objet métier. Avec le médiateur et le générateur d'objet de table, vous pouvez charger des données depuis un fichier d'entrée unique dans plusieurs tables de base de données.

Pour des informations générales sur le générateur d'objet de table et le médiateur d'objet de table, voir Générateur et médiateur reposant sur des tables d'utilitaire de chargement de données.

Procédure

  1. Ouvrez votre configuration d'objet métier pour l'éditer.
  2. Recherchez l'élément <_config:BusinessObjectBuilder>. Si vous créez une configuration d'objet métier au lieu d'éditer un fichier existant, créez cet élément <_config:BusinessObjectBuilder> dans l'élément <_config:DataLoader> de votre fichier de configuration d'objet métier. Ajoutez votre élément <_config:BusinessObjectBuilder> après l'élément <_config:DataReader>.
  3. Associez la valeur d'attribut className à la classe de générateur d'objet com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder.
    Par exemple, le fragment suivant spécifie la classe de générateur d'objet de table
    
    <_config:BusinessObjectBuilder 
      className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" >
    ...
    </_config:BusinessObjectBuilder>
  4. Configurez les tables dans lesquelles charger les données. Spécifiez chaque table dans laquelle l'utilitaire de chargement de données doit charger des données dans un élément <_config:Table> distinct.
    Spécifiez les attributs pour cette propriété de configuration <_config:Table>. Les attributs suivants sont disponibles :
    nom
    Nom de la table dans la base de données.
    deleteKey
    Pointe vers un nom de colonne dans le fichier CSV. Reportez-vous à la description de l'attribut deleteValue pour déterminer comment utiliser cet attribut.
    deleteValue
    Indicateur de suppression. Si les données dans le nom de colonne spécifié par l'indicateur deleteKey correspondent à la valeur deleteValue, la ligne est supprimée de la base de données.
    excludeUnListedColumns
    Indique si les colonnes non listées doivent être exclues du chargement. Les valeurs de cet élément peuvent être true ou false. La valeur par défaut est false et elle indique toutes les colonnes doivent être écrasées.
    Par exemple, le fragment suivant déclare l'élément <_config:Table> pour le chargement de données de type pièce jointe dans WebSphere Commerce :
    
    <_config:BusinessObjectBuilder 
      className="com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder" >
      <_config:Table name="ROLE">
      ...
      </_config:Table>
      ...
    </_config:BusinessObjectBuilder>
  5. Configurez les colonnes pour chacune des tables dans lesquelles l'utilitaire charge des données.
    Spécifiez la configuration pour chaque colonne séparément dans l'élément <_config:Table> approprié. Utilisez l'élément <_config:Column> pour configurer une colonne. Spécifiez les attributs pour chaque configuration de colonne. Les attributs disponibles que vous pouvez utiliser pour configurer une colonne sont les suivants :
    nom
    Nom de la colonne dans la base de données.
    valeur
    Valeur de la colonne. Il s'agit généralement d'une clé et la valeur réelle dépend de l'attribut valueFrom, lequel indique comment la valeur doit être résolue.
    valueFrom
    Indique comment résoudre la valeur. Voici les éléments valueFrom pris en charge :
    InputData
    Il indique que la valeur provient de InputData.
    Corrigé
    Il s'agit d'une valeur fixe qui est spécifiée directement dans l'attribut de valeur dans ce fichier de configuration d'objet métier.
    IDResolve
    La valeur provient de l'utilitaire de résolution d'ID. Dans ce cas, l'élément <_config:Column> peut contenir un élément <_config:IDResolve> facultatif indiquant comment résoudre l'ID.
    BusinessContext
    La valeur provient de la section du contexte métier dans le fichier de configuration de l'environnement de chargement de données.
    CurrentTimestamp
    La valeur est l'horodatage courant.
    ColumnHandler
    La valeur provient d'un gestionnaire de colonne. Dans ce cas, l'élément <_config:ColumnHandler> indique la classe de gestionnaire de colonne pour le calcul de la valeur de colonne.
    defaultValue
    Valeur de la colonne par défaut. Cette colonne est utilisée lorsque valueFrom est InputData mais cette valeur est omise dans les données d'entrée.
    defaultValueFrom
    Indique comment résoudre defaultValue. Voici les valeursdefaultValueFrom prises en charge :
    • InputData : Indique que defaultValue provient de InputData.
    • Fixed : Indique que defaultValue est une valeur fixe.
    • BusinessContext : defaultValue provient du contexte métier.
    • CurrentTimestamp : defaultValue est l'horodatage actuel.
    • ColumnHandler : defaultValue provient d'un gestionnaire de colonne. Dans ce cas, l'élément <_config:ColumnHandler> indique la classe de gestionnaire de colonne pour le calcul de la valeur de colonne.
    Le fragment suivant spécifie la configuration de colonne pour le chargement de données dans le tableau de base de données 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. Facultatif : Configurez le programme de résolution d'ID pour toute colonne qui requiert cette propriété. Spécifiez cette propriété avec l'élément <_config:IDResolve>.
    Les définitions d'attribut pour cette propriété sont spécifiées comme suit :
    tableName
    Nom de la table à utiliser par le programme de résolution d'ID.
    generateNewKey
    true
    Si l'ID ne peut pas être résolu à partir de la base de données, une nouvelle clé est générée.
    false
    Si l'ID ne peut pas être résolu à partir de la base de données, une exception est renvoyée au lieu de générer une nouvelle clé.
    primaryKeyColumnName
    Nom de la colonne de clé primaire à résoudre. Ce paramètre est facultatif si la clé primaire de cette table possède uniquement une colonne. Si tel n'est pas le cas, il est obligatoire.
    Le fragment suivant spécifie la propriété de programme de résolution d'ID pour le tableau ROLE :
    <_config:Column name="ROLE_ID" value="ROLE_ID" valueFrom="IDResolve">
      <_config:IDResolve tableName="ROLE" generateNewKey="true" >
        ...
      </_config:IDResolve>
    </_config:Column>
    
    Remarque : Si l'ID d'une colonne est déclaré dans les attributs de la propriété de colonne ou dans un élément précédent différent dans le fichier de configuration d'objet métier, la propriété de programme de résolution d'ID n'est pas requise.
  7. Facultatif : Configurez tout sous-élément de colonne d'index à entrées uniques pour l'élément de programme de résolution d'ID.
    Utilisez l'élément <_config:UniqueIndexColumn> pour indiquer ces propriétés. Une propriété <_config:IDResolve> peut contenir un ou plusieurs sous-éléments <_config:UniqueIndexColumn> pour permettre la résolution de l'ID. Les définitions d'attribut sont spécifiées comme suit :
    name
    Nom de colonne de l'index à entrées uniques.
    value
    Valeur de colonne de l'index à entrées uniques. Il s'agit généralement d'une clé et la valeur réelle dépend de l'attribut valueFrom, lequel indique comment la valeur doit être résolue.
    valueFrom
    Indique comment résoudre la valeur. Les éléments valueFrom suivants sont pris en charge :
    InputData
    Il indique que la valeur provient de InputData.
    Corrigé
    La valeur est une valeur fixe.
    BusinessContext
    La valeur provient du contexte métier.
    CurrentTimestamp
    La valeur est l'horodatage courant.
    ColumnHandler
    La valeur provient d'un gestionnaire de colonne. Dans ce cas, l'élément <_config:ColumnHandler> indique la classe de gestionnaire de colonne pour le calcul de la valeur de colonne.
    skipIDResolveIfNull
    Indique si le programme de résolution d'ID doit être ignoré lorsque la valeur de colonne est null. La valeur de cette colonne peut être true ou false. La valeur par défaut est false.
    Le fragment suivant spécifie l'index de colonne d'index à entrées uniques pour la propriété de programme de résolution d'ID pour le tableau 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. Spécifiez la classe com.ibm.commerce.foundation.dataload.businessobjectmediator.TableObjectMediator comme médiateur d'objet métier. Si vous utilisez la classe com.ibm.commerce.foundation.dataload.businessobjectbuilder.TableObjectBuilder comme générateur, utilisez toujours ce médiateur d'objet de tableau comme médiateur d'objet métier. Cette classe est le médiateur que l'utilitaire de chargement de données utilise pour tous les chargements de données reposant sur des tables.
    Le fragment suivant spécifie le médiateur d'objet de table :
    
    <_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. Facultatif : Si vous voulez inclure les objets que vous chargez dans l'index de recherche HCL Commerce, spécifiez le médiateur d'index de recherche pour l'objet métier que vous chargez. Vous devez aussi spécifier le mappage de données pour l'objet à inclure dans l'index de recherche.

    Afin de spécifier le médiateur d'index de recherche et le mappage de données, créez une deuxième configuration de générateur d'objet métier pour l'indexation de l'objet métier. Ajoutez-la après l'élément </_config:BusinessObjectBuilder> qui ferme la configuration de générateur d'objet métier initiale. Pour la liste des médiateurs d'index de recherche disponibles, voir pour l'utilitaire de chargement de données médiateurs d'objets métier.

    Par exemple, le fragment suivant spécifie le médiateur d'index de recherche pour le chargement des catégories et des données à inclure dans l'index de recherche :
    
    <_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>
    
    Pour vous aider à configurer le mappage de données pour un objet, reportez-vous aux fichiers de configuration d'objet métier qui sont fournis par défaut en vue de leur utilisation avec la fonction de téléchargement de catalogue. Ils se trouvent dans le répertoire suivant :
    • Linuxutilities_root/ts.ear/xml/config/com.ibm.commerce.catalog/dataload
    • HCL Commerce Developerworkspace_dir\WC\xml\config\com.ibm.commerce.catalog\dataload
    Les fichiers suivants contiennent la configuration pour l'exécution de l'indexation de recherche :
    • wc-loader-AD-attribute-allowed-values.xml
    • wc-loader-catalog-entry.xml
    • wc-loader-catalog-group.xml
    • wc-loader-catalog-group-description.xml

Résultats

La configuration du générateur d'objet de table est terminée. Par exemple, le fragment de code suivant spécifie la configuration pour le chargement de rôles de membre :

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

Dans ce fragment de code, la colonne d'index à entrées uniques pour le nom permettant de définir la valeur en tant que roleName est incluse. Dans ce cas, cette propriété est facultative. La valeur de la colonne NAME a été définie précédemment dans la propriété de configuration de colonne pour la colonne Name.