1

处理新客户注册、购物车更新、从 SFCC B2C 中的墨盒发布订单等事件的典型方式是什么?

在这里,我可以通过证明钩子看到一些资源“支持服务器端定制”,但支持定制的资源数量很少,并且那里没有“客户注册”或“购物车更新”事件的钩子。

4

1 回答 1

1

Vitaly,我假设您专门谈论的是 OCAPI 界面,而不是传统的 Demandware Script 店面界面。但是,我将针对这两种情况进行回答。没有一个界面可以让您知道事件何时发生。此外,有多个接口可以触发此类事件:

开放商务 API (OCAPI)

如果您希望收听和/或通知使用此接口触发的事件的外部服务,则必须为要跟踪创建或修改的资源使用适当的挂钩。这个钩子是用 Demandware Script(ECMAScript 5 + 自定义扩展)编写的

店面界面

店面界面中有一个 MVC 架构,这是 Commerce Cloud B2C 最流行的用例。这种 MVC 架构有几个版本,但它们都运行多个控制器来处理服务器端的各种用户交互。要跟踪数据对象的所有各种变化和创建,您需要向每个控制器添加代码。也许更适合控制器用来创建和改变这些数据对象的模型。

进口

将数据导入平台有两种方式:

  • XML 文件导入
  • OCAPI 数据 API

这两种导入数据都无法根据其操作结果触发自定义行为。在许多情况下,您实际上对数据的创建或修改时间视而不见。

解决此问题的方法可能是查找缺少自定义属性的对象的作业(该作业或对其他两个接口的自定义设置)并添加自定义属性和/或使用时间戳更新另一个属性。除了该活动之外,此作业可能需要遍历所有对象,以确定导入活动自上次设置上述自定义属性以来是否更改了任何内容。这可以通过另一个包含某种散列或校验和的自定义属性来实现。这项工作需要不断地运行,并且可能分成两个以不同时间间隔运行的部分。它不是一个高性能或可扩展的解决方案。

相反,理想情况下,所有通过这些导入机制发送数据的系统都将预先设置自定义属性,以便在导入时更新这些字段。

获取数据

在 Salesforce Commerce Cloud 中,您可以通过店面请求和响应上下文中的同步外部 API 调用或通过在后台运行的异步批处理作业来导出数据。这些作业可以写入文件、通过 SFTP、HTTPS 传输文件或进行外部 API 调用。还有 OCAPI 数据 API 可以让您知道什么时候添加/修改基于轮询 API 的新数据。

在许多情况下,您会受到旨在帮助维持系统整体性能的配额的限制。

方法

您可以使用几种不同的方法来捕获和传输表示此类事件所需的数据。它们总结如下。

导出队列

可能性能最高的选项是导出队列。您可以将已发生的事件列表排队,然后在后台运行的作业中将它们传输到第三方系统,而不是立即通知外部系统发生事件。队列通常使用系统的自定义对象概念构建。当事件发生时,您将创建一个新的自定义对象,该对象将包含有关事件的所有必要信息以及如何在队列中处理该事件。您制作了一个作业组件,该组件被添加到定期运行的作业流程中。例如每 15 分钟一次。该作业组件将遍历队列并执行将事件传输到第三方系统所需的任何操作。一旦传输,该项目就从队列中移除。

准时传输

您必须小心使用这种方法,因为它最有可能降低商家店面和/或 OCAPI 界面的性能。当事件发生时,您对收集事件通知的第三方系统执行 Web 服务调用。如果第三方系统不可用,您必须为此请求设置相当激进的超时,以避免过多影响店面或 API 性能。我什至建议将此方法与上述队列方法结合使用,以便您可以将失败的 API 调用添加到队列中以便稍后重新发送。

OCAPI 轮询

为了知道什么时候实际修改或创建了某些东西,您需要实现一个自定义属性来跟踪此类时间戳。creationDate不幸的是,虽然lastModified几乎每个对象都有 DateTime 标记,但它们通常无法从 OCAPI 或 DW Script API 访问。您的自定义属性需要修改 OCAPI 挂钩和店面控制器/模型以适当地设置这些属性。设置后,您可以使用 OCAPI 数据 API 根据这些自定义属性查询对象。自上次检查以来,第三方系统将定期连接以查询新数据对象。请注意,并非所有数据对象都可以通过 OCAPI 数据 API 访问,并且您可能会受限于如何查询某些对象,因此这绝不是灵丹妙药。


祝您好运,如果您在制定适当的解决方案时需要任何支持,市场上有许多系统集成商合作伙伴。您可以在AppExchange上找到它们。按 Salesforce B2C Commerce 筛选顾问以获取分层的合作伙伴列表。

全面披露:我为这样一个合作伙伴工作:Astound Commerce

于 2020-07-02T19:39:34.017 回答