Mashup Builder > 資料服務與繫結 > 工作階段參數
工作階段參數
工作階段是當使用者在視覺化中檢視混搭時,所建立的與伺服器之間的連線。您可以建立工作階段參數來儲存來自目前使用者工作階段的暫時資料。例如,您可以使用工作階段參數來儲存混搭偏好樣式主題的設定。工作階段參數的值對於連線至伺服器的每個使用者而言都具唯一性,而且會儲存到工作階段結束為止。當使用者在不同混搭之間導覽時,也會保留工作階段參數資料。
如果使用者關閉應用程式、使用「登出」功能登出,或在伺服器上閒置之後逾時,工作階段便會結束。平台工作階段的預設逾時期間為 30 分鐘。您可以使用 SetPlatformSessionTimeout 管理員服務來配置預設逾時。如需詳細資訊,請參閱管理員服務
最佳實務
使用資料庫或物件來儲存多個工作階段所需的資料。
如有可能,請使用混搭參數在混搭之間傳遞資料。使用太多工作階段參數可能會影響效能。如需詳細資訊,請參閱配置混搭參數
針對工作階段參數值使用變更事件
您可在 UserManagementSubsystem 內新增工作階段參數,然後使用 Mashup Builder 中的「工作階段」面板來建立與混搭中小器具、服務或函數的繫結。當您選取面板時,會列出可用的工作階段參數。
「資料內容」面板會顯示每個參數的 <Parameter_Name>Changed。只有當用戶端的工作階段參數值變更時,才會觸發這些事件。使用伺服器上的 SetGlobalSessionValues 服務變更參數值不會觸發此事件。欲在伺服器上的值變更時觸發事件,請改用用來更新參數之服務的 ServiceInvokeComplete 事件。
新增工作階段參數
您可以使用具有一或多個內容的「物形式」實體作為工作階段參數。欲將「資料形式」新增至 UserManagementSubsystem 實體:
1. 在 Composer 中,按一下「瀏覽」
2. 「系統」下,選取「子系統」,然後開啟 UserManagementSubsystem 實體。
3. 使用下列其中一種方式將「物形式」新增至子系統:
「服務」標籤中,執行 AddSessionShape 服務:
a. 找到服務,然後按一下「執行」 欄下的 「執行服務」「執行服務」對話方塊即會開啟。
b. 「名稱」欄位中,選取包含工作階段參數的物形式,然後按一下「執行」
c. 按一下「完成」,關閉對話方塊。
d. 按一下「儲存」,將變更儲存至子系統。
「組態」標籤的「使用者工作階段形式設定」下,按一下「新增」。對話方塊即會開啟。
a. 鍵入物形式名稱,然後按一下「新增」
b. 按一下「儲存」,將您的變更儲存至子系統。
物形式即會新增至子系統。當您開啟「工作階段」面板時,資料形式的內容會列為可繫結工作階段參數。
* 
將包含多列與多欄的資料負載作為工作階段參數使用可能會導致效能降低。
如需詳細資訊,請參閱使用者管理子系統
存取平台伺服器上的工作階段參數
欲擷取工作階段參數值:
1. 在 Composer 中,按一下「瀏覽」
2. 「系統」下,選取「資源」,然後開啟 CurrentSessionInfo 資源實體。
3. 「服務」標籤中,執行 GetGlobalSessionValues 服務:
a. 在清單中找到服務,然後在「執行」欄下,按一下 「執行服務」「執行服務」對話方塊即會開啟。
b. 按一下「執行」。目前工作階段的參數值會顯示在「輸出」窗格中。
c. 按一下「完成」,關閉對話方塊。
可用工作階段參數會列在「工作階段」面板中。您可以使用「資料」面板將 GetGlobalSessionValues 服務新增至混搭,並將其傳回的值繫結至函數、服務或小器具。
範例:使用工作階段參數來儲存文字欄位小器具的輸入
當小器具內容直接繫結至工作階段參數時,重新整理頁面之後,工作階段內容值會遺失。欲在重新載入頁面時保留值,您必須使用 setter 與 getter 服務來更新及擷取參數值。
1. 依照「新增工作階段參數」部份中的步驟定義工作階段參數。
2. 建立 helper 物件,其中包含設定工作階段參數值的服務。
3. 將輸入參數新增至名為 input_string的 setter 服務,然後新增下列 JavaScript 程式碼:
Resources["CurrentSessionInfo"].SetGlobalSessionStringValue({name: "your_session_var", value: input_string});
4. 建立混搭,然後新增「文字方塊」小器具、「按鈕」小器具與「驗證器」函數。
5. 使用「資料」面板來新增下列服務:
您在步驟 2 中建立的 setter 服務。
來自 CurrentSessionInfo 資源的 GetGlobalSessionValues 服務。
6. 將「文字欄位」小器具的 Text 內容繫結至 setter 服務的 input_string 參數。
7. GetGlobalSessionValues 服務的 All Data 內容下的工作階段變數繫結至「文字欄位」小器具的 Text 內容。
8. 將「按鈕」小器具的 Clicked 事件繫結至 setter 服務。
9. 將 setter 服務的 ServiceInvokeCompleted 事件繫結至「驗證器」函數的 Evaluate 服務。使用此項目甚至可確保工作階段參數的值始終在執行函數之前始終更新。
10. 編輯函數并將下列程式碼新增至運算式:
location.reload()
11. 儲存,然後檢視混搭。
在文字方塊中輸入值,然後按一下按鈕以重新載入頁面。重新載入頁面之後,該值會持續存在。
這是否有幫助?