Réutilisation de valeurs d'attribut affectées avec l'utilitaire de chargement de données

Vous pouvez vous servir de l'utilitaire de chargement de données afin de réutiliser des valeurs d'attribut affectées lorsque la même valeur est nécessaire pour plusieurs entrées de catalogue. En réutilisant des valeurs d'attribut affectées dans plusieurs entrées de catalogue, vous pouvez réduire le nombre de valeurs en double créées dans la base de données.

Si votre site utilise généralement des attributs associés à des valeurs affectées au lieu d'attributs associés à des valeurs (autorisées) prédéfinies, de nombreuses valeurs affectées en double peuvent exister pour des entrées de catalogue car les valeurs affectées ne sont pas réutilisées dans les entrées de catalogue. La duplication des valeurs affectées peut générer un nombre élevé d'enregistrements dans les tables de base de données ATTRVAL et ATTRVALDESC, ce qui peut avoir un impact sur les performances d'extraction des informations d'attribut. Par exemple, de nombreuses entrées de catalogue peuvent être associées au même attribut descriptif Material, avec la même valeur d'attribut 100% Cotton. Si l'attribut utilise des valeurs affectées, la valeur 100% Cotton est dupliquée dans la base de données pour chaque entrée de catalogue. Si vous vous servez de l'utilitaire de chargement de données pour charger les valeurs d'attribut et les réutiliser, l'utilitaire crée une seule instance de la valeur.

Pour éviter la duplication des valeurs affectées et comme meilleure pratique pour l'utilisation du dictionnaire d'attributs, vous pouvez aussi utiliser des attributs associés à des valeurs prédéfinies à la place d'attributs associés à des valeurs affectés, chaque fois que possible. En particulier, essayez d'utiliser des attributs associés à des valeurs prédéfinies lorsque plusieurs entrées de catalogue requièrent le même attribut et la même valeur. Si vous devez utiliser des attributs associés à des valeurs affectées, envisagez de vous servir de l'utilitaire de chargement de données pour charger les informations d'entrée de catalogue, de relations d'attribut et les informations de valeurs affectées.
Remarque : si vous utilisez des attributs associés à des valeurs affectées car les attributs associés à des valeurs prédéfinies n'affichent que 500 valeurs dans le centre de gestion, il est recommandé d'utiliser plusieurs attributs associés à des valeurs prédéfinies à la place. Par exemple, créez des attributs distincts associés à des valeurs prédéfinies que vous pouvez utiliser dans des catégories spécifiques. Ainsi, vous pouvez créer un attribut Material pour chaque catégorie. Ces attributs peuvent tous porter le nom Material, mais posséder des identificateurs uniques différents, par exemple material-shirts, material-shorts et material-pants. Si vous séparez les valeurs prédéfinies en plusieurs instances d'un attribut, le nombre de valeurs pour chaque attribut est réduit et les professionnels peuvent rechercher des valeurs spécifiques plus facilement. Pour plus d'informations, voir Conseils d'utilisation du dictionnaire d'attributs.

Modification du comportement lors de la réutilisation de valeurs affectées

