SAP Fiori Elements 公开课第三单元学习笔记 - OData 和注解深入讲解
課程地址
很多 SAP 從業者反映,open SAP 上的視頻,因為網絡原因無法訪問,所以我會陸續在我的個人微 信 號“汪子熙”上面,把這些視頻配上中文字幕并發布出來,敬請關注。
本單元的話題是 SAP OData 和注解的深入講解。
下面是本單元視頻講解的中文字幕,均由 Jerry 人工翻譯而成。
====
歡迎大家來到 Open SAP Fiori Elements 公開課第三單元。本單元介紹 OData 和注解
我是 Stefan Engelhardt, 是 SAP Fiori Elements 的開發架構師
在第二單元,Marcel 已經簡單介紹了 OData. 每個 Fiori Elements 應用都需要一個 OData 服務
Fiori Elements 對 OData 服務的后臺技術棧沒有特殊要求,因為 OData 協議本身就是對后臺實現細節的抽象
現在我們將深入介紹 OData 服務的核心概念。從數據模型的元描述開始
每個 OData 服務都有其數據模型的元描述信息。屏幕右邊是一個例子
我們通常簡稱為 OData 元數據。在 OData url 后面加上 $metadata 即可查看其元數據
屏幕左邊底部的超鏈接是 該 OData 元數據的完整 url
元數據定義了業務模型及其屬性
下圖右邊是一個 OData V4 的例子,定義了一個 Person 模型
包含用戶名,FirstName 等字段
元數據中屬性也具有進一步的定義
這些進一步的定義包含屬性的數據類型,比如 Edm.String, 是否允許存儲 null 值,字段最大長度等
描述實體與其他實體關系的字段被稱為導航字段
模型的導航字段指明了模型和其導航目標模型的基數關系,即"一對一"還是"一對多"
例如屏幕中名為 Trips 的導航屬性,指向的目標模型 Trip,類型是 Collection, 說明 Person 和 Trip 兩個模型是一對多的關系
此外,元數據還可以包含復雜類型,actions 和 singleton 等等的定義
Marcel 在上一個單元中已經介紹過,OData 支持增刪改查操作
讓我們來看一些例子
這里我們能看到對一個 OData 服務發起的 HTTP 請求和響應
第一個場景是讀取所有的 People. People 的類型是 Person, 定義在元數據里
HTTP 響應包含對應的數據集。結果列表里的第一條記錄是 Russell Whyte
我們還可以通過指定 key, 來查詢某條特定的 Person 記錄
把鍵值 russellwhyte 添加到花括號里,在響應中您可以看到, 該請求只返回了一條對應的數據
讓我們再來看看一些更復雜的查詢
使用 $top,只返回前兩條記錄。使用 $select, 只讀取 FirstName 和 LastName 字段
對結果集再次過濾,條件為至少擁有一條 Trip 記錄,且費用超過3000
如大家看到的, 我們可以非常靈活地構造復雜查詢語句
現在展示如何創建一條 Person 記錄
使用 HTTP POST 請求,在請求正文中維護 Person 數據
響應返回 HTTP 201 狀態碼,表明數據創建成功
為提高 Fiori 用戶體驗,SAP 定義了一種標準化的支持文檔 Draft 版本的處理機制
有了 Draft 機制,用戶對文檔的編輯可以隨時中斷并隨時繼續
只有當用戶完成編輯之后,文檔數據才會存儲到對應的數據庫表里
在 SAP Fiori Elements 應用里,每當用戶在編輯模式下添加或者更改信息時,Draft 版本的數據都會自動被保存
這種自動保存的請求響應,可能會包含一些提示消息,比如 SalesArea 的 sold-to party 沒有維護
當 sold-to party 數據發生變化時,HTTP 響應包含了該 party 所有數據,以便顯示在 UI 上
比如地址和聯系人信息。Draft 機制使應用具備動態交互的特性
注意,Draft 機制應該通過框架提供開箱即用的支持
如果在應用程序層面重新實現整套 Draft 處理機制,工作量相當巨大
上一單元 Marcel 也介紹過 OData 注解。這些注解從行為和消費方式兩方面,對模型提供更多描述信息
現在我將解釋 OData 注解的工作原理,并舉例說明
注解是 OData 額外的元數據,格式為 XML
注解定義于 OData 和 SAP 維護的詞匯表中
注解都是一些抽象的定義,因此較穩定,不會頻繁變動,能夠被包括 SAP UI5 在內的消費端解析
SAP Fiori Elements 解析注解并生成對應的 UI 頁面
看一個具體的例子:Travel App 里的 Total Price 字段
在 OData Measures 詞匯表里,存在一個 ISOCurrency 注解
OData 元數據里的 TotalPrice 類型被其注解,指向目標字段 CurrencyCode
因而框架代碼能夠理解,TotalPrice 是一個貨幣金額,而 CurrencyCode 字段包含了貨幣單位
于是 Fiori Elements 在金額字段的右邊顯示貨幣單位
該注解還用于根據貨幣單位顯示對應的小數,并保證在表格中讓金額的顯示也能正確對齊
注解當然還能夠定義更復雜的 UI 元素
例如,這些 UI 可以是通過 UI.LineItem 定義的表格
通過 UI.FieldGroup 定義的 form, 通過 UI.Chart 定義的圖表等等
此外,注解還可以從行為方面來對應用程序進行描述
一個例子是在應用程序中提供增刪改查等功能
比如通過注解,可以指定 Travel 模型可以被編輯,于是 Fiori Elements 在 UI 上繪制 Edit 按鈕
工具欄其他按鈕的顯示或隱藏邏輯也以此類推
另一個場景是所謂 Side Effect 的定義
例如,當表格行項目級別的產品單價發生變化時,UI 需要重新從后臺讀取最新的訂單抬頭級別的總價信息
SAP 系統后臺可以提供基于 ABAP CDS 或者 CAP CDS 的注解
或者也可以使用本地文件定義的注解。對于 UI 來說,它不關心注解來自后臺服務器或是本地文件
CDS View 中的注解被后臺服務器翻譯成 XML 格式的注解
后者被 Fiori Elements 框架解析
XML 格式的注解可以被任何類型的后臺服務器使用
這些后臺服務器可以是 SAP 傳統的 ABAP 編程模型,SAP BW 和非 SAP 服務器。下圖右邊是 ABAP CDS 注解的一個例子
您平時對于開發工具的偏好,可能會影響您對注解類型的選擇
在 SAP Fiori Tools 中,其提供的向導式創建步驟,能幫助我們創建正確的注解
XML 和 CAP CDS 注解都能被 SAP Fiori Tools 支持
如果您使用 ABAP Development Tool, 可以直接在 ABAP CDS 中維護注解
生命周期管理和功能可用性同樣會影響注解類型的選取
UI 項目本地文件提供的注解,其生命周期同應用程序一致。CDS 注解的生命周期同 OData 服務實現一致
如果我們是在一個比較低版本的 ABAP 服務器上開發,某些注解可能無法被支持。如果有疑問,請查詢文檔
讓我們總結一下本單元的內容
我們介紹了 OData 概念的核心部分,OData 元數據,OData 請求,以及 Draft 機制
我們也學習了什么是 OData 注解,以及它是如何影響 Fiori Elements 應用的
現在大家可以期待下一單元的內容了。屆時我們將介紹如何搭建 Fiori Elements 應用的開發環境。感謝收看本視頻,下期再見
更多Jerry的原創文章,盡在:“汪子熙”:
總結
以上是生活随笔為你收集整理的SAP Fiori Elements 公开课第三单元学习笔记 - OData 和注解深入讲解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QQ飞车中的黄金剃刀怎么改(QQ官方下载
- 下一篇: 关于 SAP Spartacus 和 S