2015-07-10 50 views
0

我工作資源在SAP菲奧裏鎖定它被調用的事件。爲了更詳細說明,我試圖在用戶登錄後鎖定資源,並在他註銷或註銷後打開我的應用程序並解鎖資源。會話超時在菲奧裏:請問SAP UI5或網關層提供當用戶的會話超時

我知道onExit()位於main.controller.js中的事件處理程序,如果用戶執行將其註銷的操作,則會調用它。這將處理除一個以外的所有場景:用戶會話超時時。

是任何人都知道一個方法(UI5 /網關層)的被稱爲一旦會議時間的出

至於我認爲這是如何處理的是如果用戶的會話超時則什麼也不會發生,直到用戶刷新屏幕。 在這一點上Odata調用來獲取數據。一旦這個命中網關,它會檢查並發現會話已超時並觸發重新登錄操作。

糾正我,如果我錯了。如果沒有人知道什麼是事件處理程序這是什麼?

另外我已經讀了很多關於這個。這屬於樂觀和悲觀併發。我想嘗試一個悲觀apprach和不使用的ETag一個樂觀

方法。

預先感謝您的時間

我也不能正式發佈任何代碼,因爲這將違反政策,但如果你有任何疑問,請隨時問,我會盡我所能:)。另外這更是一個實情調查任務。

+0

爲什麼你需要鎖定整個用戶會話期間的資源 - 你能不能在更新的時候鎖定它?我可以想到一些需要這種鎖的場景,但也許你不需要它。請記住,Web應用程序旨在無狀態... – mjturner

+0

我的場景如果是員工和經理自助服務。只有一個實體應該能夠在一個點上訪問資源。所以如果說員工記錄了時間(創建了元組),並且正在編輯它,那麼經理不應該能夠批准他的舊記錄。這裏的主要難點在於網絡應用程序是無狀態的。因此,舊版本(貓和網絡dynpro)工作正常。我總是可以在保存之前驗證記錄,但這會導致性能下降(我們可以有多個記錄)。所以我正在尋找一種悲觀的方法。 – Reeth

回答

1

沒有辦法,你可以信任的請求從瀏覽器中執行信號超時。最終,鎖定的資源不應因連接丟失,應用程序崩潰,電量耗盡等原因而被鎖定。 Web應用程序的經典問題!

相反,你可以構造一個鎖刷新機制。在後臺每隔30秒刷新一次鎖。只要確保獲取最新版本的資源,如果鎖定被釋放!

+0

感謝您的回答Mikael!你能詳細說明一下嗎?我怎麼知道什麼時候解鎖? 背景報告會釋放打開的鎖,它會在固定的時間框架後運行嗎?這裏的缺點是如果時間框架不足,那麼它可以爲仍在使用該應用程序的用戶解鎖資源。所以從應用程序端我需要確保再次鎖定資源。 這項工作? 再次感謝您的時間! :) – Reeth

+0

你必須找到一個合理的妥協。如果是30秒或24小時是基於您的應用場景。但對於使用該應用程序的用戶來說,每隔一段時間刷新一次鎖就是一個好方法。 –

+0

另一種方法是隻在更新期間鎖定。通過仔細檢查已更改的數據與現有數據,您可以確定此時資源是否已被其他人更改。發生更新時,鎖定時間減少到一秒。 –