3

我正在使用最新的 SDK 版本 (8.2) 在 C# 代码中管理整个 CRM 流程。前进工作正常,只需更新相关实体上的 stageid。但是我不知道,我怎么能完成最后一个阶段=我怎么能将过程设置为完成。我想调用与单击“设置完成”按钮完全相同的操作

4

2 回答 2

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);

whereprocessFlowName是作为字符串的业务流程的逻辑名称,processId是作为 GUID 要停用的流程实例的 ID。

要查找流程实例的 ID,您可以查询应替换为流程所在实体的主键的_bpf_<primary_key>_value属性。<primary_key>例如,在 Account 实体上,这将显示为_bpf_accountid_value

于 2017-04-11T15:15:44.350 回答
2

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

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

微软文档

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

status是一个字符串,可以activeabandonedfinishcallbackFunction是操作完成时调用的可选函数。

注意:虽然文档说使用finish它不起作用:使用finished.

于 2017-04-11T13:28:48.397 回答