共用方式為


定義自訂狀態模型轉換

 

發行︰ 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),它將會逸出且外觀如下列範例所示。

&lt;allowedtransitions xmlns="https://schemas.microsoft.com/crm/2009/WebServices"&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="6" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="1000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="2000" /&gt;
&lt;allowedtransition sourcestatusid="1" tostatusid="5" /&gt;
&lt;/allowedtransitions&gt;

如果此資料存在且實體 EnforceStateTransitions 屬性為 true,則任何事件執行個體都只能變更為其中一個允許的 statuscode 值。 您可以使用 IOrganizationService.UpdatestatuscodeOptionSetValue 設定為任何不代表狀態變更且允許的值。 若要變更狀態,請使用 SetStateRequest 將允許的 StateStatus 屬性值,或使用 CloseIncidentRequestStatus 屬性設定為其中一個目前 statuscode 值允許的值。 嘗試設定無效的值會擲回錯誤。

另請參閱

範例:擷取有效的狀態轉換
記錄狀態
擷取並偵測到中繼資料的變更
定義狀態原因轉換

© 2017 Microsoft. 著作權所有,並保留一切權利。 著作權