カスタムの状態モデルの遷移の定義

 

公開日: 2017年1月

対象: Dynamics 365 (online)、Dynamics 365 (on-premises)、Dynamics CRM 2016、Dynamics CRM Online

Incident (サポート案件) エンティティまたはユーザー定義エンティティのカスタム状態遷移を指定できます。EntityMetadata.IsStateModelAware プロパティは、状態モデル遷移をサポートするエンティティに対しては true です。

カスタムの状態遷移は、特定の状態のレコードに対して有効な状態遷移を定義する、任意のレベルのフィルター処理です。 有効な状態と状態値の組み合わせが多数存在する場合に特に、オプションの限定した一覧を定義すると、レコードの正確な状態を選択することが容易になります。

このトピックの内容

状態モデルとは

有効な状態遷移の検出

状態モデルとは

状態の概念をサポートするエンティティは、表に示されているように、このデータをキャプチャする一組の属性を備えています。

論理名

表示名

内容

statecode

状況

レコードの状態を表します。 ユーザー定義エンティティに対して、これは [アクティブ] かまたは [非アクティブ]。 たとえば、Incident (case) エンティティでは、[アクティブ][解決済み]、および [取り消し] が使用されます。 さらなる状態オプションは追加できませんが、オプション ラベルは変更できます。

statuscode

ステータスの理由

特定の状態にリンクされている状態を表します。 各状態は、少なくとも 1 つの可能な状態を持っている必要があります。 追加の状態オプションを追加し、既存のオプションのラベルを変更できます。

属性のメタデータは、特定の状態に対してどの状態値が有効であるかを定義します。 たとえば、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

Label: [情報提供済み]

Value: 1000

State: 1

ラベル: [取り消し済み]

Value: 2

Label: [取り消し済み]

Value: 6

State: 2

Label: [統合]

Value: 2000

State: 2

このデータは、StatusOptionMetadata クラスに保存されます。このクラスは、StatusAttributeMetadata クラスのオプションを表します。

組織のエンティティ メタデータを表示するには、「組織のメタデータの参照」で説明されているメタデータ ブラウザー ソリューションをインストールします。 カスタマイズされていない組織のメタデータを、EntityMetadata.xlsx という名前の Excel ファイルで見ることもできます。このファイルは、ダウンロードした SDK の最上位のフォルダーに含まれています。

有効な状態遷移の検出

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 値の 1 つにのみ変更できます。IOrganizationService.Update を使用して、statuscodeOptionSetValue を状態の変更を表さない許可された値のいずれかに設定できます。 状態を変更するには、許可された State プロパティ値と Status プロパティ値を設定する SetStateRequest か、または Status プロパティを現在の statuscode 値に対して許可された値の 1 つに設定する CloseIncidentRequest を使用します。 無効な値を設定しようとすると、エラーがスローされます。

関連項目

サンプル: 有効な状態の遷移を取得する
レコードの状態とステータス
メタデータへの変更の取得および検出
ステータスの遷移の定義

Microsoft Dynamics 365

© 2017 Microsoft. All rights reserved. 著作権