SAP Cloud Application Programming 介绍(2021 更新版)
這是Jerry 2021年的第 25 篇文章,也是汪子熙公眾號總共第 296 篇原創(chuàng)文章。
最近有朋友給我留言,詢問關(guān)于 SAP Cloud Application Programming(簡稱CAP) 的相關(guān)開發(fā)流程。
早在 SAP 2019 TechEd 上,SAP CTO Juergen Mueller 向 SAP 生態(tài)圈傳遞了一條重要信息:身處云時代大環(huán)境下的 SAP 從業(yè)者,如何選擇最適合自己的 SAP 開發(fā)方式?
Juergen Mueller 給出了下圖所示的決策樹,幫助大家進(jìn)行技術(shù)選型:
決策樹中展示的主要分支解釋如下:
-
如果待實(shí)現(xiàn)的需求,能夠通過非代碼方式來完成,可以嘗試工作流(Workflow) 或者低代碼解決方案(Low-Code),比如 SAP RAD by Mendix,細(xì)節(jié)可以參考 Jerry 這篇文章:SAP云平臺上的Low Code Development(低代碼開發(fā))解決方案。
-
如果只能通過編碼實(shí)現(xiàn)需求,則可以選擇基于 ABAP 技術(shù)棧的 RAP(Restful ABAP Programming) 編程模型,或者非 ABAP 技術(shù)棧的 Cloud Application Programming 模型。
SAP Cloud Application Programming 模型的準(zhǔn)確定義是什么?
SAP 官網(wǎng)的定義是:SAP Cloud Application Programming 是一套由開發(fā)語言,開發(fā)工具和庫有機(jī)集成的框架,提供了一種高效,快捷,全棧式的企業(yè)級服務(wù)和應(yīng)用開發(fā)手段。CAP 包含一套開發(fā)最佳實(shí)踐,讓開發(fā)者能夠?qū)W⒂趹?yīng)用內(nèi)具體業(yè)務(wù)邏輯的開發(fā),而無需分心將精力花在重復(fù)的底層基礎(chǔ)設(shè)施功能的實(shí)現(xiàn)上去。
Jerry 在 2019 年 SAP TechEd 結(jié)束后,曾經(jīng)寫過一篇文章,通過一個在線書店的例子,介紹了 SAP Cloud Application Programming 編程模型的使用方式:
使用Cloud Application Programming模型開發(fā)OData的一個實(shí)際例子
如果大家照著文章里介紹的步驟,自己動手實(shí)踐一遍,不難發(fā)現(xiàn),我們絕大部分工作量都花在了思考并設(shè)計(jì)在線書店里涉及到的業(yè)務(wù)領(lǐng)域模型(Domain Model),比如書籍,書籍類別,作者,訂單及模型間的相互關(guān)聯(lián)關(guān)系。而這些模型本身的增刪改查和持久化邏輯等更底層的技術(shù)實(shí)現(xiàn),全部由 SAP CAP 本身完成,無需應(yīng)用開發(fā)人員操心。SAP CAP 期望通過這種設(shè)計(jì),來提高企業(yè)級應(yīng)用的開發(fā)效率和健壯性。
距離 Jerry 前一篇文章已經(jīng)過去兩年了,最近我抽時間查詢了 SAP 官網(wǎng)關(guān)于 SAP CAP 開發(fā)流程的介紹,發(fā)現(xiàn)其在 2019 年的基礎(chǔ)上,從CAP 提供的開發(fā)工具的使用角度上說,沒有太大的變化,但不少細(xì)節(jié)之處進(jìn)行了優(yōu)化,使用起來感覺更加順暢。
本文介紹的使用 SAP Cloud Application Programming 模型開發(fā)在線書店的過程,分為下列四個步驟:
本文使用到的源代碼,在 SAP 官網(wǎng)上能夠下載。
本文使用基于 nodejs 的 SAP Cloud Application Programming 完成在線書店應(yīng)用的開發(fā),因此需要安裝并配置 nodejs 開發(fā)環(huán)境。
首先使用命令行,安裝 CAP 的 SDK 工具:
npm i -g @sap/cds-dk
完成之后敲 cds 命令,確保能看到下列輸出:
然后創(chuàng)建一個空的 CAP 項(xiàng)目:
cds init bookshop
cds init 命令行創(chuàng)建出來的項(xiàng)目,本質(zhì)上還是一個 nodejs 應(yīng)用,包含了 CAP 應(yīng)用的骨架。我們接下來需要進(jìn)入上圖標(biāo)注了三個序號的文件夾里,進(jìn)行相應(yīng)的業(yè)務(wù)邏輯開發(fā)。
-
app 文件夾里存放的是 CAP 應(yīng)用的前端 UI 頁面,這些頁面消費(fèi)該 CAP 應(yīng)用提供的 OData 服務(wù),將業(yè)務(wù)數(shù)據(jù)以 UI 方式展示出來。可以基于任何前端框架實(shí)現(xiàn)。
-
db 文件夾里存放的是 CAP 的業(yè)務(wù)模型定義,以及持久化數(shù)據(jù)庫相關(guān)的資源。
-
srv 文件夾里存放的是 OData 服務(wù)定義。這些 OData 服務(wù)負(fù)責(zé)將 db 里定義的業(yè)務(wù)模型承載的業(yè)務(wù)數(shù)據(jù)暴露給消費(fèi)者,比如被 app 文件夾里開發(fā)的前端應(yīng)用所消費(fèi)。
用 Visual Studio Code 打開新建好的 CAP 項(xiàng)目,首先在 db 文件夾的 schema.cds 文件里,創(chuàng)建在線書店業(yè)務(wù)模型。使用關(guān)鍵字 entity 定義一個名為 Books 的模型。
冒號后面的 managed,包含了幾乎所有業(yè)務(wù)模型都需要定義的 Administrative 信息,即創(chuàng)建時間,創(chuàng)建者,修改時間,修改者。因此 SAP CAP 出于重用目的,將這四個字段包裹在名為 managed 的 aspect 中。應(yīng)用人員定義的業(yè)務(wù)模型,通過 : managed 的語法將其包含入內(nèi)。
ABAP 開發(fā)人員可以將這種機(jī)制,類比成 ABAP DDIC 的 Include Structure.
采用同樣的語法,定義書籍作者(Authors) 和書籍類別(Genres)模型后,我們下一個需要考慮的問題就是,如何插入業(yè)務(wù)數(shù)據(jù)到這些模型對應(yīng)的數(shù)據(jù)庫表里。
SAP CAP 提供了一種比較簡單的數(shù)據(jù)導(dǎo)入方式,即本地維護(hù)一些包含業(yè)務(wù)數(shù)據(jù)的 csv 文件,將這些 csv 文件導(dǎo)入到模型對應(yīng)的數(shù)據(jù)庫表里。無獨(dú)有偶,SAP Commerce Cloud (電商云)也支持這種 csv 文件導(dǎo)入的方式,實(shí)現(xiàn)數(shù)據(jù)導(dǎo)入功能。這種數(shù)據(jù)導(dǎo)入方式,在 SAP Commerce Cloud 里稱為 ImpEx (Import & Export 的簡寫).
我在 db 文件夾下 schema.cds 里定義的命名空間為 sap.capire.bookshop, 因此為了使用 csv 文件向這個命名空間里的數(shù)據(jù)庫表導(dǎo)入數(shù)據(jù),需要按照下列命名規(guī)范創(chuàng)建 csv 文件:
<命名空間>-<模型名稱>.csv
比如我導(dǎo)入數(shù)據(jù)庫的作者數(shù)據(jù),創(chuàng)建的 csv 文件名為:sap.capire.bookshop-Authors.csv
書籍?dāng)?shù)據(jù):sap.capire.bookshop-Books.csv
書籍類別數(shù)據(jù):sap.capire.bookshop-Genres.csv
csv 文件維護(hù)完畢之后,執(zhí)行 cds deploy 命令,將 csv 文件導(dǎo)入到數(shù)據(jù)庫里。命令中 sqlite 冒號后面是我指定的數(shù)據(jù)庫名稱:my.db
cds deploy --to sqlite:my.db
數(shù)據(jù)導(dǎo)入成功后,在Visual Studio Code SQLite Explorer里能瀏覽數(shù)據(jù)庫表及其內(nèi)容:
接下來,需要將上圖所示的 my.db 數(shù)據(jù)庫中的業(yè)務(wù)數(shù)據(jù),通過 OData 服務(wù),暴露給消費(fèi)者。
SAP CAP 采用聲明式(Declarative)的服務(wù)定義方式,將業(yè)務(wù)數(shù)據(jù)通過 OData 暴露出來。
在 srv 文件夾下新建一個 cat-service.cds 文件,實(shí)現(xiàn)一個圖書的目錄瀏覽服務(wù)(Catalog Service).
上圖 OData 服務(wù)源代碼一些關(guān)鍵點(diǎn)說明:
-
使用 using 關(guān)鍵字,導(dǎo)入 db 文件夾下 schema.cds 文件中定義的命名空間 sap.capire.bookshop 下包含的業(yè)務(wù)模型。
-
@path 注解,定義了該目錄服務(wù)的 endpoint 為 /browse.
-
@readonly 注解,表明該 OData 服務(wù)只能以只讀的方式,暴露 Books 和 ListOfBooks 數(shù)據(jù)給消費(fèi)者。
因?yàn)?Books 模型的定義里,沒有直接包含書籍的作者名,而是通過一個名為 author 的 Association,指向?qū)?yīng)的 Authors 模型。因此,上圖第五行,通過auth.name 后面的 as 關(guān)鍵字,將 Association 指向的作者模型的 name 字段,內(nèi)聯(lián)到 OData Books 模型中來。
執(zhí)行 cds run 命令,啟動開發(fā)好的 CAP 應(yīng)用:
http://localhost:4004 訪問,就可以測試我們通過以上三個步驟,開發(fā)完成的 OData 服務(wù)了。
這個由 cds SDK 自動生成的默認(rèn)界面,提供了很多 OData 服務(wù)測試功能。
比如點(diǎn)擊 Books 超鏈接,能通過下面 url 代表的 OData 服務(wù)調(diào)用,查看到服務(wù)器數(shù)據(jù)庫上所有的書籍?dāng)?shù)據(jù):
http://localhost:4004/browse/Books
點(diǎn)擊 Fiori Preview 超鏈接,能夠在一個自動生成的 SAP Fiori Elements 應(yīng)用里,調(diào)用上述 url,將書籍?dāng)?shù)據(jù)展示在 Fiori UI 上。
Jerry 后續(xù)的文章,會根據(jù)該在線書店的例子,介紹更多 SAP Cloud Application Programming 開發(fā)相關(guān)的內(nèi)容,敬請期待。
更多閱讀
-
使用SAP Cloud Application Programming模型開發(fā)OData的一個實(shí)際例子
-
30分鐘用Restful ABAP Programming模型開發(fā)一個支持增刪改查的Fiori應(yīng)用
-
Jerry帶您了解Restful ABAP Programming模型系列之二:Action和Validation的實(shí)現(xiàn)
-
Jerry帶您了解Restful ABAP Programming模型系列之三:云端ABAP應(yīng)用調(diào)試
-
SAP云平臺上的Low Code Development(低代碼開發(fā))解決方案
更多Jerry的原創(chuàng)文章,盡在:“汪子熙”:
總結(jié)
以上是生活随笔為你收集整理的SAP Cloud Application Programming 介绍(2021 更新版)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python跟pycharm的区别_py
- 下一篇: 皇室战争全球锦标赛奖励怎么领