如何通过CronJob从Hybris导出目录并通过分页导出到外部系统?

时间:2018-09-05 07:45:11

标签: java sap hybris

我是Hybris的新手。需要从Hybris导出完整/增量目录数据并向外部系统提供Web服务。当前,我创建了一个新的CronJob,它每天运行以执行此操作。请让我知道我们如何实现这一目标。

我已经推荐了许多博客,但都提到了FlexibleSearchQuery。有没有现成的方法可以实现该功能。

3 个答案:

答案 0 :(得分:0)

hybris datahub具有一些用于SAP ERP的同步功能。也许您可以使用它。

答案 1 :(得分:0)

如果您的第三方系统可以从REST服务中提取数据,则可以使用OCC GET /{baseSiteId}/export/products端点。

终结点生产所有产品,或者自timestamp起更改的所有产品

完整的文档可以在这里找到: https://help.hybris.com/1808/api/ycommercewebservices/index.html#_exportproductsusingget

答案 2 :(得分:0)

从良好的解决方案体系结构角度来讲,从根本上讲。我建议探索一种不需要Hybris通过服务呼叫将数据主动发送到第三方系统的选项。 Hybris应该与商业有关。除非您也将其用作PIM。

此外,您没有提及服务期望的有效载荷的协议或类型。无论如何,都假设您将为产品和产品媒体一起提供包含CSV / XML的zip文件。这就是我的做法。

1)定义工作: 您可以在Groovy中即时编写Cronjonb(无需部署),也可以在Java中以标准方式编写(要求部署)。

2)提取数据并导出的逻辑 使用FlexibleQuery从所需的目录版本中获取产品,然后将该批次压缩为一个zip文件(例如,mediaService.setStreamForMedia(media,new ByteArrayInputStream(products.toByteArray()),“ mystore-mycatalog-export.zip”,“应用程序/邮政编码”) 。这样会将文件写入zip文件,并为您提供一个URL,您可以将该URL放入事件中,该URL可以触发另一个cronjob实际进行服务调用并发送该文件。

3)编写cleanupjob摆脱已经发送的负载。由于大小的原因,您的磁盘将很快装满,以至于系统将发生故障。