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.
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.
utilities_root/samples/DataLoad/Catalog/AttributeDictionaryAttribute
WCDE_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.
utilities_root/ts.ear/xml/config/com.ibm.commerce.catalog
utilities_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')
Où 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.