我们来继续学习如何在实战中使用SAP Kyma.

Jerry在之前的文章里,分别介绍了如何本地搭建WordPress实例:
什么?在SAP中国研究院里还需要会PHP开发?

以及如何把这个本地搭建的WordPress实例上的某些事件,发布到SAP Kyma上:

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

本文继续这个集成场景的介绍,并完成最后一步:在SAP Kyma上编写Lambda函数,以响应从WordPress发送到Kyma的事件。响应函数的逻辑,出于演示目的,Jerry简单地选择在Kyma上调用微信API,把WordPress上发表的博客内容,直接转发给某个硬编码的微信用户,即Jerry自己的微信。

在按照前两篇文章的步骤做了之后,我们在SAP Kyma的服务目录(Service Catalog)下能看到从本地WordPress导入的服务(包含暴露的事件和API),大家可以把这个服务目录简单类比成SAP云平台的Service Market Place.

接下来,SAP Kyma上的扩展开发人员,就可以基于这个服务开始工作了。

点击Add once,创建一个新的WordPress服务实例:

然后创建一个新的Lambda函数:

Lambda函数的实现类型选择nodejs,

触发方式选择成event trigger-事件触发,具体的触发事件选择从WordPress导入的post.published, 即文章发布事件。

也就是说,当WordPress里有新的博客发布时,WordPress会触发post.published事件,增强后的WordPress插件会把这个事件,连同发布的博客内容作为参数一起传递给Kyma,而Kyma会调用上述创建的监听在post.published事件上的Lambda函数,后者实际上就是观察者-发布者设计模式里的观察者。

接下来在Lambda函数里的开发就是纯粹的nodejs编程工作了,使用nodejs提供的axios库,将WordPress传递给Kyma的博客内容从事件参数event里解析出来,调用微信接口发送给指定的微信用户。

Dependencies区域的作用,就相当于nodejs项目的package.json, 用于定义nodejs代码执行所需的各种外部依赖。

最后一步,就是创建一个Service Binding,把Lambda函数同之前创建的WordPress服务实例绑定起来。

这个操作和SAP云平台CloudFoundry环境里的服务配置做法是一致的,所以有过SAP Cloud Platform开发经验的程序员,对SAP Kyma上这些配置能够很容易上手。

至此,所有的开发和配置工作都结束了。

最后来做个测试。Jerry最近看了Craig Mazin执笔,Johan Renck执导,由HBO/Sky合拍的迷你剧《切尔诺贝利》,深感人类在核危机爆发后的渺小和无力。

在WordPress上发布一篇博客:

谎言的代价是什么?
并非是我们会把谎言误认为真相,
真正危险的是,
我们听多了谎言,便不能分辨出真相

单步调试WordPress,发现发布博客的内容被发送到了指向Kyma事件处理的这个url:

回到Kyma的Lambda界面,点击Show Logs查看日志,能发现WordPress发布的事件成功被Kyma的Lambda函数接收到了:

最后Jerry的微信号收到了这条在WordPress上首发,经Kyma中转的,关于《切尔诺贝利》观后感的博客:

下面是这个集成效果的演示视频:

可以持续关注本公众号,获得SAP Kyma的更多使用案例分享,感谢阅读。

这个场景用的到增强的WordPress源代码,以及WordPress的Kyma插件源代码,可以从Jerry的github上获得:

https://github.com/i042416/Wordpress

更多阅读

  • 站在巨人肩膀上的牛顿:Kubernetes和SAP Kyma
  • 高射炮打蚊子,杀鸡用绝世好剑:在SAP Kyma上运行UI5应用
  • 什么?在SAP中国研究院里还需要会PHP开发?
  • 第三方应用如何在SAP Kyma上进行服务注册
  • 基于SAP Kyma的订单编排增强介绍
    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

