91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SAP Fiori里兩種鎖機制是怎么實現

發布時間:2021-12-18 16:38:27 來源:億速云 閱讀:205 作者:柒染 欄目:互聯網科技

這期內容當中小編將會給大家帶來有關SAP Fiori里兩種鎖機制是怎么實現,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

方法1: ETAG機制

SAP CRM Fiori采用了這種機制。

看一個具體的例子來理解。假設我用用戶名Jerry選中了這個ID為3456的Opportunity,點擊Edit按鈕之后:

SAP Fiori里兩種鎖機制是怎么實現

會觸發一個讀操作發到后臺:

SAP Fiori里兩種鎖機制是怎么實現

后臺響應這個讀請求,并且在響應的頭部字段ETAG里寫入了對應的值。

SAP Fiori里兩種鎖機制是怎么實現

這個26AE結尾的ETAG的值可以由應用程序采取不同的邏輯計算,可以直接采用請求節點對應的最后修改時間戳(Last Changed Timestamp), 例如下面這段ABAP代碼:

SAP Fiori里兩種鎖機制是怎么實現

也可以基于數據的完整內容計算一個HASH值出來作為ETAG返回給Fiori UI:

SAP Fiori里兩種鎖機制是怎么實現

現在我用另一個用戶,對同一個Opportunity做了修改,成功保存。然后再回到用戶Jerry的這個編輯窗口,此時Jerry根本不知道該Opportunity已經被另一個用戶修改了。Jerry修改了Opportunity的Name字段,點擊保存按鈕。

SAP Fiori里兩種鎖機制是怎么實現

收到這個提示信息。

SAP Fiori里兩種鎖機制是怎么實現

從Chrome Development Tool里能觀察到,當Jerry點擊了保存按鈕后,發送到后臺的請求的頭部包含了一個If-Match字段,這個字段的值就是Jerry第一次點擊編輯按鈕時,后臺返回給Jerry的26AE結尾的ETAG字段。

SAP Fiori里兩種鎖機制是怎么實現

背后發生了什么事請呢?在框架的方法CHECK_BEFORE_MODIFICATION里,框架會把Fiori UI請求傳進來的ETAG和當前最新的ETAG做比較:

SAP Fiori里兩種鎖機制是怎么實現

CHECK_BEFORE_MODIFICATION又會調用CHECK_ETAG_MATCH方法。如果check失敗,當前的保存操作將不會執行。

SAP Fiori里兩種鎖機制是怎么實現

方法2: 基于BOPF的鎖實現

這種方式用于S/4HANA的Fiori應用,比如Material application。這種Fiori應用,消費的OData service是基于CDS view 加上BOPF實現的。

打開一個Material,點擊Edit:

SAP Fiori里兩種鎖機制是怎么實現

此時到ABAP后臺使用事務碼SM12能觀察到Material對應的數據庫表被鎖住了:

SAP Fiori里兩種鎖機制是怎么實現

這是怎么實現的呢?

在S/4HANA后臺使用事務碼BOBX打開BO模型I_PRODUCTWD. 展開模型,雙擊EDIT,能看到這個Edit實現的類為CL_I_DR_PRODUCTWD.

SAP Fiori里兩種鎖機制是怎么實現

雙擊這個class,它的方法LOCK_ACTIVE_DOCUMENT就是響應Fiori UI上編輯按鈕點擊的處理函數。

SAP Fiori里兩種鎖機制是怎么實現

我們在這個方法里設置斷點,然后在UI上點擊編輯按鈕,斷點觸發。從調用棧即可清除觀察到編輯按鈕點擊之后,程序執行流是如何從BOPF框架投遞到Material應用的枷鎖代碼。這個加鎖邏輯調用的是傳統的ABAP Enqueue function module。

SAP Fiori里兩種鎖機制是怎么實現

上述就是小編為大家分享的SAP Fiori里兩種鎖機制是怎么實現了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

安溪县| 湾仔区| 清远市| 墨竹工卡县| 清水县| 陆河县| 商丘市| 龙州县| 舒兰市| 鄯善县| 浪卡子县| 安泽县| 定南县| 勐海县| 三明市| 长顺县| 洛宁县| 乡城县| 寿宁县| 莱州市| 宜宾县| 如皋市| 丹江口市| 永济市| 宁德市| 台湾省| 石嘴山市| 西青区| 中山市| 大同市| 嘉峪关市| 柳河县| 新余市| 双柏县| 阳山县| 安远县| 忻城县| 甘洛县| 平南县| 黄骅市| 玛多县|