SAP Hybris Commerce - инициализация значения по умолчанию для ссылочного атрибута

Я работаю над SAP Commerce (Hybris) 1811 и пытаюсь расширить Product тип со ссылкой на тип ProductSales, который будет содержать данные о продажах продуктов и заполняться через cronjob.

Однако я не могу найти правильный способ инициализировать этот новый тип для всех новых и существующих продуктов. Даже после обновления системы эта ссылка не инициализирована (пуста).

Должно быть соотношение 1: 1 между Product а также ProductSales.

Я бы хотел, чтобы этот ссылочный тип был инициализирован:

  1. Во время обновления системы для всех существующих продуктов, на которые еще нет ссылки
  2. Создайте экземпляр для всех вновь созданных продуктов

Мой items.xml определение:

<itemtype code="ProductSales" autocreate="true" generate="true" >
    <deployment table="productsales" typecode="15011" />
    <attributes>
        <attribute qualifier="unitsSold" type="localized:java.lang.Long">
            <description>Amount of units sold</description>
            <persistence type="property"/>
        </attribute>
        <attribute qualifier="ordersCount" type="localized:java.lang.Long">
            <description>Count of how many orders contained this product</description>
            <persistence type="property"/>
        </attribute>
    </attributes>
</itemtype>

<itemtype code="Product" autocreate="false" generate="false">
   ...
    <attribute qualifier="productSales" type="ProductSales">
        <description>Product Sales</description>
        <modifiers partof="true" optional="false" initial="true" />
        <persistence type="property"/>
    </attribute>
   ...
</itemtype>

Причина, по которой я не храню данные непосредственно в Product table, но для справки, я не хочу, чтобы эти данные синхронизировались во время синхронизации каталога.

Как лучше всего инициализировать этот новый тип для всех продуктов?

Спасибо за любые советы.

3 ответа

Решение

В конце концов, я решил эту проблему, создав недостающие ссылки в самом cronjob. Я создаю этот объект-оболочку только в поэтапном каталоге, чтобы синхронизировать его позже.

Между прочим, я обнаружил, что помимо изменения задания синхронизации, SAP рекомендует создание объекта-оболочки и синхронизацию его ссылки между каталогами.

Вы можете проверить ProductSales typeCode, потому что он, возможно, использовался раньше

Я перечитал ваш вопрос и создал новый ответ.

Думаю, будет проще, если вы просто добавите атрибуты в Product. После этого импортируйте импекс ниже, чтобы отключить синхронизацию для атрибутов, которые вы не хотите синхронизировать. Вам нужно будет заменить "MySyncJob" на код, который используется для задания синхронизации.

INSERT_UPDATE SyncAttributeDescriptorConfig;syncJob(code)[unique=true][path-delimiter=!];attributeDescriptor(enclosingType(code), qualifier)[unique=true];includedInSync;copyByValue
;MySyncJob;Product:unitsSold;false;false
;MySyncJob;Product:ordersCount;false;false
Другие вопросы по тегам