Reutilizar valores asignados de atributo con el programa de utilidad de carga de datos

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.
  • Cuando se utiliza el programa de utilidad de carga de datos para volver utilizar los valores asignados, especifique el identificador de valor, para que el proceso de carga utilice el identificador de valor para identificar varias instancias del mismo valor asignado en un archivo de entrada. El programa de utilidad crea la primera instancia del valor y reutiliza el valor de las demás instancias del mismo valor asignado.

    Para reutilizar valores que ya están asignados en la base de datos, puede incluir el identificador de valor para valores existentes como el identificador para valores asignados en el archivo de entrada.

  • Al cargar datos que cambien un valor compartido especificando el identificador de valor, se actualiza el valor compartido.
  • Al intentar eliminar un valor asignado compartido por otra entrada de catálogo, no se suprime el valor asignado. El proceso de carga solo suprime la relación entre la entrada de catálogo y el atributo con el valor asignado. Otras entradas de catálogo que utilizan el mismo valor compartido no se ven afectadas.
  • Al cargar datos para reutilizar valores asignados, cualquier valor asignado que exista en la base de datos antes de que se ejecute el proceso de carga no se ve afectado. Los duplicados que existen dentro de la base de datos no se actualizan para reutilizar valores.
    Para reutilizar valores asignados y eliminar los valores duplicados, puede extraer todos los datos de valores asignados de la base de datos y volver a cargar los datos con el programa de utilidad de carga de datos. Si actualiza todos los datos de valores asignados para reutilizar valores, evite que los usuarios de negocio utilicen el Management Center para gestionar atributos con valores asignados. Cuando un usuario de negocio utiliza el Management Center para crear o cambiar valores asignados, todavía pueden crearse registros duplicados.
    • Cuando un usuario de negocio añade un atributo con valores asignados a una entrada de catálogo del Centro de gestión, en la base de datos se crea un nuevo registro para el valor asignado. Este nuevo registro se crea independientemente de si el valor asignado es un duplicado de un valor existente. Para reutilizar el valor un administrador debe cargar las relaciones y los datos de valor con el programa de utilidad de carga de datos.
    • Cuando un usuario de negocio edita un valor asignado que están reutilizando otras entradas de catálogo en el Management Center, en la base de datos se crea un nuevo registro para el valor asignado. El valor asignado no se actualiza de modo que otras entradas de catálogo que utilizan el valor compartido no se ven afectadas.
    • Cuando un usuario de negocio suprime un valor asignado que están utilizando otras entradas de catálogo en el Management Center, el proceso de guardado no suprime el valor asignado. El proceso de guardado solo suprime la relación entre la entrada de catálogo y el atributo con el valor asignado.

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.
  • Linuxutilities_root/samples/DataLoad/Catalog/AttributeDictionaryAttribute
  • HCL Commerce DeveloperWCDE_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.
  • Linuxutilities_root/ts.ear/xml/config/com.ibm.commerce.catalog
  • HCL Commerce Developerutilities_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.