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
- Ouvrez votre configuration d'objet métier pour l'éditer.
-
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>. -
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> -
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
deleteValuepour déterminer comment utiliser cet attribut. - deleteValue
- Indicateur de suppression. Si les données dans le nom de colonne spécifié par l'indicateur
deleteKeycorrespondent à la valeurdeleteValue, 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> -
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
valueFrompris 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
valueFromestInputDatamais cette valeur est omise dans les données d'entrée. defaultValueFrom- Indique comment résoudre
defaultValue. Voici les valeursdefaultValueFromprises en charge :InputData: Indique quedefaultValueprovient deInputData.Fixed: Indique quedefaultValueest une valeur fixe.BusinessContext:defaultValueprovient du contexte métier.CurrentTimestamp:defaultValueest 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> - 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. - 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
valueFromsuivants 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> -
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> - 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 :
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
Résultats
<_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.