您好,登錄后才能下訂單哦!
本篇內容介紹了“如何使用SAP Cloud Application Programming模型開發OData”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
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”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。