SAP Hybris Commerce - инициализация значения по умолчанию для ссылочного атрибута
Я работаю над SAP Commerce (Hybris) 1811 и пытаюсь расширить Product
тип со ссылкой на тип ProductSales
, который будет содержать данные о продажах продуктов и заполняться через cronjob.
Однако я не могу найти правильный способ инициализировать этот новый тип для всех новых и существующих продуктов. Даже после обновления системы эта ссылка не инициализирована (пуста).
Должно быть соотношение 1: 1 между Product
а также ProductSales
.
Я бы хотел, чтобы этот ссылочный тип был инициализирован:
- Во время обновления системы для всех существующих продуктов, на которые еще нет ссылки
- Создайте экземпляр для всех вновь созданных продуктов
Мой 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