定义自定义状态模型转换
发布日期: 2017年1月
适用于: Dynamics 365 (online),Dynamics 365 (on-premises),Dynamics CRM 2016,Dynamics CRM Online
您可以为 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 值允许值之一。 尝试设置无效值引发错误。
另请参阅
示例:检索有效的状态转换
记录状态和状态
检索并检测元数据更改
定义状态描述转换
Microsoft Dynamics 365
© 2017 Microsoft。 保留所有权利。 版权