Jerry从2018年末至今,已经写了一系列关于SAP Kyma的文章,您能够移步到本文末尾得到这些文章的列表。Kyma是SAP开源的一个基于Kubernetes的云原生应用开发平台,可以容许SAP的partners以简捷而现代的方式,对SAP的云解决方案和传统On Premises产品进行链接,集成和扩展。所谓“现代”,即partners在进行二次开发时,能够充分利用近些年来企业级开发领域不断涌现出的新技术,好比Serverless计算,微服务架构等等。git
Kyma是彻底开源和免费的,任何人均可以试着在本身的本地电脑上进行安装。固然,尝试本身本地安装有一些门槛,由于安装过程当中须要从Google的网站上拖取一些Kubernetes相关镜像,所以须要学会“科(fang)学(zhi)上(he)网(xie)”。github
而SAP Cloud Platform Extension Factory,是SAP在开源项目Kyma上进一步完善而推出的一个商业化解决方案,自己并不单独卖,而是做为SAP云平台的一个组成部分。编程
Kyma和SAP Cloud Platform Extension Factory的关系,就比如Open UI5和SAP Fiori目前使用的UI5框架之间的关系同样。在Jerry这篇文章特殊的上下文里,由于Jerry不想每次都敲出“SAP Cloud Platform Extension Factory这五个单词”,因此下文仍是统一用Kyma这个词。微信
Jerry以前的文章 WordPress,SAP Kyma和微信三者的集成,介绍了如何使用SAP Kyma中的Lambda Function,监听WordPress中的post.created事件,从而完成对WordPress的加强。架构
今天这篇文章,让咱们把经过SAP Kyma进行扩展的对象换成C/4HANA中的一朵云,SAP Cloud for Customer(C4C)。Jerry但愿每当C4C中有新的Opportunity建立时,C4C都会把这个事件通知给Kyma上的Lambda Function,后者做为事件监听函数,能够进行对应的处理,具体作什么逻辑,你们能够试着开开本身的脑洞。框架
好比实现一个Account Address Enrichment的功能,就是用户在C4C里建立Account时,只须要维护基本的地址信息,而后点击保存,C4C发送事件给Kyma,后者接到这个事件后,调用SAP API Hub上的Address微服务,把丰富事后的地址详情经过C4C Account OData API调用的方式,写回C4C。经过这个加强,减小了C4C用户录入数据的工做量,同时也展现了Kyma与被其扩展的C/4HANA产品的数据双向读写功能。less
下面咱们就来看看这个扩展如何完成。ide
首先固然是要把C4C同Kyma创建起互相信任的链接了。对于SAP partners来讲,好消息是这个链接的配置是一个黑盒子,经过下图Kyma的Application Connector模块完成,partners不须要了解其技术实现。函数
首先进入SAP Cloud for Customer的Administration的工做中心,打开General Settings视图,进入Event Notification配置UI:微服务
新建一个C4C OData事件和API的消费者:
类型选择SAP Cloud Platform Extension Factory,即Kyma:
这个Remote Environment URL从哪里来呢?就是SAP Kyma应用里的Application Connector对应的url:
到Kyma控制台的应用里,点击Connect Application,就获得了须要维护到C4C里的url:
维护了回调用户名和密码以后,再添加Subscription,即您但愿将Cloud for Customer系统里的哪些BO事件,发布给Kyma:
我选择了Account和Opportunity这两个BO的建立和更新事件,暴露给Kyma:
成功保存并激活配置:
回到Kyma的应用界面,在Provided Services & Events界面下,此时能看到Cloud for Customer发布过来的API和事件了:
进入Kyma Service Management的Catalog界面下,找到从Cloud for Customer系统导入进来的服务,
进入服务明细,能观察到Cloud for Customer系统发布的BO事件的字段参数,
以及该C4C系统全部支持的OData API列表。若是咱们指望在Kyma的Lambda Function里对C4C的数据进行写回操做,就得使用这些OData API.
接下来,咱们就能够基于这些API和事件进行Lambda Function的开发了。
首先基于C4C导入进来的服务,建立一个新的实例:
确保实例处于运行状态:
而后基于该实例建立一个新的Lambda Function:
Lambda Function的触发方式,选择以前C4C暴露的BO建立和修改事件:
因为文章篇幅缘由,这里暂时不介绍在Kyma Lambda Function里如何调用C4C的OData API,而只是简单的打印出C4C传递过来的事件参数:
至此Kyma端的开发和配置就结束了,是否是以为步骤很是简单明了?
如今到C4C里建立一个新的Opportunity,保存:
到C4C的Event Notification Monitoring界面去,观察到Opportunity建立的事件已经成功被投递到Kyma去了,对应的Kyma实例的url也能够在投递明细里查看到。
再回到Kyma Lambda Function的日志界面,这里也看到了Lambda Function实现体里打印出的来自C4C的事件明细:
为何只打印了两个guid呢?由于C4C暴露的BO事件,其参数规范里就只包含了发生事件的当前节点和Root节点的guid. 至于如何在Kyma的Lambda Function里调用C4C的OData, 我们未来再聊。
你们能够试着比较一下,如何使用C4C传统的二次开发方式,该如何监听BO的建立和更新事件呢?那就是使用SAP Cloud Application Studio,在Solution里建立BO加强,而后在BO节点上建立AfterModify并经过ABSL编程实现。
而SAP Kyma的横空出世,确实像SAP的官方宣传那样,给SAP partners们提供了一种不一样于过去在ABAP平台上进行的全新的二次开发方式。经过SAP Kyma提供的事件监听机制,进行SAP二次开发的从业人员再也不须要对被加强的SAP解决方案的技术细节有过多的了解,仅仅在Kyma Lambda Function定义好的接口上下文内,调用公开稳定的API,便可完成开发任务。
但愿本文可以对广大的SAP二次开发从业者们有所启发,感谢阅读。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":