订单取消警报
取消订单的原因可能有多种。 客户可能不想要错误下达的订单,创建了重复的订单,或订单的付款方式出现欺诈行为。 一旦取消订单,必须向客户发送通知。
解决方案
本部分描述了 API、用户出口、服务及其他组件。
应用程序提供了一个在成功取消订单时用于处理电子邮件通知的服务。通过 changeOrder API 取消订单时,会引发 ON_CANCEL 事件,它通过 YCDOnCancel 操作调用 YCD_CancelOrderNotification_3.0 服务。
发送通知之前,服务会在已取消该订单中的所有订单行的情况下尝试关闭该订单上的所有打开的警报。如果客户定义了电子邮件地址,那么会向其发送通知。否则,会向用户发送警报以指示此用户必须向客户通知订单取消情况。
可以使用此功能部件向客户通知在无法满足承诺交货日期时自动取消的订单。发送到客户的消息取决于具体原因:自动取消或定期取消。

YCD_CancelOrderNotification_3.0 服务调用 getOrderDetails API 来检索相关订单信息,并将其以 html 格式(通过 XSL 转换)传递给电子邮件服务(此服务将向客户发送该信息)。
虽然解决方案随应用程序一起提供,但是您必须改进该服务来防止电子邮件服务可能出现的中断情况。建议的解决方案不是调用 getOrderDetails API,而是将 ON_SUCCESS 事件的输出 XML 传递到所选的队列(例如,JMS 队列),并检查电子邮件服务器是否已启动。如果此服务器关闭,那么保持通知处于队列中,并尝试稍后重新处理。如果此服务器已启动,那么调用 XSL 来将队列中的 XML 转换为 HTML,并向客户发送电子邮件。
实施
- 在 Applications Manager 中,启用“更改订单”事务中的 ON_SUCCESS 事件。缺省情况下,由于已禁用 ON_SUCCESS 事件,因此关闭了取消订单通知功能部件。
- 服务的电子邮件发件人组件所使用的模板会将 getOrderDetails API 的输出 XML 格式化为以下文件中找到的 HTML:<INSTALL_DIR>/repository/xapi/template/merged/email/YCD_Cancel OrderNotification.xsl.sample。复制此文件,将其命名为 CancelOrderNotification.xsl 并根据需要对其进行定制,然后指定用于在服务的电子邮件发件人组件的正文模板字段中生成 HTML 消息的 XSL。
最终用户影响
如果取消了订单,并且客户无电子邮件地址,那么会将警报发送至“客户通知”队列。缺省情况下由用户监控此队列,并通知客户订单已经取消。