2017-04-11 104 views
2

我使用最新的SDK版本(8.2)管理C#代码中的整个CRM流程流程。向前推进工作正常,只需更新有关实体的阶段。 但是我不知道,我怎么能完成最后一个阶段=我怎么能设置过程完成。我想正是调用相同的操作与点击以编程方式完成Dynamics CRM 365中的业务流程流程

回答

2

要设置活动流程实例的当前状态按钮“完成设置”说完使用:

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

Microsoft documentation

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

status是一个字符串,可以是active,abandonedfinish。当操作完成时,callbackFunction是可选的函数。

注意:虽然文档说使用finish这是行不通的:使用finished

+2

谢谢戴夫。我的坏 - 我没有明确写出我想用C#(自定义操作)来做。我已经编辑了这个问题。 仍然你的建议解决方案可以用于我的情况作为解决方法。 – Jan

+1

anwser几乎是正确的。它认为文档中存在错误。工作电话: Xrm.Page.data.process.setStatus(“finished”); – Jan

+0

在Doc中还有一个状态为“荒废”,其实名是“aborted” – Jan

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的逻辑名称是进程的ID流实例要停用的​​GUID 。

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