发布日期: 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 类的选项。
若要查看您的组织的实体元数据,请安装浏览组织的元数据中描述的元数据浏览器解决方案。 您还可以在一个名为 EntityMetadata.xlsx 的 Excel 文件中查看非自定义组织的元数据,该文件包含在 SDK 下载的顶级文件夹中。
检测有效的状态转变
您可以修改 statuscode 属性,以定义其他哪个状态选项表示当前状态的有效转变。 有关说明,请参阅自定义主题指南:定义状态描述转换
当自定义状态转换应用于实体,EntityMetadata。EnforceStateTransitions 属性将为 true。 此外,在 StatusAttributeMetadata 中每个 StatusOptionMetadata。Options 集合将具有新 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。 保留所有权利。 版权