SAP Hybris Commerce - 初始化参考属性的默认值
Posted
技术标签:
【中文标题】SAP Hybris Commerce - 初始化参考属性的默认值【英文标题】:SAP Hybris Commerce - Initialize default value for a reference attribute 【发布时间】:2020-11-29 21:00:28 【问题描述】:我正在开发 SAP Commerce (Hybris) 1811,我正在尝试通过引用类型 ProductSales
来扩展 Product
类型,该类型将包含产品销售数据并通过 cronjob 填充.
但是,我找不到为所有新产品和现有产品初始化这种新类型的正确方法。即使在系统更新后,此引用也未初始化(空)。
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
表中,而是作为参考,是因为我不希望在目录同步期间同步这些数据。
为所有产品初始化这种新类型的最佳方法是什么?
感谢任何提示。
【问题讨论】:
【参考方案1】:最后,我通过在 cronjob 本身中创建缺失的引用解决了这个问题。我只在暂存目录中创建此包装器对象,以便稍后同步。
顺便说一下,我发现除了修改同步作业之外,创建一个包装对象并在目录之间保持其引用同步是 SAP 推荐的解决方案。
【讨论】:
【参考方案2】:您可以检查 ProductSales typeCode 。因为它可能以前被使用过
【讨论】:
我已经检查过了,类型代码是唯一的。该类型已成功创建和部署,我可以手动创建它,所以这不是真正的问题。问题是如何为所有产品初始化这种类型。 @fugasjunior -The question is how to initialize this type for all products.
- initialize
是什么意思?你的意思是这个字段应该用数据库中的一些静态值(即所有产品的相同值)初始化吗?如果是,您希望该字段使用什么值进行初始化?【参考方案3】:
我重新阅读了您的问题并创建了一个新答案。
我认为将属性添加到 Product 会更容易。之后,导入下面的 impex 以禁用您不想同步的属性的同步。您需要将“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
【讨论】:
感谢您的回答。但是,这不会使产品在每次通过填充这些值的 cronjob 之后在 Backoffice 中看起来不同步吗?以上是关于SAP Hybris Commerce - 初始化参考属性的默认值的主要内容,如果未能解决你的问题,请参考以下文章
SAP Hybris Commerce product读取的调试截图
在SAP Hybris commerce Storefront里购物下单
MacOS Monterey 和 SAP Commerce / Hybris 1905:无法启动 hybrisserver.sh
SAP CRM WebClient UI和Hybris Commerce里的跨组件跳转