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 填充.

但是,我找不到为所有新产品和现有产品初始化这种新类型的正确方法。即使在系统更新后,此引用也未初始化(空)。

ProductProductSales 之间应该存在一对一的关系。

我想初始化这个引用类型:

    在系统更新期间对所有尚无参考的现有产品进行更新 为所有新创建的产品创建一个实例

我的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里的跨组件跳转

SAP Commerce(原Hybris)的订单处理框架和SAP CRM One Order框架

SAP Hybris Commerce,CRM和C4C的登录语言选择