定义自定义状态模型转换

 

发布日期: 2017年1月

适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online

您可以为 Incident(“案例”)实体或自定义的实体指定自定义状态转换。EntityMetadataIsStateModelAware 属性是支持状态模型转换实体的 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 类的选项。

若要查看您的组织的实体元数据,请安装浏览组织的元数据中描述的元数据浏览器解决方案。 您还可以在一个名为 EntityMetadata.xlsx 的 Excel 文件中查看非自定义组织的元数据,该文件包含在 SDK 下载的顶级文件夹中。

检测有效的状态转变

您可以修改 statuscode 属性,以定义其他哪个状态选项表示当前状态的有效转变。 有关说明,请参阅自定义主题指南:定义状态描述转换

当自定义状态转换应用于实体,EntityMetadataEnforceStateTransitions 属性将为 true。 此外,在 StatusAttributeMetadata 中每个 StatusOptionMetadataOptions 集合将具有新 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 属性值或 CloseIncidentRequest 设置 Status 属性为当前 statuscode 值允许值之一。 尝试设置无效值引发错误。

另请参阅

示例:检索有效的状态转换
记录状态和状态
检索并检测元数据更改
定义状态描述转换

Microsoft Dynamics 365

© 2017 Microsoft。 保留所有权利。 版权