第三方应用如何在SAP Kyma上进行服务注册

简介: Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景:旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博客。

Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景:

旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博客。伊森每次在WordPress上发表一篇博客之后,WordPress会暗地里向Kyma实例发送一个“博客创建”的事件,并且把创建好的博客内容作为事件参数传递给Kyma。部署在后者上的事件响应函数,调用各大社交媒体平台的create API进行对应帖子的创建。这样伊森轻松地实现了文章的“一次发布,各大平台开花”的目的。
clipboard1,1

从本文开始,Jerry会逐一介绍这个扩展场景的技术实现步骤。该扩展场景的实现原理和使用SAP Kyma对SAP C/4HANA进行扩展的机制是一样的。比如把WordPress的博客发布事件想象成C/4HANA Service Cloud里一个服务订单的创建事件,我们可以根据自己实际业务需求在Kyma上编写对应的事件处理函数。

在之前的文章 什么?在SAP中国研究院里还需要会PHP开发?里Jerry已经介绍了如何安装WordPress的Kyma插件。需要强调的是,如果用Kyma对C/4HANA进行扩展,那么后者针对Kyma的插件同WordPress针对Kyma的插件一样,是由SAP负责提供和维护的,大家即使不了解Jerry本文介绍的这些细节,一样能很好的完成扩展开发工作。

本文主要介绍如何在WordPress和Kyma实例间建立互相信任的连接,并且将WordPress指定的事件发布到Kyma上去。

WordPress的Kyma插件安装完毕后,在设置选项里,能看到对应Kyma连接的维护界面。
这里最重要的字段是需要维护一个指向Kyma Application Connector服务的url,即下图的字段“Kyma Connection”.

clipboard2,2
以及在此处维护您到底想把WordPress的哪些事件,注册到Kyma上。
clipboard3,3

注册完毕后,在WordPress的Kyma插件界面里维护的这些事件,就会出现在Kyma service catalog(服务目录)界面里。通过这种事件注册机制,避免了WordPress和Kyma的紧耦合关系:工作于Kyma之上的扩展开发人员即使对WordPress的技术细节完全不了解,也丝毫不影响其扩展开发工作:只需要在Kyma的服务目录里,找到WordPress暴露出来的事件,用自己喜欢的编程语言开发对应的事件响应函数即可。

回到WordPress的Kyma维护界面里的Kyma Connection字段,到底需要维护什么样的url?

在Kyma里创建一个新的应用,点击Connection Application这个按钮,弹出来的这个对话框里的url即是我们要找的url.
clipboard4,4

在我们把url复制到WordPress的Kyma插件里之前,我们可以先在浏览器里访问这个url,看看会返回什么内容:
clipboard5,5

这个JSON响应的第一个字段csrUrl(Certificate Signing Request)和最后一个字段certificate,包含的信息用来生成用于在WordPress和kyma之间建立SSL连接所必需的数字证书。而api结构的几个字段则是Kyma Service Catalog注册的endpoint.

我们把这个url复制到WordPress的Kyma插件里,点击Connect按钮,即可发起指向Kyma实例的连接。

我们以调试模式启动本地WordPress,点击Connect按钮,

clipboard6,6

设置在class-connector.php的connect函数内的断点即触发。这个函数负责向传入的url发起HTTP GET请求,解析出Kyma返回的CSR url和Kyma服务目录的endpoint,然后再分别发起不同的HTTP post请求,去拿到Kyma返回的数字证书以及将WordPress的指定事件注册到Kyma上去。

clipboard7,7

第73行的变量$body_json->csrUrl维护的是Kyma的Certificate Signning Request url,第75行向这个url发送一个post请求,拿到响应:

clipboard8,8
解析响应里包含的certificate信息,存储成对应的本地文件:

clipboard9,9
接下来和Kyma实例的交互,需要使用到这些存储在WordPress本地的数字证书文件:

clipboard10,10
而需要注册到Kyma上的WordPress事件,又是采用何种格式发送到Kyma的呢?

clipboard11,11
clipboard12,12
浏览器里访问url:<安装WordPress的主机名>/index.php/wp-json, 即可得到所有API列表:

clipboard13,13
WordPress的Kyma插件会根据用户在插件界面维护的待注册事件,拼装成对应的JSON字符串然后通过HTTP post发给Kyma:

clipboard14,14

注册成功后,在Kyma控制台的应用界面的服务和事件列表里,就能看到WordPress的对应记录了:
clipboard15,15
同时在Kyma的服务目录里,出现了Jerry之前在WordPress的Kyma插件界面里维护的WordPress connector名称和描述信息:

clipboard16,16
至此WordPress在Kyma上的注册就成功完成了,在Kyma上负责实现WordPress事件响应函数开发的程序员们就可以开工了。这部分的开发,Jerry接下来的文章会继续介绍。

Jerry在进行本文介绍的WordPress同Kyma建立连接的实际操作时,得到了我的同事,SAP成都研究院C4C团队开发人员Li Sherry的大力支持和帮助,这里表示感谢。

本文来自云栖社区合作伙伴“汪子熙”,了解相关信息可以关注微信公众号"汪子熙"。

相关文章
|
2月前
|
XML API 数据格式
SAP 标准 OData 服务 CATALOGSERVICE;v=2 的作用介绍
SAP 标准 OData 服务 CATALOGSERVICE;v=2 的作用介绍
|
9月前
|
搜索推荐 前端开发 JavaScript
关于 SAP Fiori Launchpad 工作所依赖的 OData 服务
关于 SAP Fiori Launchpad 工作所依赖的 OData 服务
|
2月前
|
监控 前端开发 数据可视化
SAP 标准 OData 服务 ABAP_REPOSITORY_SRV 的作用介绍
SAP 标准 OData 服务 ABAP_REPOSITORY_SRV 的作用介绍
|
2月前
|
前端开发 数据库 开发者
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
如何在 SEGW 事务码里为 SAP ABAP OData 服务实现 Function Import 试读版
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
SAP ABAP OData 服务里需要指定 guid 类型的请求参数时,正确语法是什么?
|
2月前
|
JSON 应用服务中间件 API
使用 ABAP 代码消费 SAP 系统的 OData 服务
使用 ABAP 代码消费 SAP 系统的 OData 服务
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
SAP Commerce Cloud 智能销售服务 (Intelligent Selling Services)概述
SAP Commerce Cloud 智能销售服务 (Intelligent Selling Services)概述
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
关于 SAP ABAP OData 服务如何实现 Deep Insert 场景 - SAP 应用的标准行为试读版
|
9月前
|
Web App开发 JavaScript 前端开发
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头试读版
如何给 SAP ABAP SEGW 开发的 OData 服务添加 Access-Control-Allow-Origin 响应头试读版
|
2月前
|
缓存 搜索推荐 开发者
关于 SAP 标准 OData 服务 /sap/bc/adt/ato/settings 的作用
关于 SAP 标准 OData 服务 /sap/bc/adt/ato/settings 的作用