zoukankan      html  css  js  c++  java
  • 给用过SAP CRM中间件的老哥老姐们讲讲SAP CPI

    最近Jerry由于项目需要,又得学习一个新工具:SAP Cloud Platform Integration,简称CPI,以前又叫做HCI - HANA Cloud Platform Integration Service.

    clipboard1,1

    尽管距离Jerry开始接触CPI还不到48小时,我仍然想把我刚使用这个工具的第一手体会分享给曾经用过SAP CRM中间件,但尚未有机会接触到CPI的朋友们。

    之所以文章标题里把SAP CRM中间件和SAP CPI关联在一起,是因为二者同广义上说,扮演的都是系统集成里中间件的角色。

    SAP ERP和CRM通过qRFC进行业务数据同步,而中间件能够提供队列机制,错误处理,重试,传输监控等功能。关于Jerry在SAP CRM中间件上的工作经验分享,请参考我的文章 Jerry的CRM Middleware(中间件)文章合集。

    clipboard2,2

    而SAP CPI顾名思义,则是云时代下SAP推荐的SAP产品同第三方云产品进行集成的云端中间件解决方案。Jerry的S4CRM同事童丹之前文章 S/4HANA Service Management和SAP Field Service Management的集成 里提到的场景就是SAP CPI的一个典型集成应用。

    clipboard3,3

    作为学习笔记,Jerry这里把我学习SAP CPI时做的一个Hello World级别的练习步骤记录下来。

    这个练习的场景是,假设有一个部署在第三方云平台上的OData服务,提供了产品主数据查询的功能。我们需要在SAP系统里消费这个OData服务。SAP开发人员不希望直接去消费第三方云平台上的OData服务,而是期望SAP CPI能暴露一个更加容易访问的API endpoint出来,例如通过postman传一个Product ID给CPI,CPI拿到这个ID后,由CPI向第三方云平台发起OData请求,拿到请求响应后,CPI把结果返回给位于SAP产品的消费端。

    clipboard4,4

    用于这个场景的OData服务地址:https://espmrefapps.hana.ondemand.com/espm-cloud-web/espm.svc/$metadata

    clipboard5,5

    SAP CPI是一个SaaS应用,在SAP云平台控制台的Subscriptions面板里订阅和访问。点击Go to Applications进入主操作页面。

    clipboard6,6

    我们为了实现这个集成场景需要在CPI里开发一个集成流 - integration flow(下文简写为iFlow), 用于定义当其收到消费者传入的product ID后,应该进行何种处理。

    和ABAP里的程序需要存储在一个开发包里一样,iFlow也需要存储在一个包里,称为Content package.

    进入CPI后在此处创建一个Content package:

    clipboard7,7
    clipboard8,8

    然后点击上图的Artifacts进入iFlow创建界面:

    clipboard9,9

    取名Jerry first integration flow, 再点击就能进入iFlow的图形化编辑界面了。

    clipboard10,10

    一个新的iFlow创建之后的默认界面如下:

    clipboard11,11

    点击上图最左边的Sender图标,将其拖拽到上图中间integration process矩形框内的Start图标内,这个动作会帮助我们创建一个inbound adapter,类型我们选择HTTPS,意思是这个iFlow期望其被消费的方式是HTTPS.

    clipboard12,12

    在Adapter的Address里维护一个url片段/CloudIntegrationTrials, 等到最后该iFlow正式部署后,生成的endpoint就是以该片段结尾,届时我们可以在postman等工具里使用该endpoint消费这个iFlow.

    clipboard13,13

    考虑到现在流行的Restful API实现都期望其消费者以JSON格式传输请求内容,我们也沿用这个最佳实践,因此首先拖拽一个JSON to XML Converter到iFlow integration process建模区域的矩形框里,将JSON
    格式的用户输入转换成XML格式:

    clipboard14,14

    然后再使用Content Modifier,将XML格式里的product ID的值提取出来。

    clipboard15,15

    下图展示了Content Modifier通过XPath将XML格式的输入里的productIdentifier这个字段的值提取出来。

    clipboard16,16

    有了product ID,可以进行OData调用了。从iFlow建模的工具箱里拖拽一个External Call出来:

    clipboard17,17

    类型选择成OData V2:

    clipboard18,18

    指定前面提过的OData服务的url:

    clipboard19,19

    选择该OData服务的Products节点作为消费的对象:

    clipboard20,20

    将OData Product节点的ProductId字段绑定到前一步骤通过Content Modifier解析出来的包含了用户输入的productIdentifier字段。

    clipboard21,21

    就像小朋友们搭积木一样,我们把iFlow工具箱里提供的元素,通过拖拽的方式组合成了一个图形化的流程。点击Deploy进行部署:

    clipboard22,22

    部署成功之后,抄下这个生成的endpoint:

    clipboard23,23

    在Postman里向这个endpoint发送一个GET请求:

    clipboard24,24

    部署在SAP Cloud Platform上的CPI iFlow接收到了请求后,就会按照我们维护好的逻辑,解析出Product ID,调用OData服务,将该ID对应的Product明细数据作为结果返回给消费端。

    clipboard25,25

    和SAP CRM中间件有各种通过事务码比如SMW01访问的监控应用一样,SAP CPI也有类似的监控程序:

    clipboard26,26
    clipboard27,27

    希望这个最简单的例子能让还没有接触过SAP CPI的朋友对其作用有个最直观的了解,感谢阅读。

    要获取更多Jerry的原创文章,请关注公众号"汪子熙":
    公众号截图

  • 相关阅读:
    百度的hao123.com篡改浏览器首页,解决办法
    图层叠加
    按日期统计数据,如何初始化一年的数据
    ORACLE的监听日志太大,客户端无法连接
    防火墙上开放Oracle服务端口1521的方法
    Java利用POI生成Excel强制换行
    poi jsp xls
    poi合并单元格同时导出excel
    使用CSS设置滚动条样式以及如何去掉滚动条的方法
    java环境变量的配置
  • 原文地址:https://www.cnblogs.com/sap-jerry/p/12020798.html
Copyright © 2011-2022 走看看