我正在使用最新的SDK版本(8.2)以C#代码管理整个CRM流程。只需更新相关实体上的暂存器,就可以很好地进行前进。但是我不知道如何完成最后一个阶段=如何将过程设置为完成。我想调用与单击按钮“设置完成”完全相同的操作]
将活动流程实例的当前状态设置为完成,请使用:
Xrm.Page.data.process.setStatus("finished");
Xrm.Page.data.process.setStatus(status, callbackFunction);
status
是可以为active
,abandoned
或finish
的字符串。 callbackFunction
是在操作完成时调用的可选功能。
注:尽管文档说使用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>
应替换为流程所在实体的主键。例如,在“帐户”实体上,其显示为_bpf_accountid_value
。