在 Dynamics CRM 365 中以编程方式完成业务流程
Programmatically finishing business process flow in Dynamics CRM 365
我使用最新的 SDK 版本 (8.2) 在 C# 代码中管理整个 CRM 流程。向前推进工作正常,只需更新相关实体的 stageid。
但是我不知道,我怎么能完成最后一个阶段=我怎么能把过程设置为完成。我想调用与单击按钮 "set finished"
完全相同的操作
要将活动流程实例的当前状态设置为已完成,请使用:
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>
应替换为流程所在实体的主键。例如,在 Account 实体上,这将显示为 _bpf_accountid_value
.
我使用最新的 SDK 版本 (8.2) 在 C# 代码中管理整个 CRM 流程。向前推进工作正常,只需更新相关实体的 stageid。 但是我不知道,我怎么能完成最后一个阶段=我怎么能把过程设置为完成。我想调用与单击按钮 "set finished"
完全相同的操作要将活动流程实例的当前状态设置为已完成,请使用:
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>
应替换为流程所在实体的主键。例如,在 Account 实体上,这将显示为 _bpf_accountid_value
.