刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intelligent Enterprise on SAP Cloud Platform,中文即“在SAP云平台上为智慧企业建立扩展应用”。git
本文是Jerry对SAP社区这篇博客Making development of extensions easier – SAP Cloud Platform Extension Factory的一些我的解读,并不是逐字逐词的简单翻译。编程
SAP的一个宏伟目标:未来SAP全部产品(不论是On-Premises仍是云解决方案)的二次开发平台,统一为SAP云平台。而现状是,SAP S/4HANA Cloud和SAP C/4HANA已经能够经过SAP云平台扩展了,而上图左边的一些其余产品,例如同为云解决方案的SAP Concur,以及本地部署的S/4HANA On-Premises和SAP ECC,如何用SAP云平台对这些产品作扩展,是SAP未来努力的方向。安全
目前SAP云平台上已经有了下列这些组件,SAP Cloud Platform的做用就是将它们组合起来(Orchestration),像Kubernetes编排pod那样,让其发挥出1+1>2的做用:框架
SAP Cloud Platform Extension Factory
SAP Cloud Application Programming Model (CAP)
ABAP RESTful Programming Model (RAP)
SAP Cloud Platform Enterprise Messaging
SAP Cloud SDK
SAP Web IDE
SAP Cloud Platform API Management
SAP API Business Hub
SAP Cloud Platform Workflowide
SAP Cloud Platform Extension Factory是SAP推荐的"智慧企业的专属云原生扩展框架",在开源项目Kyma的基础上,借助SAP云平台提供的Cloud Connector和Connectivity Service,保证了企业级应用所需的标准化和安全性。函数
一旦SAP解决方案同SAP云平台创建绑定关系后,其对应实例就会被分配给云平台上的subaccount,而该产品支持的API和事件会发布到SAP云平台上。开发者们可以直接在云平台上浏览和消费这些API及事件。工具
觉得SAP S/4HANA Cloud建立扩展为例,首先基于Open Service Broker API建立一个S/4HANA Cloud Extensibility Service的实例,而后在该subaccount space下的开发人员,便可将该实例绑定到本身建立的扩展应用去,并消费该实例暴露的服务。ui
开始搬砖以前,开发人员能够在SAP推荐的两种编程模型里进行选择,究竟是用SAP Cloud Application Programming Model (CAP) ,仍是ABAP RESTful Application Programming Model (RAP).编码
先看看这两种编程模型各自的特点。spa
(1) 天生支持多租户(native multi-tenant enablement)
(2) 同一个SAP Cloud Platform帐号建立的基于CAP模型的应用能共享API和事件
(3) 终端用户可以很容易的使用key user tool等工具对此类应用进行字段级别的扩展 - Field Extensibility
若是SAP解决方案的标准功能支持事件发布,则能够经过SAP Cloud Platform上一个叫作Enterprise Messaging的组件,将这些事件发布到SAP Cloud Platform Extension Factory上,这样SAP二次开发人员能够订阅这些事件,编写对应的事件响应函数。
一些具体的例子:
下图是对应的编码实现订阅S/4HANA Cloud系统服务订单建立事件并做出响应的例子:经过eventBus实例注册ServiceOrder.Created事件,在其触发后,调用技师分配函数进行响应。
在分配S/4HANA Cloud系统里的技师资源时,咱们须要消费对应的API,经过SAP Cloud SDK能够轻易实现,不用从更底层的HTTP级别的函数调用开始编写。
SAP Cloud SDK对底层API进行了封装,写起来如同天然语言同样,可读性极佳:
采用这种模型开发的扩展应用能享受到SAP在云端ABAP领域提供的最新技术和特性,扩展自己同被扩展的解决方案核心代码完全解除了耦合,所以又被称为Side-by-side扩展。这种模式的扩展能很好的实现所谓digital core code clean的目标。
因为RAP模型自己的语言仍是ABAP,所以RAP在工做于ABAP技术栈的SAP产品扩展需求时显得更加如鱼得水。
基于Restful ABAP Programming模型的开发套路,Jerry以前的文章已经介绍过了:
(1) 根据实际业务建立基于CDS view的模型。
(2) 给模型添加transactional behavior,在validation,determination和actions里编写业务逻辑。
(3) 建立business service,将前面建立并实现的模型经过OData暴露出来。
(4) 建立Fiori Elements应用,消费第三步建立的business service,将业务数据经过Fiori UI展现出来。
总结一下,云时代SAP从业人员进行二次开发的工具集:
SAP Cloud Platform, Application runtime
SAP Cloud Platform, ABAP environment
SAP Cloud Platform Enterprise Messaging
SAP Web IDE
SAP Cloud Platform Connectivity (includes Cloud Connector for on-premise connectivity)
SAP Cloud SDK
SAP Cloud Platform API Management
SAP API Business Hub
SAP官网上给出的SAP Cloud Platform Extension Factory演进的路线图:
好比图中标注的,在2019年第四季度,SAP Cloud Platform Extension Factory会添加对SAP S/4HANA On-Premises的支持。固然,路线图中标注了一条:
"This is the current state of planning and may be changed by SAP at any time without notice".
让咱们在之后的平常工做中,好好消化SAP经过TechEd传达给咱们的这一精神吧,感谢阅读。
要获取更多Jerry的原创文章,请关注公众号"汪子熙":