Si l'utilitaire de chargement de données est activé pour réutiliser des valeurs affectées, le comportement du processus de chargement est différent lorsque vous créez, changez ou supprimez des valeurs affectées.
  • Lorsque vous vous servez de l'utilitaire de chargement de données pour réutiliser des valeurs affectées, spécifiez l'identificateur de valeur de sorte que le processus de chargement l'utilise pour identifier plusieurs instances de la même valeur affectée dans un fichier d'entrée. L'utilitaire crée la première instance de la valeur et réutilise cette valeur pour toutes les autres instances de la même valeur affectée.

    Pour réutiliser des valeurs qui se trouvent déjà dans la base de données, vous pouvez inclure l'identificateur de valeur pour des valeurs existantes comme identificateur pour des valeurs affectées dans le fichier d'entrée.

  • Lorsque vous chargez des données qui changent une valeur partagée en spécifiant l'identificateur de valeur, la valeur partagée est mise à jour.
  • Lorsque vous tentez de supprimer une valeur affectée qui est partagée par une autre entrée de catalogue, la valeur affectée n'est pas supprimée. Le processus de chargement ne supprime que la relation entre l'entrée de catalogue et l'attribut associé à la valeur affectée. Les autres entrées de catalogue qui utilisent la même valeur partagée ne sont pas touchées.
  • Lorsque vous chargez des données pour réutiliser des valeurs affectées, les valeurs affectées qui existent dans votre base de données avant l'exécution du processus de chargement ne sont pas touchées. Les doublons qui existent dans la base de données ne sont pas mis à jour pour la réutilisation des valeurs.
    Pour réutiliser des valeurs affectées et supprimer les valeurs en double, vous pouvez extraire toutes les données de valeur affectée de la base de données et recharger les données avec l'utilitaire de chargement de données. Si vous mettez à jour les données de valeur affectée, évitez que des professionnels n'utilisent le Management Center pour gérer des attributs associés à des valeurs affectées. En effet, lorsqu'un professionnel utilise le Management Center pour créer ou changer des valeurs affectées, des enregistrements en double peuvent être créés.
    • Lorsqu'un professionnel ajoute un attribut associé à une valeur affectée à une entrée de catalogue dans le centre de gestion, un nouvel enregistrement pour la valeur affectée est créé dans la base de données. Ce nouvel enregistrement est créé que la valeur affectée soit un doublon d'une valeur existante ou non. Pour réutiliser une valeur, un administrateur doit charger les relations et les données de valeur avec l'utilitaire de chargement de données.
    • Lorsqu'un professionnel édite une valeur affectée qui est utilisée par d'autres entrées de catalogue dans le Management Center, un nouvel enregistrement pour la valeur affectée est créé dans la base de données. La valeur partagée n'est pas mise à jour ; par conséquent, les entrées de catalogue qui utilisent la valeur partagée ne sont pas touchées.
    • Lorsqu'un professionnel supprime une valeur affectée qui est utilisée par d'autres entrées de catalogue dans le Management Center, le processus de sauvegarde ne supprime pas la valeur affectée. Il ne supprime que la relation entre l'entrée de catalogue et l'attribut associé à la valeur affectée.

Propriété de configuration permettant d'activer et de désactiver la réutilisation des valeurs affectées

Pour activer ou désactiver la réutilisation de valeurs affectées, une nouvelle propriété de configuration, shareAssignedAttributeValues, est disponible et peut être utilisée avec le médiateur d'objet métier com.ibm.commerce.catalog.dataload.mediator.CatalogEntryAttributeDictionaryAttributeMediator. Vous pouvez définir les valeurs suivantes pour cette propriété :
true
Les valeurs affectées pour les attributs sont réutilisées dans les entrées de catalogue. Il s'agit de la valeur par défaut.
false
Les valeurs ne sont pas réutilisées dans les entrées de catalogue. Si vous ne voulez pas réutiliser les valeurs affectées, vous pouvez définir cette valeur de propriété dans le fichier de configuration d'objet métier lorsque vous chargez les relations d'entée de catalogue et d'attribut associé à une valeur affectée. Lorsque cette propriété a pour valeur false et que le processus de chargement tente d'utiliser un identificateur de valeur existant pour une autre entrée de catalogue, le processus de chargement émet une exception.
Pour expliquer comment configurer cette propriété, l'exemple de fichier de configuration wc-loader-catalog-entry-AD-attribute-relationship.xml dans le répertoire ci-dessous a été mis à jour afin d'inclure la propriété. Vous pouvez utiliser ce fichier lorsque vous chargez vos propres données.
  • Linuxutilities_root/samples/DataLoad/Catalog/AttributeDictionaryAttribute
  • HCL Commerce DeveloperWCDE_installdir\samples\DataLoad\Catalog\AttributeDictionaryAttribute
Le code ci-dessous illustre la configuration de cette propriété.
<_config:BusinessObjectMediator 
  className="com.ibm.commerce.catalog.dataload.mediator.CatalogEntryAttributeDictionaryAttributeMediator" 
  componentId="com.ibm.commerce.catalog" >
  <_config:property name="supportMultipleValuesForADAttributes" value="true" />
  <_config:property name="attributeValueValidation" value="false" />
  <_config:property name="shareAssignedAttributeValues" value="true" />
</_config:BusinessObjectMediator>

Une autre propriété de configuration est disponible et permet de contrôler le comportement lorsqu'un professionnel met à jour ou supprime une valeur affectée qui est réutilisée dans le Management Center. Cette propriété de configuration, KeepAssignedAttributeValueLocal, est activée par défaut et garantit que, lorsque des professionnels mettent à jour ou suppriment une valeur affectée dans le Management Center, les autres entrées de catégorie qui réutilisent la même valeur affectée ne sont pas touchées.

La propriété de configuration KeepAssignedAttributeValueLocal est définie dans le fichier wc-business-object-mediator.xml pour la configuration des médiateurs d'objet métier.
  • Linuxutilities_root/ts.ear/xml/config/com.ibm.commerce.catalog
  • HCL Commerce Developerutilities_rootts.ear/xml/config/com.ibm.commerce.catalog