WordPress,SAP Kyma和微信三者的集成相关推荐

  1. 从ABAP Netweaver的SICF到SAP Kyma的Lambda Function

    ABAP Netweaver里的事务码SICF是Jerry做原型开发时非常喜欢使用的一个工具:但凡遇到需要把ABAP系统里的资源以服务的方式暴露出来的场景,Jerry都喜欢在SICF里创建一个服务节点 ...

  2. 周伯通的空明拳,米诺斯的星尘傀儡线,SAP Kyma的Serverless

    Jerry一直认为,金庸的<天龙八部>里的武学建模已经有点脱离传统武侠小说的范畴了,像已经走上玄幻道路的灵鹫宫"八荒六合唯我独尊功",以及杀伤力足够能被视为现代激光武器 ...

  3. SAP系统和微信集成的系列教程之六:如何通过OAuth2获取微信用户信息并显示在SAP UI5应用中

    这是Jerry 2020年的第87篇文章,也是汪子熙公众号总共第269篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  4. SAP系统和微信集成的系列教程之十:如何在SAP C4C系统里直接回复消息给微信用户

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

  5. SAP系统和微信集成的系列教程之九:如何将微信用户发送给微信公众号的内容自动转存到SAP C4C系统

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 最近有不少朋友在微信上向我咨询SAP系统和微信公众号集成的问题,因此我把当时写的英文版翻译成中文,重新发布在我 ...

  6. SAP系统和微信集成的系列教程之八:100行代码在微信公众号里集成地图搜索功能

    本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发环境的搭建 (2) 如何通过微信公众号消费API (3) 微信用户关注公众号之后,自 ...

  7. SAP系统和微信集成的系列教程之七:使用Redis存储微信用户和公众号的对话记录

    这是Jerry 2020年的第88篇文章,也是汪子熙公众号总共第269篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

  8. SAP系统和微信集成的系列教程之五:如何将SAP UI5应用嵌入到微信公众号菜单中

    这是Jerry 2020年的第86篇文章,也是汪子熙公众号总共第268篇原创文章. 2020年即将到达尾声了. Jerry所在团队的产品经理,已经开始让大家把圣诞节期间的休假情况,维护在公司wiki里 ...

  9. SAP系统和微信集成的系列教程之四:如何将SAP C4C主数据变化推送给微信公众号的关注者

    这是Jerry 2020年的第85篇文章,也是汪子熙公众号总共第267篇原创文章. 本系列的英文版Jerry写作于2017年,这个教程总共包含十篇文章,发表在SAP社区上. 系列目录 (1) 微信开发 ...

最新文章

  1. maven生命周期理解
  2. 如何使用Android studio创建签名
  3. pdf常用字体包 -baijiahao_PDF 的各种操作,我用 Python 来实现(附网站和操作指导)
  4. boost::disjoint_sets_with_storage用法的测试程序
  5. 上海理工大学第二届“联想杯”全国程序设计邀请赛 - Dahno Dahno(SW)
  6. finallshell堡垒机_用lshell+脚本实现堡垒机(跳转机)功能
  7. 现在人人都要准备的2020年六个事关职业生涯的技术趋势
  8. 为什么Nginx的性能要比Apache高得多?
  9. 再次确认输入值、事件绑定实例、输入框内容获取与显示
  10. c语言黑色星期五公式,求黑色星期五问题~
  11. 解决安装YouCompleteMe与Vim版本不兼容问题
  12. Android 与 unity3d 基于微信授权、支付、分享,QQ分享,支付宝支付的交互
  13. debug [LTS]
  14. FileOpen 及相关文件读写
  15. 从零和到竞合 亚马逊为何联姻国美?
  16. 软件测试管理与组织结构
  17. 字符串前面添加u,r,b的含义
  18. 抖音直播流量怎么来?四大渠道告诉你
  19. 解决 yarn install报错node-sass: Command failed/使用nvm use出现status 145:the directory is not empty
  20. 深度学习中的卷积与反卷积

热门文章

  1. 使用python简单连接并操作数据库
  2. 关于vue搭建项目运行出行的错误问题,简直是大坑啊
  3. 关于Ehcache缓存中timeToLiveSeconds和timeToIdleSeconds
  4. Window (Standard IO)
  5. linux安装mysql出现Could NOT find Curses (missing CURSES_LIBRARY CURSES_INCLUDE_PATH),提示解决方法...
  6. Web2.0时代,RSS你会用了吗?(技术实现总结)(转载)
  7. 关于用批处理写ftp上传文件
  8. PoweMock集成Spring-test 测试静态方法 禁用字节码验证 -noverify -XX:-UseSplitVerifier
  9. 优化案例(part4)--A novel consensus learning approach to incomplete multi-view clustering
  10. 文献学习(part15)--Subspace Clustering via Good Neighbors