一文说清ABAP RESTful编程模型

1. 背景介绍

RESTful是一种网络应用程序的设计风格和开发方式。REST是Representational State Transfer的简称,中文翻译为“表述性状态转移”。单从定义上来理解REST可能并不是很好理解,对于刚刚接触这一概念的同学,可以将REST理解为一种设计风格,它描述了一个架构样式的网络系统,比如 web 应用程序。

SAP支持ABAP语言构建RESTful的应用程序,使用ABAP RESTful编程模型可以快速开发SAP Fiori应用程序,或是web服务接口。

2. 原理与架构

SAP的ABAP RESTful Programming Model提供了一套标准的架构,使用这套架构可以非常方便地开发端到端的应用程序,而且天然具有RESTful的特性。其架构图如下:

这套架构包含3层:

    * Data Modeling & Behavior: 数据模型 & 行为层;在这一层主要完成“CDS数据建模”,“模型行为定义”,以及“行为实现”三项工作。

        - 基于CDS(Core Data Services)的数据建模在此就不过多的解释,CDS是利用HANA高性能的一个有力工具;

        - 行为定义(Behavior Definition)简称BDEF,其使用的BDL(Behavior Definition Language)完成,用来支持业务模型的各种操作,例如CREATE,UPDATE,DETETE等行为,行为定义主要是服务于这个应用程序的各种事务操作。

        - 对于各种“行为”的实现逻辑,是通过ABAP代码来实现的,也即实现ABAP对应Class中的各种对应的方法,例如CREATE,UPDATE,DETETE等。

    * Business Service Provisioning: 业务服务准备层;在这一层主要完成各种“服务”的定义的和实现。

        - Service Definition:服务定义,也即是对上一步中数据模型的映射,有哪些数据和行为是需要以“服务”的形式暴露出来。

        - Service Binding: 在服务绑定中,会完成具体“协议protocol”的实施,以及确定具有提供给consumer的服务类型。(一个Service Definition可以有一个或多个Service Binding)。

    * Service Consumption: 服务消费层;在这一层,各种暴露出来的服务以OData的形式提供给Fiori或者其他前端应用程序进行使用。

3. 建立模型&发布服务

数据建模层的Core Data Services(CDS)的实现是基于底层的数据库表,在CDS层可以使用并直接操作数据库表中的原始数据;

在服务准备层,可以进一步通过CDS Project View将于前台应用程序相关的字段暴露出来,在Projection View中,可用通过UI annotation“注解” 来控制具体字段在的前台UI的显示方式。

通过Service Definition,可以进一步定义哪些数据会被暴露成具有的Business Service。

通过Service Binding,可以绑定一个定义好的service到一个CS(Client-Server)架构的通信协议,例如我们所熟知的OData。同时,使用Service Binding可以完成SAP Fiori Element的预览,在预览中看到应用呈现的具体效果。

至此,我们已经介绍了从底层DB table建模开始到服务发布的过程,通过以上步骤,已经可以完成一个read-only的应用程序开发(可以通过这个App完成数据展示和查询的功能)。

4. 行为的定义与增强

如果除了显示和查询外,应用程序还需要有更丰富的行为,我们则可以通过定义“行为 Behavior”和实施“Action & Validation”来实现。

Behavior Definition可以进一步定义对数据的创建、更新、删除(CREATE、UPDATE、DELETE)等操作;在Behavior implementation中可以通过ABAP代码进一步完成具体的创建、更新、删除逻辑(在这一步中,相关的创建、更新、删除ABAP代码会自动生成,我们只需要简单地定义下实现类的声明即可,非常方便)。

除了对于数据的“增、删、改、查”等基础功能,在实际的业务中可能还存在对于“数据的有效性校验”等需求,对于这个需求,可用通过增加实例的“Validation”的方式实现;对于更复杂的业务逻辑,可以进一步同时使用增加“Action”的方式来实现,例如在前台UI点击某一button后,执行某一操作等类似的需求。

5. 小结

可以看到,SAP提供了一套非常方便的ABAP RESTful编程框架,开发人员可以基于这套框架,轻松地创建SAP Fiori应用程序或是其他Web服务,并不需要了解具体的底层技术细节,这也让开发者有了更多的时间专注于业务逻辑。这种技术趋势,更符合企业的实际需求。

SAP的ABAP RESTful编程框架不仅适用用on-premise的场景,其同样适用于SAP Cloud Platform上的开发。因此,对于ABAPer而言,使用ABAP RESTful在Cloud上快速构建、发布应用也是非常方便的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章