定義自訂狀態模型轉換
發行︰ 2016年11月
適用於: Dynamics CRM 2015
您可以指定 Incident (案例) 實體或自訂實體的自訂狀態轉換。 支援狀態模型轉換之實體的 EntityMetadata.IsStateModelAware 屬性為 true。
自訂狀態轉換是選擇性的篩選層級,用於定義在特定狀態下對於某項記錄有效的狀態轉換。 特別是當您擁有大量的有效狀態與狀態值組合時,定義有限的有效選項清單,可以讓使用者更容易選擇記錄的正確狀態。
本主題內容
什麼是狀態模型?
偵測有效的狀態轉換
什麼是狀態模型?
支援狀態概念的實體具有一對屬性,這對屬性會擷取這項資料,如此表中所示。
邏輯名稱 |
顯示名稱 |
描述 |
---|---|---|
statecode |
狀態 |
代表記錄的狀態。 對於自訂實體而言,這會是 [使用中] 或 [非使用中]。Incident (case) 實體會使用 [使用中]、[已解決] 和 [已取消]。 您無法新增更多狀態選項,但是可以變更選項標籤。 |
statuscode |
狀態原因 |
代表連結到特定狀態的狀態。 每種狀態都必須至少有一項可能的狀態。 您可以新增額外的狀態選項,並且變更現有選項的標籤。 |
屬性的中繼資料會定義對指定狀態有效的狀態值。 例如,Incident (案例) 實體的預設狀態和狀態選項如下表所示。
狀態 |
狀態 |
---|---|
Label:使用中 Value:0 |
Label:進行中 Value:1 State:0 |
Label:保留 Value:2 State:0 |
|
Label:等候詳細資料 Value:3 State:0 |
|
標籤:研究 Value:4 State:0 |
|
Label:已解決 Value:1 |
Label:問題已解決 Value:5 State:1 |
標籤:提供的資訊 Value:1000 State:1 |
|
標籤:已取消 Value:2 |
Label:已取消 Value:6 State:2 |
Label:已合併 Value:2000 State:2 |
此資料會儲存在 StatusOptionMetadata 類別中,代表 StatusAttributeMetadata 類別中的選項。
若要檢視組織的實體中繼資料,請安裝瀏覽組織的中繼資料中敘述的中繼資料瀏覽器解決方案。 您也可以下載 SDK 後開啟其頂層資料夾內所附名為 EntityMetadata.xlsx 的 Excel 檔案,從中檢視未經自訂組織的中繼資料。
偵測有效的狀態轉換
您可以修改 statuscode 屬性來定義其他狀態選項,代表可從目前狀態進行的其他有效轉換。 如需指示,請參閱自訂指南主題:定義狀態原因轉換
對實體套用自訂狀態轉換時,EntityMetadata.EnforceStateTransitions 屬性將會是 true。 此外,StatusAttributeMetadata.Options 集合內的每個 StatusOptionMetadata 都會有新的 TransitionData 屬性。 此屬性將包含一個代表 XML 文件的字串值。 此文件包含允許之轉換的定義。 例如,預設 Incident (案例) StatusCode 屬性選項可能具有下列 TransitionData 值。
<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">
<allowedtransition sourcestatusid="1" tostatusid="6" />
<allowedtransition sourcestatusid="1" tostatusid="1000" />
<allowedtransition sourcestatusid="1" tostatusid="2000" />
<allowedtransition sourcestatusid="1" tostatusid="5" />
</allowedtransitions>
注意
在未受管理的程式碼中從 Web 服務擷取此資料時 (例如使用 JavaScript),它將會逸出且外觀如下列範例所示。
<allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices">
<allowedtransition sourcestatusid="1" tostatusid="6" />
<allowedtransition sourcestatusid="1" tostatusid="1000" />
<allowedtransition sourcestatusid="1" tostatusid="2000" />
<allowedtransition sourcestatusid="1" tostatusid="5" />
</allowedtransitions>
如果此資料存在且實體 EnforceStateTransitions 屬性為 true,則任何事件執行個體都只能變更為其中一個允許的 statuscode 值。 您可以使用 IOrganizationService.Update 將 statuscodeOptionSetValue 設定為任何不代表狀態變更且允許的值。 若要變更狀態,請使用 SetStateRequest 將允許的 State 和 Status 屬性值,或使用 CloseIncidentRequest 將 Status 屬性設定為其中一個目前 statuscode 值允許的值。 嘗試設定無效的值會擲回錯誤。
另請參閱
範例:擷取有效的狀態轉換
記錄狀態
擷取並偵測到中繼資料的變更
定義狀態原因轉換
© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權