接下来,我们就可以基于这些API和事件进行Lambda Function的开发了。
首先基于C4C导入进来的服务,创建一个新的实例:
确保实例处于运行状态:
然后基于该实例创建一个新的Lambda Function:
Lambda Function的触发方式,选择之前C4C暴露的BO创建和修改事件:
这里简单的打印出C4C传递过来的事件参数:
至此Kyma端的开发和配置就结束了,是不是觉得步骤非常简单明了?
现在到C4C里创建一个新的Opportunity,保存:
到C4C的Event Notification Monitoring界面去,观察到Opportunity创建的事件已经成功被投递到Kyma去了,对应的Kyma实例的url也可以在投递明细里查看到。
再回到Kyma Lambda Function的日志界面,这里也看到了Lambda Function实现体里打印出的来自C4C的事件明细:
为什么只打印了两个guid呢?因为C4C暴露的BO事件,其参数规范里就只包含了发生事件的当前节点和Root节点的guid.
大家可以试着比较一下,如何使用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,即可完成开发任务。
总结
本文通过笔者实际工作中参加过的一个使用 Kyma 基于事件驱动的松耦合方式同 SAP Cloud for Customer 进行集成的项目经验分享,阐述了这种方式同传统的应用内扩展(In Application Extension)相比较的优势。