这是 Jerry 2021 年的第 25 篇文章,也是汪子熙公众号总共第 296 篇原创文章。
最近有敌人给我留言,询问对于 SAP Cloud Application Programming(简称 CAP) 的相干开发流程。
早在 SAP 2019 TechEd 上,SAP CTO Juergen Mueller 向 SAP 生态圈传递了一条重要信息:身处云时代大环境下的 SAP 从业者,如何抉择最适宜本人的 SAP 开发方式?
Juergen Mueller 给出了下图所示的决策树,帮忙大家进行技术选型:
决策树中展现的次要分支解释如下:
- 如果待实现的需要,可能通过非代码形式来实现,能够尝试工作流 (Workflow) 或者低代码解决方案(Low-Code),比方 SAP RAD by Mendix,细节能够参考 Jerry 这篇文章:SAP 云平台上的 Low Code Development(低代码开发) 解决方案。
- 如果只能通过编码实现需求,则能够抉择基于 ABAP 技术栈的 RAP(Restful ABAP Programming) 编程模型,或者非 ABAP 技术栈的 Cloud Application Programming 模型。
SAP Cloud Application Programming 模型的精确定义是什么?
SAP 官网的定义是:SAP Cloud Application Programming 是一套由开发语言,开发工具和库有机集成的框架,提供了一种高效,快捷,全栈式的企业级服务和利用开发伎俩。CAP 蕴含一套开发最佳实际,让开发者可能专一于利用内具体业务逻辑的开发,而无需分心将精力花在反复的底层基础设施性能的实现下来。
Jerry 在 2019 年 SAP TechEd 完结后,已经写过一篇文章,通过一个在线书店的例子,介绍了 SAP Cloud Application Programming 编程模型的应用形式:
应用 Cloud Application Programming 模型开发 OData 的一个理论例子
如果大家照着文章里介绍的步骤,本人入手实际一遍,不难发现,咱们绝大部分工作量都花在了思考并设计在线书店里波及到的业务畛域模型(Domain Model),比方书籍,书籍类别,作者,订单及模型间的互相关联关系。而这些模型自身的增删改查和长久化逻辑等更底层的技术实现,全副由 SAP CAP 自身实现,无需利用开发人员操心。SAP CAP 冀望通过这种设计,来进步企业级利用的开发效率和健壮性。
间隔 Jerry 前一篇文章曾经过来两年了,最近我抽时间查问了 SAP 官网对于 SAP CAP 开发流程的介绍,发现其在 2019 年的根底上,从 CAP 提供的开发工具的应用角度上说,没有太大的变动,但不少细节之处进行了优化,应用起来感觉更加顺畅。
本文介绍的应用 SAP Cloud Application Programming 模型开发在线书店的过程,分为下列四个步骤:
- 创立业务模型
- 将业务数据导入数据库表
- 开发 OData 服务,将业务数据裸露给消费者
- 开发前端 UI 页面,通过 OData 服务,将步骤 2 筹备的业务数据展现进去
本文应用到的源代码,在 SAP 官网上可能下载。
本文应用基于 nodejs 的 SAP Cloud Application Programming 实现在线书店利用的开发,因而须要装置并配置 nodejs 开发环境。
- 创立业务模型
首先应用命令行,装置 CAP 的 SDK 工具:
npm i -g @sap/cds-dk
实现之后敲 cds 命令,确保能看到下列输入:
而后创立一个空的 CAP 我的项目:
cds init bookshop
cds init 命令行创立进去的我的项目,实质上还是一个 nodejs 利用,蕴含了 CAP 利用的骨架。咱们接下来须要进入上图标注了三个序号的文件夹里,进行相应的业务逻辑开发。
- app 文件夹里寄存的是 CAP 利用的前端 UI 页面,这些页面生产该 CAP 利用提供的 OData 服务,将业务数据以 UI 形式展现进去。能够基于任何前端框架实现。
- db 文件夹里寄存的是 CAP 的业务模型定义,以及长久化数据库相干的资源。
- srv 文件夹里寄存的是 OData 服务定义。这些 OData 服务负责将 db 里定义的业务模型承载的业务数据裸露给消费者,比方被 app 文件夹里开发的前端利用所生产。
用 Visual Studio Code 关上新建好的 CAP 我的项目,首先在 db 文件夹的 schema.cds 文件里,创立在线书店业务模型。应用关键字 entity 定义一个名为 Books 的模型。
冒号前面的 managed,蕴含了简直所有业务模型都须要定义的 Administrative 信息,即创立工夫,创建者,批改工夫,批改者。因而 SAP CAP 出于重用目标,将这四个字段包裹在名为 managed 的 aspect 中。利用人员定义的业务模型,通过 : managed 的语法将其蕴含入内。
ABAP 开发人员能够将这种机制,类比成 ABAP DDIC 的 Include Structure.
采纳同样的语法,定义书籍作者 (Authors) 和书籍类别(Genres) 模型后,咱们下一个须要思考的问题就是,如何插入业务数据到这些模型对应的数据库表里。
- 将业务数据导入数据库表
SAP CAP 提供了一种比较简单的数据导入形式,即本地保护一些蕴含业务数据的 csv 文件,将这些 csv 文件导入到模型对应的数据库表里。独一无二,SAP Commerce Cloud (电商云)也反对这种 csv 文件导入的形式,实现数据导入性能。这种数据导入形式,在 SAP Commerce Cloud 里称为 ImpEx (Import & Export 的简写).
我在 db 文件夹下 schema.cds 里定义的命名空间为 sap.capire.bookshop, 因而为了应用 csv 文件向这个命名空间里的数据库表导入数据,须要依照下列命名标准创立 csv 文件:
< 命名空间 >-< 模型名称 >.csv
比方我导入数据库的作者数据,创立的 csv 文件名为:sap.capire.bookshop-Authors.csv
书籍数据:sap.capire.bookshop-Books.csv
书籍类别数据:sap.capire.bookshop-Genres.csv
csv 文件维护结束之后,执行 cds deploy 命令,将 csv 文件导入到数据库里。命令中 sqlite 冒号前面是我指定的数据库名称:my.db
cds deploy –to sqlite:my.db
数据导入胜利后,在 Visual Studio Code SQLite Explorer 里能浏览数据库表及其内容:
- 开发 OData 服务,将业务数据裸露给消费者
接下来,须要将上图所示的 my.db 数据库中的业务数据,通过 OData 服务,裸露给消费者。
SAP CAP 采纳申明式 (Declarative) 的服务定义形式,将业务数据通过 OData 裸露进去。
在 srv 文件夹下新建一个 cat-service.cds 文件,实现一个图书的目录浏览服务(Catalog Service).
上图 OData 服务源代码一些关键点阐明:
- 应用 using 关键字,导入 db 文件夹下 schema.cds 文件中定义的命名空间 sap.capire.bookshop 下蕴含的业务模型。
- @path 注解,定义了该目录服务的 endpoint 为 /browse.
- @readonly 注解,表明该 OData 服务只能以只读的形式,裸露 Books 和 ListOfBooks 数据给消费者。
因为 Books 模型的定义里,没有间接蕴含书籍的作者名,而是通过一个名为 author 的 Association,指向对应的 Authors 模型。因而,上图第五行,通过 auth.name 前面的 as 关键字,将 Association 指向的作者模型的 name 字段,内联到 OData Books 模型中来。
执行 cds run 命令,启动开发好的 CAP 利用:
http://localhost:4004 拜访,就能够测试咱们通过以上三个步骤,开发实现的 OData 服务了。
这个由 cds SDK 主动生成的默认界面,提供了很多 OData 服务测试性能。
比方点击 Books 超链接,能通过上面 url 代表的 OData 服务调用,查看到服务器数据库上所有的书籍数据:
http://localhost:4004/browse/…
点击 Fiori Preview 超链接,可能在一个主动生成的 SAP Fiori Elements 利用里,调用上述 url,将书籍数据展现在 Fiori UI 上。
Jerry 后续的文章,会依据该在线书店的例子,介绍更多 SAP Cloud Application Programming 开发相干的内容,敬请期待。
更多浏览
- 应用 SAP Cloud Application Programming 模型开发 OData 的一个理论例子
- 30 分钟用 Restful ABAP Programming 模型开发一个反对增删改查的 Fiori 利用
- Jerry 带您理解 Restful ABAP Programming 模型系列之二:Action 和 Validation 的实现
- Jerry 带您理解 Restful ABAP Programming 模型系列之三:云端 ABAP 利用调试
- SAP 云平台上的 Low Code Development(低代码开发)解决方案
更多 Jerry 的原创文章,尽在:” 汪子熙 ”: