揭開 Fiori 編程模型規范里注解的神秘面紗 - @ObjectModel

      網友投稿 766 2022-05-30

      SAP官網的ABAP Programming Model for Fiori幫助文檔里,定義了很多注解(Annotation):

      https://help.sap.com/viewer/cc0c305d2fab47bd808adcad3ca7ee9d/1709 000/en-US/896496ecfe4f4f8b857c6d93d4489841.html

      對于這些注解,我們可以從其字面含義和SAP幫助文檔去掌握其用法和功能。

      以@ObjectModel.readOnly為例,施加了這個注解的CDS view字段,在對應的Fiori UI上以只讀的方式渲染:

      并且也不能通過編程的方式進行修改。

      大家在使用這些注解的時候,有沒有想過,它們是怎么工作的?

      以@ObjectModel.readOnly為例,現在就請跟著Jerry一起,去探索它的前后臺實現原理。

      在Chrome開發者工具的UI5面板里,找到Posting Date這個控件對應的屬性,發現字段editable屬性值為false,這就是其在UI不能編輯的原因。

      如果你的Chrome開發者工具沒有UI5這個標簽,請參考Jerry這篇文章,安裝Chrome for UI5的擴展:

      Jerry的Fiori原創文章合集

      既然后臺模型是CDS view,那么前臺UI顯然基于Fiori Elements. 我想知道Posting Date這個控件的editable屬性是在什么時候被設置成false的。

      在SmartField.setEditable函數里設置斷點,重新打開Fiori UI,點擊Edit進入編輯模型,斷點觸發,從調用棧能看出,有代碼調用SmartField.setEditable時,傳入的參數為false.

      那么這個false如何計算出來的?順著當前的調用棧往外層查找,發現一個重要的函數:

      AnnotationHelper.canUpdateProperty.

      從函數名就能猜測出,這個函數負責計算一個控件的屬性是否允許更新(Update),工作的上下文就是注解(Annotation).

      這個方法實現體的語義也很清楚,如果后臺模型字段sap:updatable設置為false,則canUpdateProperty函數調用返回false,導致SmartField.setEditable以參數false去渲染Fiori UI.

      我們打開OData服務的metadata,發現posting date字段對應的sap:updatable果然為false.

      至此Fiori UI的工作原理分析完畢。我們再來看后臺。我的CDS view里只添加了@ObjectModel.readOnly為true的注解,而非sap:updatable. 顯然,這二者存在一定的關聯關系。

      在Jerry之前的文章 Jerry的CDS view自學系列 介紹過CDS view框架處理邏輯,有這么一段代碼:

      第839行的IF判斷,如果OBJECTMODEL.READONLY為true,則read_only屬性為X.

      而read_only屬性為true,會導致posting date字段的屬性集合內表里,新增一條read_only為X的記錄:

      最后,在SADL框架的屬性檢測邏輯中,一旦發現字段屬性集合內表里存在read_only為X的屬性,則將lv_creatable和lv_updatable置為false.

      而SADL框架計算出來的這兩個值為false的布爾變量,最后就會將sap:creatable和sap:updatable設置為false.

      @ObjectModel.readOnly屬性的前后臺工作原理的神秘面紗,至此就揭開了,然而它只是SAP Fiori編程模型眾多注解的冰山一角。敬請關注Jerry后續的分享,感謝閱讀。

      更多閱讀

      揭開 Fiori 編程模型規范里注解的神秘面紗 - @ObjectModel

      Jerry的通過CDS view + Smart Template 開發Fiori應用的blog合集

      SAP Fiori應用的三種部署方式

      Jerry的Fiori原創文章合集

      SAP成都C4C小李探花:淺談Fiori Design Guidelines

      SAP Fiori + Vue = ?

      Fiori Fundamentals和SAP UI5 Web Components

      30分鐘用Restful ABAP Programming模型開發一個支持增刪改查的Fiori應用

      SAP Fiori應用索引大全

      介紹一種Fiori標準應用的增強方式

      ABAP JavaScript 應用性能管理 APM

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Python 異步 ASGI 服務器及框架
      下一篇:ansible2.4安裝和體驗
      相關文章
      亚洲国产精品一区二区第四页| 亚洲a∨无码一区二区| 亚洲国产一区视频| 亚洲av第一网站久章草| 色偷偷女男人的天堂亚洲网| 亚洲一卡二卡三卡四卡无卡麻豆| 亚洲无限乱码一二三四区| 亚洲图片一区二区| 亚洲激情在线观看| 亚洲一区二区在线免费观看| 久久久亚洲精品视频| 亚洲人成电影福利在线播放| 337p日本欧洲亚洲大胆色噜噜| 亚洲激情中文字幕| 久久综合亚洲鲁鲁五月天| 久久亚洲精品人成综合网| 亚洲高清视频免费| 亚洲黄色网址大全| 亚洲成a人不卡在线观看| 亚洲国产中文在线二区三区免| 亚洲午夜电影一区二区三区| 激情综合亚洲色婷婷五月APP| 亚洲AV综合色区无码二区偷拍| 亚洲国产成人精品激情| 亚洲性色精品一区二区在线| 亚洲国产AV一区二区三区四区 | 色欲色欲天天天www亚洲伊| 精品久久久久久亚洲中文字幕 | 亚洲视频欧洲视频| 亚洲国产精品专区| 亚洲综合无码无在线观看| 亚洲GV天堂GV无码男同| 亚洲成av人片天堂网老年人| 亚洲中文久久精品无码ww16| 亚洲AV中文无码乱人伦下载| 亚洲视频在线观看网站| 亚洲人成电影网站| 亚洲国产精品99久久久久久| 亚洲äv永久无码精品天堂久久 | 国产亚洲精品VA片在线播放| 亚洲精品无码人妻无码|