我使用最新的SDK版本(8.2)管理C#代码中的整个客户关系管理流程。向前推进很好,只需更新相关实体上的stageid即可。然而,我不知道,我如何才能完成最后的阶段=我如何设置过程完成。我想调用与单击“设置完成”按钮完全相同的操作。

发布于 2017-04-11 13:28:48
若要将活动流程实例的当前状态设置为已完成使用,请执行以下操作:
Xrm.Page.data.process.setStatus("finished");Xrm.Page.data.process.setStatus(status, callbackFunction);status是一个字符串,可以是active、abandoned或finish。callbackFunction是操作完成后要调用的可选函数。
注意:,尽管文档中说要使用finish,这是行不通的:使用finished。
发布于 2017-04-11 15:15:44
当您创建业务流程流时,您将创建一个自定义实体。例如,如果您在默认解决方案中创建了一个名为“营销管理”的业务流程流,那么您将创建一个名为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。
https://stackoverflow.com/questions/43346218
复制相似问题