转载

IBM Sterling Order Management 集成中的可扩展性

概述

IBM® Sterling Order Management (OMS)® 在由客户、供应商和合作伙伴组成的一个动态业务网络中编排跨渠道的销售和订单履行流程。IBM Sterling Order Management 包含以下 4 个组件:

Distributed Order Management
使您的公司能够跨扩大的供应链网络来运行和协调订单履行流程,从而提供卓越的客户体验。
Global Inventory Visibility
通过整合来自内部和外部系统的库存信息,获取所有供需关系的单一的、全面的视图。
Reverse Logistics
促进交易,完善生命周期跟踪,提高库存利用率。
Delivery and Service Scheduling
计划产品递送和关联服务的时间安排,提高客户满意度。

IBM Sterling OMS 提供的可扩展性选项

在真实场景中,不同的店面客户拥有不同的需求,根据业务需求,他们可能需要改变 OOB 集成行为。IBM Sterling OMS 为店面应用程序提供了各种自定义选项,使您能够修改现有的行为来满足需求。与 IBM Sterling OMS 的集成提供了以下可扩展性选项:

  • SDF Framework 可扩展性
  • XSL 转换可扩展性
  • API 可扩展性

图 1. IBM Sterling OMS 提供的可扩展性选项

IBM Sterling Order Management 集成中的可扩展性

SDF Framework 可扩展性

集成是通过对 Sterling Service Definition Framework (SDF) 中的服务的外部访问能力来实现的。以下 SDF Extended API 组件提供了一个可扩展的集成服务的构建基块:

  • InvokeService
  • ValueMapXSLTranslator

InvokeService 组件

InvokeService扩展 API 是 OOB 服务的入口点。

图 2. SDF 服务中的 InvokeService 组件

IBM Sterling Order Management 集成中的可扩展性

这个扩展的服务接受一下参数:

  • serviceName
  • extensionClass

图 3. SDF 服务中的 InvokeService 组件

IBM Sterling Order Management 集成中的可扩展性

serviceName 标识该组件所启动的内部服务。

例如,图 4中的 SCWC_SDF_changeOrder

图 4. 内部服务 SCWC_SDF_changeOrder

IBM Sterling Order Management 集成中的可扩展性

需要使用 extensionClass 来实现接口 SCWCIntegrationServiceAPICallback

清单 1. 接口 SCWCIntegrationServiceAPICallback

public interface SCWCIntegrationServiceAPICallback {         public void beforeServiceCall(YFSEnvironment env, String serviceName, Document input);         public void afterServiceCall(YFSEnvironment env, String serviceName, Document output); }

接口 SCWCIntegrationServiceAPICallback 的方法执行流

在 InvokeService 组件获得请求输入时,它会检查 extensionClass 参数是否已配置。如果已配置,则会首先启动实现类的 beforeServiceCall 方法。接下来将会启动 serviceName 参数所标识的内部服务。最后,将会调用实现类的 afterServiceCall 方法。这些方法可实现来引入自定义代码,修改向服务的输入或来自服务的输出,无需对服务定义执行任何更改。

图 5. 接口 SCWCIntegrationServiceAPICallback 的方法执行流

IBM Sterling Order Management 集成中的可扩展性

ValueMapXSLTranslator 组件

图 6中的这个组件用于在 WCS 格式与 OMS 格式之间来回转换请求。

图 6. SDF 服务中的 ValueMapXSLTranslator 组件

IBM Sterling Order Management 集成中的可扩展性

ValueMapXSLTranslator组件接受 3 个参数:

  • xslFileName
  • valueMapFileName
  • extensionClass

图 7. ValueMapXSLTranslator 参数

IBM Sterling Order Management 集成中的可扩展性

类似于 ValueMapXSLTranslator Component 组件, ValueMapXSLTranslator 组件也通过 extensionClass 参数所指定的类来支持可扩展性。

该扩展类需要实现清单 2中的以下接口。

清单 2. 接口 SCWCXSLTCallback

public interface SCWCXSLTCallback {         public Document beforeXSLTCall(YFSEnvironment env, Document input);         public Document afterXSLTCall(YFSEnvironment env, Document output); }

