我使用最新的SDK版本(8.2)管理C#代码中的整个CRM流程。前进工作正常,只需更新相关实体的stageid即可。 但是我不知道,我怎么能完成最后一个阶段=如何设置进程完成。我想调用与单击“set finished”按钮完全相同的操作
答案 0 :(得分: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
。
答案 1 :(得分:2)
要将活动流程实例的当前状态设置为已完成,请使用:
Xrm.Page.data.process.setStatus("finished");
Xrm.Page.data.process.setStatus(status, callbackFunction);
status
是一个字符串,可以是active
,abandoned
或finish
。 callbackFunction
是操作完成时调用的可选函数。
注意:虽然文档说使用finish
但这不起作用:使用finished
。