`
JerryWang_SAP
  • 浏览: 1032512 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

使用SAP Cloud Application Programming模型开发OData的一个例子

阅读更多

刚刚过去的SAP TechEd上,SAP CTO Juergen Mueller向外界传递了一个重要的信息:身处云时代大环境下的SAP从业者,在SAP云平台上该如何选择适合自己的开发方式?

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请求,发现《生化危机》的库存已经和期望的一样扣掉了一本了:

这种频繁下单的顾客,估计是和Jerry一样的生化系列爱好者。

希望这个例子能够帮助大家对如何使用Cloud Application Programming Model进行开发有一些基本的认识。感谢阅读。

要获取更多Jerry的原创文章,请关注公众号"汪子熙":

0
0
分享到:
评论

相关推荐

    Using SAP Cloud Application Programming Model and SAP Fior.zip

    标题 "Using SAP Cloud Application Programming Model and SAP Fior" 暗示了我们要探讨的主题集中在SAP的两个关键技术领域:SAP Cloud Application Programming Model (CAP) 和 SAP Fiori。这两个技术在构建云原生...

    ui5-cap-event-app:在自由式SAPUI5应用程序和SAP Fiori elements应用程序中以草稿模式展示SAP Cloud Application Programming Model和OData V4

    ui5-cap-event-app 展示了两个UI5用户界面,一个是使用自由式 (或更确切地说是 ),另一个是使用,带有后端,使用具有。描述此应用程序使用简单的与会者注册和事件管理功能,作为演示数据处理和整体设置的示例方案...

    Sap Odata ABAP开发教程.zip

    本教程将详细介绍以上概念,并通过实际示例指导你完成一个完整的SAP ODATA ABAP开发流程,包括从数据模型设计、服务创建、业务逻辑实现到服务测试的全过程。学习完这个教程,你将具备在SAP环境中构建高效、安全的...

    cds-scp-api:用于SAP Cloud Platform API消费的CDS扩展

    节点模块CDS-SCP-API在SAP Cloud Platform上的Cloud Application Programming(CAP)模型中简化了来自SAP OnPremise和Cloud API,Microsoft Office 365 API,Google Cloud Platform API和其他REST API的消耗性外部...

    SAP开发者指导(PDF)

    学习如何使用Cloud SDK,以及如何与SAP Cloud Platform Integration和SAP Cloud Platform Extension Factory等服务交互,对于开发云原生应用至关重要。 7. **SAP Fiori Launchpad**:这是Fiori应用的入口点,开发者...

    SAP PO/PI教程 Process Orchestration The Comprehensive Guide

    11.5 SAP BPM Application Programming Interface 11.5.1 Prerequisite to Using the SAP BPM API 11.5.2 Implementation Aspects and Examples 11.6 SAP Business Process Management OData 11.6.1 OData ...

    在SAP中查询TABLE的18种方法

    SAP Analytics Cloud是一个基于云的分析平台,支持连接到SAP TABLE,进行实时分析和可视化报告。 ### 16. SAP Fiori SAP Fiori是一套基于HTML5的用户界面框架,可以构建美观且易于使用的应用程序,其中许多应用...

    SAP-CAP-Training

    CAP(Cloud Application Programming)是SAP推出的一种开发框架,旨在帮助开发者构建、运行和管理云原生(SaaS)应用程序。这个名为"SAP-CAP-Training"的压缩包文件很可能包含了关于如何使用SAP CAP进行开发的学习资料...

    Fiori 接口保存查询日志

    在 SAP 的 Fiori 应用开发中,"Fiori 接口保存查询日志" 是一个关键功能,主要用于记录用户在系统中的查询操作,以便于监控、审计和故障排查。这一功能通常涉及到后端 ABAP 服务器上的编程,因此与 ABAP 开发紧密...

    sap_cap_and_fiori:SAP Cap和Fiori模板项目

    SAP Cloud Application Programming Model (CAP) 是SAP推出的一种先进的开发模型,旨在简化企业级云应用的构建过程。CAP 提供了一种跨平台、多语言的方法来构建应用程序,支持Java、Node.js和ABAP等编程语言。通过...

    Javascript_SAP

    JavaScript SAP 是一个与SAP系统集成的JavaScript技术专题,它主要关注如何利用JavaScript技术与SAP企业级应用进行交互和数据通信。JavaScript作为客户端脚本语言,在网页开发中扮演着重要角色,而在企业级应用领域...

    包1

    在IT领域,ABAP(Advanced Business Application Programming)是一种专门用于SAP系统的企业级编程语言。SAP作为全球领先的企业资源规划(ERP)软件,广泛应用于各大企业的核心业务流程。本知识体系将深入探讨ABAP的...

Global site tag (gtag.js) - Google Analytics