接口 SCWCXSLTCallback 的方法执行流

在 ValueMapXSLTranslator 组件获得请求输入时,它会检查 extensionClass 参数是否已配置。如果已配置,则会首先启动实现类的 beforeXSLTCall 方法。接下来,它会使用 xslFileName 参数所标识的 XSL 转换器来执行输入转换。最后,将会启动实现类的 afterXSLTCall 方法。这些方法可实现来引入自定义代码,修改向 XSL 转换的输入或来自 XSL 转换的输出,无需对 XSL 转换器执行任何更改。

图 8. 接口 SCWCXSLTCallback 的方法执行流

IBM Sterling Order Management 集成中的可扩展性

回页首

XSL 转换可扩展性

您也可以自定义默认的 XSL 转换器,从请求文档读取新属性或返回一个具有不同 XML 结构的响应文档。自定义的 XSL 文件将由服务通过 xslFile 参数读取。

在这里的清单 3中,我们使用了来自外部系统的输入,创建 OMS changeOrder API 输入的一个部分,以便通过 OrderNoEnterpriseCode 识别 OMS 上的订单。

清单 3. 原始 XSLT 代码

<Order>      <xsl:attribute name="OrderNo">          <xsl:value-of select="$order/_ord:OrderIdentifier/_wcf:UniqueID" />      </xsl:attribute>      <xsl:attribute name="EnterpriseCode">           <xsl:value-of select$order/_ord:StoreIdentifier/_wcf:UniqueID/text()"/>      </xsl:attribute>      </Order>

如果外部系统未存储 Order NoEnterpriseCode ,只拥有主键 OrderHeaderKey 来识别 OMS 上的订单记录,那么可以修改 XSL 转换器来处理此限制,如清单 4中所示。

清单 4. 对 XSL 转换器的 XSL 修改

<Order>      <xsl:attribute name="OrderHeaderKey">           <xsl:value-of select="$order/_ord:OrderIdentifier/_wcf:OrderPrimaryID" />      </xsl:attribute>         </Order>

回页首

API 可扩展性

除了已介绍的扩展的 API 组件之外,还可以扩展 API 行为。API 的行为可通过以下选项来扩展:

  • 用户退出的实现
  • API 模板修改

图 9. API 可扩展性选项

IBM Sterling Order Management 集成中的可扩展性

用户退出的实现

Sterling API 框架允许您在 API 执行期间启动的 UserExit 实现中引入自定义代码。

UserExit接口信息可从 API Javadoc™ 获取。例如, changeOrder API 允许您实现 UserExit YCMGetItemDetailsUE

实现类需要实现 UE 接口: com.yantra.ycm.japi.ue.YCMGetItemDetailsUE

清单 5. 接口 YCMGetItemDetailsUE

public interface YCMGetItemDetailsUE {          public Document getItemDetails(YFSEnvironment env, Document inXML) throws YFSUserExitException; }

API 模板修改

API 的输出可通过自定义 API 模板来控制,请参见清单 6中的默认的订单模板示例。

清单 6. 订单的示例默认模板

<Order EnterpriseCode="" OrderHeaderKey="" DocumentType="" OrderNo=""/>

例如,如果 API 响应的输出中需要存在新属性 BillToID 或元素 OrderLines ,请参见清单 7中修改后的模板。

清单 7. 修改后的订单的模板模板

<Order EnterpriseCode="" BillToID ="" OrderHeaderKey="" DocumentType="" OrderNo="">      <OrderLines>           <OrderLine  OrderLineKey=""/>       </OrderLines> </Order>

回页首

结束语

Sterling OMS 的可扩展性使您能够修改 OMS 的现有行为来满足您的独特需求。这种自定义使您能够创建最适合您客户、供应商和合作伙伴的业务网络需求的解决方案。API、XSL 转换和 SDF 框架带来的可扩展性,使您能够根据集中化的库存、订货承诺和履行中心的 OMS 功能来支持全渠道订单履行。

正文到此结束
Loading...