十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
本篇内容介绍了“如何使用SAP Cloud Application Programming模型开发OData”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
10年积累的成都网站设计、网站制作经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有若羌免费网站建设让你可以放心的选择与我们合作。
Juergen Mueller用了一棵决策树来向大家介绍,对于拥有不同开发技能水平的SAP从业者,可以按照这棵树,根据自身情况和项目需要来选择不同层次和组合的开发工具以及编程模型。
上图右边的分支表明,如果不想抛弃已经习得的ABAP开发技能,可以选择SAP云平台上的ABAP编程环境;反之,如果青睐nodejs,Java这些技术栈,那么SAP云平台也不会让你失望:SAP Cloud Application Programming Model(简称为CAP),是SAP推荐的在SAP Cloud Platform上进行开发的最佳实践。
究竟什么是SAP Cloud Application Programming Model?SAP官网上给出了定义:一套由开发语言,开发工具和库有机集成的框架,提供了一种高效,快捷,全栈式的企业级服务和应用开发手段。CAP包含一套开发最佳实践,让开发者能够专注于应用内具体业务逻辑的开发,而无需分心将精力花在重复的底层基础设施功能的实现上去。
看一个具体的例子,通过Cloud Application Programming Model实现一个简单的在线书店应用。书店里出售很多书(Books),每本书包含ID,名称,作者(Author)和库存这四个字段。用户通过创建订单(Orders)进行购买。
如果是用ABAP技术栈实现这个需求,一种比较容易的方式是使用事务码SEGW,通过OData协议来实现。在SEGW里创建Books,Author和Orders模型,以及对应的增删改查。Jerry在去年的文章 SAP OData编程指南 里曾详细介绍。再后来有了CDS view,可以通过在CDS view上加注解@OData.publish的方式快速创建OData服务。
到了SAP Cloud Platform ABAP编程环境上,我们有了更加好用的工具:Restful ABAP Programming Model,
30分钟用Restful ABAP Programming模型开发一个支持增删改查的Fiori应用
Jerry带您了解Restful ABAP Programming模型系列之二:Action和Validation的实现
从以上短短的描述,我们能够感受到,近些年来ABAP技术栈随着SAP向云端转型而不断快速向前演进的趋势。
下面我们就来看看如何用SAP CAP实现这个在线书店的需求。
命令行执行下面的命令:
npm set @sap:registry= https://npm.sap.com
npm i -g @sap/cds
从SAP的npm仓库里下载cds库并进行全局安装:
接下来直接敲cds命令,如果看到下面的帮助信息,说明安装成功了。此后所有的CAP开发,都围绕着这个cds命令进行。
CAP开发的IDE可以使用Visual Studio Code,当然也可以用其他文本编辑工具。推荐Visual Studio Code的原因是SAP发布了一款针对CAP开发的Visual Studio Code扩展,支持语法高亮和静态检查,可以从SAP官网下载:
https://tools.hana.ondemand.com/#cloud
和我们开发一个nodejs应用类似,基于CAP的编程,第一步就是cds init,这个命令会自动帮我们创建CAP应用的骨架和从http://npm.sap.com下载CAP应用必需的库文件。
cds init执行完毕后,打开Visual Studio Code,界面如下,这些全是cds init自动生成的:
新建srv文件夹,下面创建文件cat-service.cds,完成Books,Authors和Orders的建模,即定义每个模型的字段,以及模型间的跳转关系:
定义完之后,执行命令cds run,就可以本地预览我们刚刚创建的模型了。这个命令启动了一个本地服务器,通过 http://localhost:4004访问:
到目前为止,因为我们没有实现这个模型的持久层,所以还观察不到任何数据。
在实现持久层之前,我们可以先mock一些数据。新建cat-service.js, 在里面硬编码一些测试数据:
这样,再次请求Books和Authors,就能在浏览器里看到mock的数据了:
下面我们进行持久层的相关开发。新建一个文件夹db,下面新建一个文件data-model.cds,把之前实现在cat-service.cds里的模型定义拷贝过来。第17行的managed意思是把Orders模型的增删改查操作托管给框架完成。
此时cat-service.cds里的实现就干净多了,直接重用上一步data-model.cds里定义好的模型。注意此处的@readonly和@insertonly注解。
这个例子里我们选用SQLite这个轻型数据库来存储数据。用命令行npm i sqlite3 -D安装SQLite,然后进行数据库部署:
cds deploy --to sqlite:db/my-bookshop.db
根据cds deploy命令的输出提示,package.json也相应被更新了:
前面提过Books和Authors这两个模型具有@readonly注解,因此我们新建两个csv文件,维护一些数据在文件内:
然后将这两个csv文件通过命令cds deploy导入到数据库里。
登录sqlite控制台,使用select语句查看成功从csv文件导入的数据:
前面提到Orders的注解是@insertonly, 现在我们想实现一个新功能,每次针对一本书下单后,该图书的库存减一。
《生化危机》目前只有12本了:
打开之前存放mock数据的cat-service.js, 在下单之前的hook里实现库存减一的操作:
然后进行测试:在postman里执行post请求,下单再买一本:
此时再次执行get请求,发现《生化危机》的库存已经和期望的一样扣掉了一本了:
“如何使用SAP Cloud Application Programming模型开发OData”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!