第三方应用如何在SAP Kyma上进行服务注册
Jerry之前的公众号文章 什么?在SAP中国研究院里还需要会PHP开发?提到了一个SAP Kyma的应用场景:
旅行兼社交达人伊森,使用经过SAP Kyma扩展之后的WordPress这个网站来写博客。伊森每次在WordPress上发表一篇博客之后,WordPress会暗地里向Kyma实例发送一个“博客创建”的事件,并且把创建好的博客内容作为事件参数传递给Kyma。部署在后者上的事件响应函数,调用各大社交媒体平台的create API进行对应帖子的创建。这样伊森轻松地实现了文章的“一次发布,各大平台开花”的目的。

从本文开始,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”.

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

注册完毕后,在WordPress的Kyma插件界面里维护的这些事件,就会出现在Kyma service catalog(服务目录)界面里。通过这种事件注册机制,避免了WordPress和Kyma的紧耦合关系:工作于Kyma之上的扩展开发人员即使对WordPress的技术细节完全不了解,也丝毫不影响其扩展开发工作:只需要在Kyma的服务目录里,找到WordPress暴露出来的事件,用自己喜欢的编程语言开发对应的事件响应函数即可。
回到WordPress的Kyma维护界面里的Kyma Connection字段,到底需要维护什么样的url?
在Kyma里创建一个新的应用,点击Connection Application这个按钮,弹出来的这个对话框里的url即是我们要找的url.

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

这个JSON响应的第一个字段csrUrl(Certificate Signing Request)和最后一个字段certificate,包含的信息用来生成用于在WordPress和kyma之间建立SSL连接所必需的数字证书。而api结构的几个字段则是Kyma Service Catalog注册的endpoint.
我们把这个url复制到WordPress的Kyma插件里,点击Connect按钮,即可发起指向Kyma实例的连接。
我们以调试模式启动本地WordPress,点击Connect按钮,

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

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

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

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

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


浏览器里访问url:/index.php/wp-json, 即可得到所有API列表:

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

注册成功后,在Kyma控制台的应用界面的服务和事件列表里,就能看到WordPress的对应记录了:

同时在Kyma的服务目录里,出现了Jerry之前在WordPress的Kyma插件界面里维护的WordPress connector名称和描述信息:

至此WordPress在Kyma上的注册就成功完成了,在Kyma上负责实现WordPress事件响应函数开发的程序员们就可以开工了。这部分的开发,Jerry接下来的文章会继续介绍。
Jerry在进行本文介绍的WordPress同Kyma建立连接的实际操作时,得到了我的同事,SAP成都研究院C4C团队开发人员Li Sherry的大力支持和帮助,这里表示感谢。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":

第三方应用如何在SAP Kyma上进行服务注册的更多相关文章
- 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
国人在表述"大材小用"这个场景时,总喜欢用一些实物来类比,比如:高射炮打蚊子. 英国QF 3.7英寸(94mm)高射炮,战斗全重超过9.3吨,全长近5米,最大射程约18公里,最大射 ...
- 如何在SAP Kyma的控制台里扩展新的UI
方法是创建一个新的resource,类型为ClusterMicroFrontend. 使用命令行kubectl get ClusterMicroFrontend查看这些UI扩展: 最后自定义的UI出现 ...
- 周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma的Serverless
Jerry一直认为,金庸的<天龙八部>里的武学建模已经有点脱离传统武侠小说的范畴了,像已经走上玄幻道路的灵鹫宫"八荒六合唯我独尊功",以及杀伤力足够能被视为现代激光武器 ...
- 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function
ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点 ...
- WordPress,SAP Kyma和微信三者的集成
我们来继续学习如何在实战中使用SAP Kyma. Jerry在之前的文章里,分别介绍了如何本地搭建WordPress实例: 什么?在SAP中国研究院里还需要会PHP开发? 以及如何把这个本地搭建的Wo ...
- 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
这周Jerry在SAP上海研究院参加了一个为期4天的Kubernetes培训,度过了忙碌而又充实的4天.Jason,Benny和Peng三位大神的培训干货满满,借此机会,Jerry和过去的两位老领导P ...
- 如何在SAP云平台上使用MongoDB服务
首先按照我这篇文章在SAP云平台上给您的账号分配MongboDB服务:如何在SAP云平台的Cloud Foundry环境下添加新的Service 然后从这个链接下载SAP提供的例子程序. 1. 使用命 ...
- 基于SAP Kyma的订单编排增强介绍
尽管有一万个舍不得,2018年还是无可挽回地离我们远去了. 唯有SAP成都研究院的同事和我去年在网络上留下的这些痕迹,能证明2018年我们曾经很认真地去度过每一天: SAP成都研究院2018年总共87 ...
- 从SAP社区上的一篇博客开始,聊聊SAP产品命名背后的那份情怀
最近Jerry在SAP社区上看到一篇博客:It's Steampunk now. 博客原文:https://blogs.sap.com/2019/08/20/its-steampunk-now/ 什么 ...
随机推荐
- 阶段5 3.微服务项目【学成在线】_day18 用户授权_19-微服务之间认证-Feign 拦截器
4.2 Feign 拦截器 4.2.1 定义Feign拦截器 微服务之间使用feign进行远程调用,采用feign拦截器实现远程调用携带JWT. 在common工程添加依赖: <dependen ...
- MySQL性能优化最佳实践20条
今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据 ...
- 禁止CSRF校验实例
静态文件----提交表单 本例在static目录中建立了一个from.html静态页面,该页面有一个<form>标签,用于向服务端提交POST请求,然后在post.py脚本文件中添加一个路 ...
- CSS3 @font-face详细用法
@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中,随着@font-face模块的出现,我们在Web的开发中使用字体就不用再为只能使用Web安全字体烦恼了!肯定 ...
- CentOS 7中安装和配置Promethues
Prometheus 是什么? Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的.随着发展,越来越多公司和组织接受采用Prome ...
- VS2010 如何在调试的时候输入参数
VS2010 如何在调试的时候输入参数 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 很明显,好多算法程序实现的时候提供的例程都是需要在命令行中输入参数,比 ...
- [学习笔记] Blender layout 视图切换
layout 数字键5 --- 正交视图/透视图 切换 数字键0 -- 摄像机视图 数字键7 -- 顶视图 数字键1 --- 前视图 数字键3 --- 右视图 ctrl +数字键3 --- 左视图 ...
- 微信公众号对接JS-SDK接口 调用微信内置地图
微信js-sdk开发文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html 1.页面配置 引用微信js- ...
- Spring 设计模式之责任链模式
[应用] 以下是一段代码,Spring MVC 的 diapatcherServlet 的 doDispatch 方法中,获取与请求匹配的处理器(HandlerExecutionChain) getH ...
- plsql中文乱码 显示问号
输入sql语句select * from V$NLS_PARAMETERS查看字符集,查看第一行value值是否为简体中文 解决方案: 新增环境变量 变量名: NLS_LANG 变量值: SIMPLI ...