Le code ci-dessous illustre cette configuration, qui est définie pour le médiateur d'objet métier CatalogEntryAttributeDictionaryAttributeMediator.
<_config:mediator
  interfaceName="com.ibm.commerce.foundation.server.services.dataaccess.bom.mediator.
  ChangeBusinessObjectMediator"
  className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.
  ChangeCatalogEntryMediator" 
  updateAccessProfile="IBM_Admin_CatalogEntryUpdate">
  <_config:mediator-properties>
    <_config:mediator-property name="Attributes/SupportMultipleValuesForADAttributes" 
     value="true"/>
  <_config:mediator-property name="Attributes/KeepAssignedAttributeValueLocal" 
     value="true"/>
  </_config:mediator-properties>
  <_config:part-mediator interfaceName="com.ibm.commerce.foundation.server.services.
     dataaccess.bom.mediator.ChangeBusinessObjectPartMediator">
  <_config:part-mediator-implementation 
    className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.
    mediator.ChangeCatalogEntrySEOPropertiesMediator" />
  <_config:part-mediator-implementation 
    className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.
    ChangeCatalogEntrySEOURLMediator" />
  <_config:part-mediator-implementation 
    className="com.ibm.commerce.catalog.facade.server.services.dataaccess.bom.mediator.
    ChangeCatalogEntryDescriptionOverrideMediator" 
    updateAccessProfile="IBM_Admin_CatalogEntryDescriptionOverrideUpdate" />
  </_config:part-mediator>
</_config:mediator>
Vous pouvez définir les valeurs suivantes pour la propriété :
true
Lorsqu'un professionnel met à jour une valeur affectée pour une entrée de catalogue dans le Management Center, le processus de sauvegarde crée une valeur dans la base de données pour l'entrée de catalogue. Les entrées de catalogue qui utilisent la valeur affectée initiale ne sont pas touchées. Lorsqu'un professionnel supprime une valeur affectée d'une entrée de catalogue, il ne supprime que la relation entre la valeur affectée et l'entrée de catalogue. Si la valeur affectée est utilisée par d'autres entrées de catalogue, la valeur n'est pas supprimée et les autres entrées de catalogue qui utilisent la valeur ne sont pas touchées. Il s'agit de la valeur par défaut.
false
Lorsqu'un professionnel met à jour une valeur affectée pour une entrée de catalogue dans le Management Center, le processus de sauvegarde met à jour la valeur affectée. La valeur est mise à jour pour toutes les entrées de catalogue qui la partagent. Lorsqu'un professionnel supprime une valeur affectée d'une entrée de catalogue, il supprime la valeur dans toutes les entrées de catalogue qui la partagent.
Remarque : avant de changer la valeur de cette propriété pour définir la valeur false, prenez en compte les limitations suivantes qui existent lorsque KeepAssignedAttributeValueLocal a pour valeur "false" :
  • Il n'existe pas d'indicateur visuel dans le Management Center qui signale qu'une valeur affectée est partagée par d'autres entrées de catalogue.
  • Il se peut que les modifications ne soient pas affichées immédiatement pour toutes les entrées de catalogue qui partagent une valeur lorsqu'un professionnel met à jour une valeur affectée pour une entrée de catalogue dans le Management Center. Les professionnels peuvent avoir besoin de recharger les vues des propriétés d'entrée de catalogue ouvertes pour voir les modifications.
  • L'index delta de recherche HCL Commerce régénère l'index uniquement pour l'entrée de catalogue que l'utilisateur met à jour lorsqu'il met à jour la valeur affectée pour une entrée de catalogue. Un administrateur doit exécuter l'index complet afin de régénérer l'index pour les autres entrées de catalogue qui utilisent la valeur affectée mise à jour de sorte que les modifications apparaissent dans la boutique en ligne.
En raison des limitations énoncées précédemment, il est recommandé de conserver la valeur "true" pour la propriété KeepAssignedAttributeValueLocal. Si une valeur affectée qui est partagée par plusieurs entrées de catalogue doit être mise à jour, servez-vous de l'utilitaire de chargement de données pour charger les modifications. Il suffit à un administrateur de mettre à jour la valeur pour une seule entrée de catalogue afin de mettre à jour la valeur pour toutes les entrées de catalogue qui utilisent la valeur. Par exemple, le contenu de fichier CSV ci-après met à jour une valeur affectée pour plusieurs entrées de catalogue. Si la valeur affectée à l'origine, "100% Cotton", est partagée par plusieurs entrées de catalogue, l'exemple ci-dessous met à jour la valeur avec la chaîne "90% Cotton" pour l'entrée de catalogue spécifiée et toutes les autres entrées de catalogue qui utilisent la valeur.
PartNumber AttributeIdentifier ValueIdentifier Valeur Utilisation Sequence
Shirt Matériel Cotton 90% Cotton Descriptif 1

