同步不会覆盖目标目录更改

2020-09-18 13:58发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个业务需求,我们需要自定义同步过程。 我们遵循以下步骤:** https://wiki.hybris.com/display/forum/Customize+sync+process+to+modify+attribute+copy+processing**。

如果我们对"源"目录进行更改,那么一切都会正常运行。 但是只要目标目录中发生更改并且我们运行同步,目标目录就不会被源目录覆盖。

我们在定制同步时遵循的步骤是:

  1. 创建了一个CustomSyncJob项,扩展了'CatalogVersionSyncJob'

  2. 扩展了CustomSyncJob的生成Jalo,即GeneratedCustomSyncJob。

  3. 重写createCopyContext()方法以调用我们自己的称为" MyCopyContext"的副本上下文。

  4. 'MyCopyContext'类具有一个构造函数,该构造函数调用super()以及从SyncJob获取国家/地区的逻辑。

  5. 在同一类'MyCopyContext'中,我们将重写finishCopying()方法,该方法具有自定义逻辑,可以根据在步骤4中获取的国家/地区来修改目标项目。

在通过OOTB Hybris同步进行调试时,我们分析了每次进行同步时都会创建调度媒体,并且基于此" CatalogVersionSyncScheduleMedia",同步知道在目标目录中要更新/删除的内容。

问题是,当仅目标目录发生更改时,计划介质没有应有的这些更改的条目,因此目标目录中没有任何更改。

我不知道这是一个限制,如果我们自定义同步过程,或者我们需要重写任何其他方法才能使它工作。

我们还通过普通的CronJob运行SyncJob,这些CronJob获取SyncJob并启动它们。 但是在启动之前,我们将SyncJob的日程表媒体设置为" null",以便每次运行时都会创建一个新的日程表媒体。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我们有一个业务需求,我们需要自定义同步过程。 我们遵循以下步骤:** https://wiki.hybris.com/display/forum/Customize+sync+process+to+modify+attribute+copy+processing**。

如果我们对"源"目录进行更改,那么一切都会正常运行。 但是只要目标目录中发生更改并且我们运行同步,目标目录就不会被源目录覆盖。

我们在定制同步时遵循的步骤是:

  1. 创建了一个CustomSyncJob项,扩展了'CatalogVersionSyncJob'

  2. 扩展了CustomSyncJob的生成Jalo,即GeneratedCustomSyncJob。

  3. 重写createCopyContext()方法以调用我们自己的称为" MyCopyContext"的副本上下文。

  4. 'MyCopyContext'类具有一个构造函数,该构造函数调用super()以及从SyncJob获取国家/地区的逻辑。

  5. 在同一类'MyCopyContext'中,我们将重写finishCopying()方法,该方法具有自定义逻辑,可以根据在步骤4中获取的国家/地区来修改目标项目。

在通过OOTB Hybris同步进行调试时,我们分析了每次进行同步时都会创建调度媒体,并且基于此" CatalogVersionSyncScheduleMedia",同步知道在目标目录中要更新/删除的内容。

问题是,当仅目标目录发生更改时,计划介质没有应有的这些更改的条目,因此目标目录中没有任何更改。

我不知道这是一个限制,如果我们自定义同步过程,或者我们需要重写任何其他方法才能使它工作。

我们还通过普通的CronJob运行SyncJob,这些CronJob获取SyncJob并启动它们。 但是在启动之前,我们将SyncJob的日程表媒体设置为" null",以便每次运行时都会创建一个新的日程表媒体。

付费偷看设置
发送
5条回答
spaceman01
1楼-- · 2020-09-18 14:48

嗨Bhanu,

不应通过cronjob安排同步作业。 Cronjob使用相同的同步媒体,并且每次执行时仅更新这些项目。

改为转到同步作业,然后在同步作业上设置触发器。 这将为每个触发器创建一个新的cronjob实例。

有关如何完成此操作的屏幕截图。

替代文字

这也可以使用impex完成。 在触发器impex中使用job(code)而不是cronjob(code)。

INSERT_UPDATE触发器; job(code)[unique = true]; cronExpression; active;

; GeneratedCustomSyncJob; Yourpriggerhere;
微wx笑
2楼-- · 2020-09-18 14:47

'SyncItemCronJob.forceUpdate'确实覆盖了增量并选择了整个目录,但是我们不想同步整个目录,因为它很大。 我们希望我们的三角洲发挥作用。

微wx笑
3楼-- · 2020-09-18 14:47

嗨,

您是否尝试将SyncItemCronJob.forceUpdate标志设置为true?

一只江湖小虾
4楼-- · 2020-09-18 14:44

您找到了解决方案吗?

天桥码农
5楼-- · 2020-09-18 14:55

您好,Malini-我们能够在同步作业(不是同步cron作业)上定义触发器,但是它给出了以下错误。您是否曾经遇到过此问题? 我们基于5.5.1.2

错误[0000034H :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob] [作业]执行0000034H :: de.hybris.platform.catalog.jalo.synchronization.CatalogVersionSyncJob时出现问题:找不到实体(pk = 8796225798645 name ='de.hybris.platform.persistence.processing_CronJob'类型代码='501'db table ='cronjobs')de.hybris.platform.util.jeeapi.YNoSuchEntityException:找不到实体(pk = 8796225798645 name ='de .hybris.platform.persistence.processing_CronJob'类型代码='501'db表='cronjobs')at de.hybris.platform.persistence.GenericBMPBean.loadData(GenericBMPBean.java:260)at de.hybr * strong 文本 * is.platform.persistence.GenericBMPBean.ejbLoad(GenericBMPBean.java:149)

一周热门 更多>