【发布时间】:2017-09-06 20:35:20
【问题描述】:
我正在使用最新的 SDK 版本 (8.2) 在 C# 代码中管理整个 CRM 流程。前进工作正常,只需更新相关实体上的 stageid。 但是我不知道,我怎么能完成最后一个阶段=我怎么能把过程设置为完成。我想调用与单击“设置完成”按钮完全相同的操作
【问题讨论】:
标签: .net dynamics-crm dynamics-crm-365
我正在使用最新的 SDK 版本 (8.2) 在 C# 代码中管理整个 CRM 流程。前进工作正常,只需更新相关实体上的 stageid。 但是我不知道,我怎么能完成最后一个阶段=我怎么能把过程设置为完成。我想调用与单击“设置完成”按钮完全相同的操作
【问题讨论】:
标签: .net dynamics-crm dynamics-crm-365
要将活动流程实例的当前状态设置为已完成,请使用:
Xrm.Page.data.process.setStatus("finished");
Xrm.Page.data.process.setStatus(status, callbackFunction);
status 是一个字符串,可以是active、abandoned 或finish。 callbackFunction 是操作完成时调用的可选函数。
注意:虽然文档说要使用finish,但这不起作用:使用finished。
【讨论】:
finish 无效,而 finished 有效!
当您创建业务流程时,您将创建一个自定义实体。例如,如果您在默认解决方案中创建一个名为 Marketing Management 的业务流程,您将创建一个名为 new_marketingmanagement 的实体。
当您在记录上激活业务流程时,会创建该实体的一个实例。该实例保存诸如进程处于哪个阶段以及进程何时启动等信息。
您可以使用Microsoft.Xrm.Sdk.Messages.SetStateRequest 停用实例:
var stateRequest = new SetStateRequest
{
EntityMoniker = new EntityReference(processFlowName, processId),
State = new OptionSetValue(1), // Inactive.
Status = new OptionSetValue(2) // Finished.
};
service.Execute(stateRequest);
其中processFlowName 是您的业务流程的逻辑名称(作为字符串),processId 是您要作为 GUID 停用的流程实例的 ID。
要查找您的流程实例的ID,您可以查询属性_bpf_<primary_key>_value,其中<primary_key> 应替换为您的流程所在实体的主键。例如,在 Account 实体上,这将显示为 _bpf_accountid_value。
【讨论】: