使用SAP Cloud Application Programming模型開發OData的一個實際例子

i042416發表於2019-11-23

剛剛過去的SAP TechEd上,SAP CTO Juergen Mueller向外界傳遞了一個重要的資訊:身處雲時代大環境下的SAP從業者,在SAP雲平臺上該如何選擇適合自己的開發方式?

Juergen Mueller用了一棵決策樹來向大家介紹,對於擁有不同開發技能水平的SAP從業者,可以按照這棵樹,根據自身情況和專案需要來選擇不同層次和組合的開發工具以及程式設計模型。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

上圖右邊的分支表明,如果不想拋棄已經習得的ABAP開發技能,可以選擇SAP雲平臺上的ABAP程式設計環境;反之,如果青睞nodejs,Java這些技術棧,那麼SAP雲平臺也不會讓你失望:SAP Cloud Application Programming Model(簡稱為CAP),是SAP推薦的在SAP Cloud Platform上進行開發的最佳實踐。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

究竟什麼是SAP Cloud Application Programming Model?SAP官網上給出了定義:一套由開發語言,開發工具和庫有機整合的框架,提供了一種高效,快捷,全棧式的企業級服務和應用開發手段。CAP包含一套開發最佳實踐,讓開發者能夠專注於應用內具體業務邏輯的開發,而無需分心將精力花在重複的底層基礎設施功能的實現上去。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

看一個具體的例子,透過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的實現

使用SAP Cloud Application Programming模型開發OData的一個實際例子

從以上短短的描述,我們能夠感受到,近些年來ABAP技術棧隨著SAP向雲端轉型而不斷快速向前演進的趨勢。

下面我們就來看看如何用SAP CAP實現這個線上書店的需求。

命令列執行下面的命令:

npm set @sap:registry=
npm i -g @sap/cds

從SAP的npm倉庫裡下載cds庫並進行全域性安裝:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

接下來直接敲cds命令,如果看到下面的幫助資訊,說明安裝成功了。此後所有的CAP開發,都圍繞著這個cds命令進行。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

CAP開發的IDE可以使用Visual Studio Code,當然也可以用其他文字編輯工具。推薦Visual Studio Code的原因是SAP釋出了一款針對CAP開發的Visual Studio Code擴充套件,支援語法高亮和靜態檢查,可以從SAP官網下載:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

和我們開發一個nodejs應用類似,基於CAP的程式設計,第一步就是cds init,這個命令會自動幫我們建立CAP應用的骨架和從 npm.sap.com 下載CAP應用必需的庫檔案。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

cds init執行完畢後,開啟Visual Studio Code,介面如下,這些全是cds init自動生成的:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

新建srv資料夾,下面建立檔案cat-service.cds,完成Books,Authors和Orders的建模,即定義每個模型的欄位,以及模型間的跳轉關係:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

定義完之後,執行命令cds run,就可以本地預覽我們剛剛建立的模型了。這個命令啟動了一個本地伺服器,透過 訪問:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

到目前為止,因為我們沒有實現這個模型的持久層,所以還觀察不到任何資料。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

在實現持久層之前,我們可以先mock一些資料。新建cat-service.js, 在裡面硬編碼一些測試資料:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

這樣,再次請求Books和Authors,就能在瀏覽器裡看到mock的資料了:

使用SAP Cloud Application Programming模型開發OData的一個實際例子 使用SAP Cloud Application Programming模型開發OData的一個實際例子

下面我們進行持久層的相關開發。新建一個資料夾db,下面新建一個檔案data-model.cds,把之前實現在cat-service.cds裡的模型定義複製過來。第17行的managed意思是把Orders模型的增刪改查操作託管給框架完成。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

此時cat-service.cds裡的實現就乾淨多了,直接重用上一步data-model.cds裡定義好的模型。注意此處的@readonly和@insertonly註解。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

這個例子裡我們選用SQLite這個輕型資料庫來儲存資料。用命令列npm i sqlite3 -D安裝SQLite,然後進行資料庫部署:

cds deploy --to sqlite:db/my-bookshop.db

使用SAP Cloud Application Programming模型開發OData的一個實際例子

根據cds deploy命令的輸出提示,package.json也相應被更新了:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

前面提過Books和Authors這兩個模型具有@readonly註解,因此我們新建兩個csv檔案,維護一些資料在檔案內:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

然後將這兩個csv檔案透過命令cds deploy匯入到資料庫裡。

使用SAP Cloud Application Programming模型開發OData的一個實際例子

登入sqlite控制檯,使用select語句檢視成功從csv檔案匯入的資料:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

前面提到Orders的註解是@insertonly, 現在我們想實現一個新功能,每次針對一本書下單後,該圖書的庫存減一。

《生化危機》目前只有12本了:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

開啟之前存放mock資料的cat-service.js, 在下單之前的hook裡實現庫存減一的操作:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

然後進行測試:在postman裡執行post請求,下單再買一本:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

此時再次執行get請求,發現《生化危機》的庫存已經和期望的一樣扣掉了一本了:

使用SAP Cloud Application Programming模型開發OData的一個實際例子

這種頻繁下單的顧客,估計是和Jerry一樣的生化系列愛好者。

使用SAP Cloud Application Programming模型開發OData的一個實際例子 使用SAP Cloud Application Programming模型開發OData的一個實際例子

希望這個例子能夠幫助大家對如何使用Cloud Application Programming Model進行開發有一些基本的認識。感謝閱讀。

要獲取更多Jerry的原創文章,請關注公眾號"汪子熙":

使用SAP Cloud Application Programming模型開發OData的一個實際例子


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2665440/,如需轉載,請註明出處,否則將追究法律責任。

相關文章