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:<安装WordPress的主机名>/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 Cloud Platform, Kyma Runtime旨在轻松扩展和混合不同的 SAP 应用程序和第三方 API。 要演示SAP Cloud Platform, Kyma Runtime功能,您可以使用虚拟应用程序进行集成,而不是完整的应用程序设置。 智能轻量级...
Kyma一种在云原生世界中连接和扩展企业应用程序的灵活而简便的方法
该项目包含用于在上使用lambda和微服务构建扩展的示例应用程序。 这些示例以多种语言实现,并演示了各种Kyma运行时功能和用例场景。开发人员应该能够参考这些样本并实现自己的业务场景。 先决条件 运行各种示例需要...
我们提供有关如何使用不同的工具和服务逐步在 SAP BTP 上开发和部署基于信息和示例。 计划提供多个相互构建的模块。 您可以从第一个模块开始本教程,也可以从中间开始,因为此存储库中提供了每个教程模块的源代码...
Varkes框架提供了以下节点模块以使应用程序模拟工作: API服务器提供一个与Kyma群集配对的API,以注册事件和API并发送事件。 有关详细信息,请参见 。 App Connector是API服务器使用的库,涵盖了与Kyma群集的所有...
-React应用程序的通用功能 -用于React应用程序的组件(它将被Shared components替换) -用TypeScript编写的React应用程序新版本 -一个使用的React组件,用于在Service-Catalog-UI和Compass视图中显示文档和各种规范...
在从Go中原始存储库派生的远程存储库上进行开发。 请参阅示例,该示例使用位于components目录中的项目,但适用于所有Go项目。 这套说明使用推荐的和常规。 另请阅读文档,其中包含特定于此存储库的贡献规则。 跟着...
kyma-nodejs-utils
一个示例不是可用于生产的应用程序或服务。 不要在生产环境中使用示例。 范例清单 examples存储库中文档的摘要列出了所有可用示例,这些examples均按其展示的功能或概念进行组织。 该结构提供了快速概述和轻松导航...
美国Kyma公司计划填补“绿光LED空白”
凯玛(Kyma)也在社交媒体上。 访问该并在和上关注Kyma。 贡献 我们是一个开源社区,贡献者的数量正在增长。 认识,这些是常规的贡献者和Kyma的创建者。 过程 在您开始贡献之前,请查看。 为了更好地了解Kyma社区的...
关于 此存储库提供了一个示例,展示了如何... 然后使用 git 操作自动化部署,该操作为每个函数生成一个 deployment.yaml 并将它们部署到 Kyma 集群。 本地开发 - Kubeless 该项目包含必要的最小配置以在本地运行基于 ...
使用Kyma进行本地安装 要以最少的Kyma安装,指南针和Kyma Control Plane安装Kyma Control Plane,请运行以下脚本: ./installation/cmd/run.sh 您还可以指定Kyma版本,例如1.6或更高版本: ./installation/cmd/...
开发人员主题演讲旨在展示使用不同工具,技术和语言的不同背景的开发人员如何聚集在一起,共同为使用SAP Cloud Platform及其上的服务和运行时扩展SAP S / 4HANA Cloud系统做出贡献。 观看,并在博客文章了解有关此...
但是,在此平台上,您可以使用几个运行时来构建和操作并行扩展: (又名Cloud Foundry) (基本上是托管的Knative产品) -托管的环境(又名Steampunk) 在我看来,Steampunk在扩展方面是另一种竞争者。 我肯定会...
在Kyma中部署Approuter 该存储库告诉您如何创建服务,服务绑定以及使用volumemount并将其绑定到approuter。 一切都只有一个Yaml
kubeless是Kubernetes原生的无服务器框架,可让您部署少量代码而不必担心基础架构的问题。... 我们的CI在两个不同的平台上运行测试:GKE(1.12)和Minikube(1.15)。 支持其他平台,但不能保证完全兼容。 路线图 我
test-infra存储库的目的是存储在kyma-project组织中使用的测试基础结构的配置和脚本。 项目结构 test-infra存储库具有以下结构: ├── .github # Pull request and issue templates ├── development # ...
该网站使用进行静态网站生成,并由部署。 注意:项目结构,体系结构和其他项目特定的详细信息位于目录中。 先决条件 使用以下工具来设置项目: 用法 安装依赖项 要安装所有依赖项,请运行以下命令: npm install 在...
SAP的Devtoberfest 2020 本星期 宣布决赛入围者,现在对总冠军的投票已经完成: : 。 投票将于11月23日星期一关闭! 重要日期 日期 描述 9月23日,CEST 1700(UTC + 2) 10月12日至16日 10月23日在1830年-11月2日在...