在Dynamics CRM 365中以编程方式完成业务流程流

问题描述 投票:3回答:2

我正在使用最新的SDK版本(8.2)以C#代码管理整个CRM流程。只需更新相关实体上的暂存器,就可以很好地进行前进。但是我不知道如何完成最后一个阶段=如何将过程设置为完成。我想调用与单击按钮“设置完成”完全相同的操作]

.net dynamics-crm dynamics-crm-365
2个回答
2
投票

将活动流程实例的当前状态设置为完成,请使用:

Xrm.Page.data.process.setStatus("finished");

Microsoft documentation

Xrm.Page.data.process.setStatus(status, callbackFunction);

status是可以为activeabandonedfinish的字符串。 callbackFunction是在操作完成时调用的可选功能。

注:尽管文档说使用finish,但这不起作用:使用finished


3
投票

创建业务流程时,您将创建一个自定义实体。例如,如果在默认解决方案中创建名为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

© www.soinside.com 2019 - 2024. All rights reserved.