カスタムの状態モデルの遷移の定義
Incident
(サポート案件) テーブルまたはカスタム テーブルのカスタム状態遷移を指定できます。 EntityMetadata.IsStateModelAware プロパティは、状態モデル遷移をサポートするテーブルの場合は true
です。
注意
Incident
(サポート案件) テーブルはデフォルトの Microsoft Dataverse 環境に含まれませんが、Dynamics 365 for Customer Serviceによって使用され、Common Data Model内で定義されます
カスタムの状態遷移は、特定の状態のレコードに対して有効な状態遷移を定義する、任意のレベルのフィルター処理です。 有効な状態と状態値の組み合わせが多数存在する場合に特に、オプションの限定した一覧を定義すると、レコードの正確な状態を選択することが容易になります。
状態モデルとは
状態の概念をサポートするテーブルには、次の表に示すように、状態モデルのデータを取り込む列のペアがあります。
論理名 | Display Name | プロパティ |
---|---|---|
statecode |
状況 | レコードの状態を表します。 カスタム テーブルの場合、この値は アクティブ または 非アクティブ です。 さらなる状態の選択肢は追加できませんが、選択肢ラベルは変更できます。 |
statuscode |
ステータスの理由 | 特定の状態にリンクされている状態を表します。 各状態は、少なくとも 1 つの可能な状態を持っている必要があります。 ステータスの選択肢を増やしたり、既存の選択肢のラベルを変更することができます。 |
列のテーブル定義は、特定の状態に対してどの状態値が有効であるかを定義します。 たとえば、Incident
(サポート案件) テーブルの場合、既定の状態と状態オプションは次の表のようになります。
完了状態 | 状態 |
---|---|
Label : アクティブValue : 0 |
Label : 処理中Value : 1State : 0 |
Label : アクティブValue : 0 |
Label : 保留中Value : 2State : 0 |
Label : アクティブValue : 0 |
Label : 詳細待ちValue : 3State : 0 |
Label : アクティブValue : 0 |
ラベル: 調査中Value : 4State : 0 |
Label : 解決済みValue : 1 |
Label : 問題解決済みValue : 5State : 1 |
Label : 解決済みValue : 1 |
Label: 情報提供済みValue : 1000State : 1 |
ラベル: 取り消しValue : 2 |
Label : 取り消し済みValue : 6State : 2 |
ラベル: 取り消しValue : 2 |
Label : 統合Value : 2000State : 2 |
このデータは、StatusOptionMetadata クラスに保存されます。このクラスは、StatusAttributeMetadata クラスのオプションを表します。
組織のテーブル定義を表示するには、組織のテーブル定義の参照 で説明されているメタデータ ブラウザー ソリューションをインストールします。 テーブル/エンティティ参照 でテーブルの参照ドキュメントを参照することもできます。
有効な状態遷移の検出
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>
このデータが存在し、テーブル EnforceStateTransitions
プロパティが true
のとき、インシデント インスタンスは許可された statuscode
値の 1 つにのみ変更できます。 IOrganizationService.Update を使用して、statuscode
OptionSetValue を状態の変更を表さない許可された値のいずれかに設定できます。 状態を変更するには、許可された State プロパティ値と Status プロパティ値を設定する SetStateRequest か、または Status プロパティを現在の statuscode
値に対して許可された値の 1 つに設定する CloseIncidentRequest を使用します。 無効な値を設定しようとすると、エラーがスローされます。
参照
サンプル: 有効な状態遷移の取得
サンプル: レコードの状態の検証とレコードの状態の設定
テーブル定義の変更の取得および検出
ステータスの遷移の定義
注意
ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)
この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。