Puede utilizar el programa de utilidad de carga de datos para reutilizar valores asignados para atributos cuando es necesario el mismo valor para varias entradas de catálogo. Si se reutilizan los valores asignados de atributos en todas las entradas de catálogo, puede reducir el número de valores duplicados que se crean en la base de datos.
Si el sitio normalmente utiliza atributos con valores asignados en lugar de atributos con valores predefinidos (permitidos), pueden existir muchos valores asignados duplicados para las entradas de catálogo puesto que los valores asignados no se reutilizan en las entradas de catálogo. La duplicación de valores asignados puede causar que el número de registros de las tablas de base de datos ATTRVAL y ATTRVALDESC aumente, lo que puede afectar al rendimiento de recuperar la información de atributos. Por ejemplo, muchas entradas de catálogo pueden tener el mismo atributo descriptivo Material con el mismo valor de atributo 100% algodón. Si el atributo utiliza valores asignados, el valor 100% algodón se duplica en la base de datos para cada entrada de catálogo. Si utiliza el programa de utilidad de carga de datos para cargar los valores de atributos y reutilizar valores, el programa de utilidad crea únicamente una sola instancia del valor.
Como alternativa, para evitar valores asignados duplicados y como procedimiento recomendado general para utilizar el diccionario de atributos, siempre que sea posible, utilice los atributos con valores predefinidos en lugar de atributos con valores asignados. Concretamente, intente utilizar atributos con valores predefinidos cuando varias entradas de catálogo necesitan el mismo atributo y valor. Si necesita utilizar atributos con valores asignados, considere utilizar el programa de utilidad de carga de datos para cargar la entrada de catálogo, la relación de atributos y la información de valor asignado.
Nota: Si utiliza atributos con valores asignados porque los atributos con valores asignados muestran solamente 500 valores en el Centro de gestión, como procedimiento recomendado, en su lugar utilice varios atributos con valores predefinidos. Por ejemplo, cree atributos distintos con valores predefinidos para su uso dentro de categorías específicas. Por ejemplo, puede crear el atributo
Material para cada categoría. Estos atributos puede tener todos el mismo nombre
Material, pero tienen distintos identificadores exclusivos, como por ejemplo
material-shirts,
material-shorts y
material-paints. Si se separan los valores predefinidos en varias instancias de un atributo, el número de valores de cada atributo se reduce y los usuarios de empresa pueden localizar con mayor facilidad valores específicos. Para obtener más información, consulte
Prácticas recomendadas sobre el uso del diccionario de atributos.
Cambios de comportamiento al reutilizar valores asignados
Con el programa de utilidad de carga de datos habilitado para reutilizar los valores asignados, el comportamiento del proceso de carga es diferente al crear, cambiar o eliminar valores asignados.
Propiedad de configuración para habilitar e inhabilitar la reutilización de valores asignados
Para habilitar o inhabilitar la reutilización de valores asignados, está disponible una nueva propiedad de configuración,
shareAssignedAttributeValues
, para utilizarla con el mediador de objetos de negocio
com.ibm.commerce.catalog.dataload.mediator.CatalogEntryAttributeDictionaryAttributeMediator. Puede establecer los siguientes valores para esta propiedad:
- true
- Los valores asignados para los atributos se reutilizan en las entradas de catálogo. Este valor es el valor predeterminado.
- false
- Los valores no se reutilizan en las entradas de catálogo. Si no desea reutilizar valores asignados, puede establecer este valor de propiedad en el archivo de configuración de objeto de negocio al cargar relaciones de entradas de catálogo y atributos con valores asignados. Cuando esta propiedad se establece en false y el proceso de carga trata de utilizar un identificador de valor existente para otra entrada de categoría, el proceso de carga genera una excepción.
Para ayudar a mostrar cómo se configura esta propiedad, se actualiza el archivo de configuración de ejemplo
wc-loader-catalog-entry-AD-attribute-relationship.xml en el siguiente directorio para incluir la propiedad. Puede utilizar este archivo cuando carga sus propios datos.
utilities_root/samples/DataLoad/Catalog/AttributeDictionaryAttribute
WCDE_installdir\samples\DataLoad\Catalog\AttributeDictionaryAttribute
El siguiente código muestra cómo configurar esta propiedad.
<_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>
Otra nueva propiedad de configuración está disponible para controlar el comportamiento cuando un usuario de negocio actualiza o suprime un valor asignado que se reutiliza en el Management Center. Esta propiedad de configuración de KeepAssignedAttributeValueLocal
está habilitada de forma predeterminada y garantiza que cuando los usuarios de negocio actualizan o suprimen un valor asignado en el Management Center, no afecte a otras entradas de catálogo que reutilizan el mismo valor asignado.
Esta propiedad de configuración de
KeepAssignedAttributeValueLocal
se define dentro del archivo
wc-business-object-mediator.xml para configurar los mediadores de objetos de negocio.
utilities_root/ts.ear/xml/config/com.ibm.commerce.catalog
utilities_rootts.ear/xml/config/com.ibm.commerce.catalog
El siguiente código muestra esta configuración, que se establece para el mediador de objetos de negocio
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>
Puede establecer los siguientes valores para la propiedad:
- true
- Cuando un usuario de negocio actualiza un valor asignado para una entrada de catálogo en el Management Center, el proceso de guardado crea un nuevo valor en la base de datos para la entrada de catálogo. Las entradas de catálogo que utilizan el valor asignado inicial no se ven afectadas. Cuando un usuario de negocio suprime un valor asignado de una entrada de catálogo, el usuario suprime solamente la relación entre el valor asignado y la entrada de catálogo. si el valor asignado lo utilizan otras entradas de catálogo, el valor no se suprime y las demás entradas de catálogo que utilizan el valor no se ven afectadas. Este valor es el valor predeterminado.
- false
- Cuando un usuario de negocio actualiza un valor asignado para una entrada de catálogo en el Management Center, el proceso de guardado actualiza el valor asignado. El valor se actualiza para todas las entradas de catálogo que comparten el valor. Cuando un usuario de negocio suprime un valor asignado de una entrada de catálogo, el usuario suprime el valor de todas las entradas de catálogo que han compartido el valor.
Nota: Antes de cambiar el valor de esta propiedad por false, considere las siguientes limitaciones para cuando
KeepAssignedAttributeValueLocal
se establece en
"false"
:
- No hay indicador visual en el Management Center de que un valor asignado está siendo compartido por otras entradas de catálogo.
- Es posible que los cambios no se visualicen inmediatamente para todas las entradas de catálogo que comparten un valor cuando un usuario de negocio actualiza un valor asignado para una entrada de catálogo en el Management Center. Es posible que los usuarios de negocio necesiten volver a cargar todas las vistas de propiedades de entradas de catálogo abiertas para ver los cambios.
- El índice delta de búsqueda de HCL Commerce reconstruye el índice solamente para la entrada de catálogo que el usuario actualiza cuando el usuario de negocio actualiza el valor asignado para una entrada de catálogo. Un administrador necesita ejecutar el índice completo para reconstruir el índice para las demás entradas de catálogo que utilizan el valor asignado actualizado para que los cambios se visualicen en el escaparate.
Debido a las limitaciones anteriores, se recomienda mantener la propiedad
KeepAssignedAttributeValueLocal
establecida en
"true"
. Si un valor asignado compartido por varias entradas de catálogo necesita actualizarse, utilice el programa de utilidad de carga de datos para cargar los cambios. Un administrador necesita actualizar el valor únicamente para una sola entrada de catálogo para actualizar el valor para todas las entradas de catálogo que utilizan el valor. Por ejemplo, el siguiente contenido del archivo CSV actualiza un valor asignado para varias entradas de catálogo. Si varias entradas de catálogo comparten el valor asignado inicial
"100% Cotton"
, el siguiente ejemplo actualiza el valor para que sea
"90% Cotton"
para la entrada de catálogo especificada y las demás entradas de catálogo que utilizan el valor.
PartNumber |
AttributeIdentifier |
ValueIdentifier |
Valor |
Usage |
Secuencia |
Shirt |
Material |
Cotton |
90% Cotton |
Descriptive |
1 |
Ejemplo
Antes de habilitar el programa de utilidad de carga de datos para reutilizar valores asignados, al cargar las siguientes relaciones de entradas de catálogo y atributos con valores asignados se cargan duplicados de los valores asignados.
PartNumber |
AttributeIdentifier |
ValueIdentifier |
Valor |
Usage |
Secuencia |
Shirt |
Material |
|
100% Cotton |
Descriptive |
1 |
Pants |
Material |
|
100% Cotton |
Descriptive |
1 |
Pantalón corto |
Material |
|
100% Cotton |
Descriptive |
1 |
Cuando se cargan estos datos en la base de datos, cada entrada de catálogo utiliza la misma información de valor de atributo y atributo, pero para cada valor deben crearse distintos registros de valor de atributo. Antes de habilitar la reutilización de valores, normalmente no incluya ValueIdentifier puesto que el proceso de carga crea un nuevo valor asignado para cada fila. Puede ver estos registros ejecutando la siguiente sentencia SQL.select catentry_id,attr_id,attrval_id,usage,sequence from catentryattr
where attr_id in (select attr_id from attr where identifier='Material')
Donde Material
es el valor de la columna AttributeIdentifier
. La siguiente tabla muestra la información que se devuelve para la relación entre entrada de catálogo y atributo. Estos registros incluyen un ATTRVAL_ID distinto para cada relación entre entrada de catálogos y atributo aunque el valor real, 100% Cotton
sea el mismo.
CATENTRY_ID |
ATTR_ID |
ATTRVAL_ID |
Usage |
Secuencia |
19801 |
7000000000000000451 |
7000000000000008301 |
'2' |
1 |
19802 |
7000000000000000451 |
7000000000000008302 |
'2' |
1 |
19803 |
7000000000000000451 |
7000000000000008303 |
'2' |
1 |
Los diferentes registros para la misma información de atributo y valor asignado incluye registros de relaciones de atributo y valor asignado duplicadas en la tabla ATTRVAL. Puede ver estos registros ejecutando la siguiente sentencia SQL:
select attrval_id, attr_id, identifier, valusage from attrval
where attr_id in (select attr_id from attr where identifier='Material')
La siguiente tabla muestra la información de se devuelve para estas relaciones duplicadas.
ATTRVAL_ID |
ATTR_ID |
IDENTIFIER |
VALUSAGE |
7000000000000008301 |
7000000000000000451 |
Cotton |
NULL |
7000000000000008302 |
7000000000000000451 |
Cotton1 |
NULL |
7000000000000008303 |
7000000000000000451 |
Cotton2 |
NULL |
Los registros duplicados de valor asignado se almacenan en las tablas ATTRVALDESC, que puede ver ejecutando la siguiente sentencia SQL.
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 |
Valor |
7000000000000008301 |
7000000000000000451 |
100% Cotton |
7000000000000008302 |
7000000000000000451 |
100% Cotton |
7000000000000008303 |
7000000000000000451 |
100% Cotton |
Cuando el programa de utilidad de carga de datos está habilitado para reutilizar valores asignados, los mismos datos se almacenan en la base de datos de forma distinta. En el archivo de entrada puede incluir el mismo identificador de valor para entradas de catálogo diferentes sin encontrar una excepción.
PartNumber |
AttributeIdentifier |
ValueIdentifier |
Valor |
Usage |
Secuencia |
Shirt |
Material |
Cotton |
100% Cotton |
Descriptive |
1 |
Pants |
Material |
Cotton |
100% Cotton |
Descriptive |
1 |
Pantalón corto |
Material |
Cotton |
100% Cotton |
Descriptive |
1 |
Cuando los datos se cargan, la relación entre entrada de catálogo y atributo puede apuntar al mismo valor asignado. Puede ver este cambio ejecutando la siguiente sentencia SQL.
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 |
Usage |
Secuencia |
19801 |
7000000000000000451 |
7000000000000008301 |
'2' |
1 |
19802 |
7000000000000000451 |
7000000000000008301 |
'2' |
1 |
19803 |
7000000000000000451 |
7000000000000008301 |
'2' |
1 |
La tabla ATTRVAL ahora incluye únicamente un solo registro para la relación entre atributo y valor de atributo y la tabla ATTRVALDESC incluye únicamente un solo registro para el valor asignado.