Exemple

Si l'utilitaire de chargement de données n'est pas activé pour la réutilisation des valeurs affectées, le chargement des relations d'entrée de catalogue et d'attribut associé à une valeur affectée ci-après charge les doublons des valeurs affectées.
PartNumber AttributeIdentifier ValueIdentifier Valeur Utilisation Sequence
Shirt Matériel 100% Cotton Descriptif 1
Pantalons Matériel 100% Cotton Descriptif 1
Shorts Matériel 100% Cotton Descriptif 1
Lorsque vous chargez ces données dans la base de données, chaque entrée de catalogue utilise les mêmes informations d'attribut et de valeur d'attribut, mais différents enregistrements de valeur d'attribut doivent être créés pour chaque valeur. Normalement, avant d'activer la réutilisation des valeurs, vous n'incluez pas la valeur ValueIdentifier car le processus de chargement crée une nouvelle valeur affectée pour chaque ligne. Vous pouvez afficher ces enregistrements en exécutant l'instruction SQL suivante :
select catentry_id,attr_id,attrval_id,usage,sequence from catentryattr 
where attr_id in (select attr_id from attr where identifier='Material')
Material est la valeur de la colonne AttributeIdentifier. Le tableau ci-dessous répertorie les informations renvoyées pour la relation d'entrée de catalogue et d'attribut. Ces enregistrements incluent un paramètre ATTRVAL_ID différent pour chaque relation d'entrée de catalogue et d'attribut même si la valeur réelle, 100% Cotton, est la même.
CATENTRY_ID ATTR_ID ATTRVAL_ID Utilisation Séquence
19801 7000000000000000451 7000000000000008301 '2' 1
19802 7000000000000000451 7000000000000008302 '2' 1
19803 7000000000000000451 7000000000000008303 '2' 1
Les différents enregistrements pour les mêmes informations d'attribut et de valeur affectée incluent des enregistrements de relation d'attribut et de valeur affectée en double dans le tableau ATTRVAL. Vous pouvez afficher ces enregistrements en exécutant l'instruction SQL suivante :
select attrval_id, attr_id, identifier, valusage from attrval 
where attr_id in (select attr_id from attr where identifier='Material')
Le tableau ci-dessous répertorie les informations renvoyées pour ces relations en double.
ATTRVAL_ID ATTR_ID IDENTIFIER VALUSAGE
7000000000000008301 7000000000000000451 Cotton NULL
7000000000000008302 7000000000000000451 Cotton1 NULL
7000000000000008303 7000000000000000451 Cotton2 NULL
Les enregistrements de valeur affectée en double sont stockés dans les tables ATTRVALDESC que vous pouvez afficher en exécutant l'instruction SQL suivante :
select attrval_id, attr_Id, value from attrvaldesc 
where attr_id in (select attr_id from attr where identifier='attribute_identifier')
ATTRVAL_ID ATTR_ID Valeur
7000000000000008301 7000000000000000451 100% Cotton
7000000000000008302 7000000000000000451 100% Cotton
7000000000000008303 7000000000000000451 100% Cotton
Lorsque l'utilitaire de données de chargement est activé pour la réutilisation de valeurs affectées, les mêmes données sont stockées dans la base de données différemment. Dans votre fichier d'entrée, vous pouvez inclure le même identificateur de valeur pour différentes entrées de catalogue sans rencontrer d'exception.
PartNumber AttributeIdentifier ValueIdentifier Valeur Utilisation Sequence
Shirt Matériel Cotton 100% Cotton Descriptif 1
Pantalons Matériel Cotton 100% Cotton Descriptif 1
Shorts Matériel Cotton 100% Cotton Descriptif 1
Lorsque les données sont chargées, la relation d'entrée de catalogue et d'attribut peut désigner la même valeur affectée. Vous pouvez afficher cette modification en exécutant l'instruction SQL suivante :
select catentry_id,attr_id,attrval_id,usage,sequence from catentryattr 
where attr_id in (select attr_id from attr where identifier='AssignedValueAttr')
CATENTRY_ID ATTR_ID ATTRVAL_ID Utilisation Séquence
19801 7000000000000000451 7000000000000008301 '2' 1
19802 7000000000000000451 7000000000000008301 '2' 1
19803 7000000000000000451 7000000000000008301 '2' 1
Désormais, la table ATTRVAL comporte un seul enregistrement pour la relation d'attribut et de valeur d'attribut et la table ATTRVALDESC comporte un seul enregistrement pour la valeur affectée.