如何从Dynamics 365中的工作流实例ID获取工作流ID?

时间:2018-04-02 09:30:40

标签: dynamics-crm microsoft-dynamics dynamics-crm-2016 dynamics-crm-365

这与Dynamics CRM 365中的Microsoft CRM工作流中的CodeActivities有关。我需要在代码活动中获取与工作流相关的注释。为此,我需要在我的代码活动中使用该工作流的工作流ID。但是代码活动上下文中只有Workflow Instance Id,而不是Workflow Id。如何从工作流实例ID中获取工作流ID?

2 个答案:

答案 0 :(得分:1)

很遗憾,你不能直接得到这个。

解决方法是设置输入参数&将工作流程名称甚至Workflow Id作为设计器中的配置项发送。在codeactivity&中读取此输入参数。检索与之关联的注释。

这样,即使您有多个工作流程,调用/执行相同的代码活动也能很好地工作。

答案 1 :(得分:0)

您可以使用以下代码来获取使用C#的工作流ID:

IWorkflowContext context = executionContext.GetExtension<IWorkflowContext>();
IOrganizationServiceFactory serviceFactory = executionContext.GetExtension<IOrganizationServiceFactory>();
IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

//Retrieve processid of current workflow instance
Entity asyncOperation = service.Retrieve("asyncoperation", 
    context.OperationId, new Microsoft.Xrm.Sdk.Query.ColumnSet("workflowactivationid"));

var workflowid = asyncOperation.GetAttributeValue<EntityReference>("workflowactivationid").Id;

之后,您可以使用它来获取笔记。