代码之家  ›  专栏  ›  技术社区  ›  user3085988

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

  •  2
  • user3085988  · 技术社区  · 6 年前

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

    2 回复  |  直到 6 年前
        1
  •  1
  •   Arun Vinoth PrecogTechnologies    6 年前

    不幸的是,您无法直接获得此信息。

    解决方法是设置输入参数&在designer中将工作流名称甚至工作流Id作为配置项发送。在codeactivity中读取此输入参数(&A);检索与之关联的批注。

    这样,即使有多个工作流调用/执行相同的codeactivity,也可以很好地工作。

        2
  •  0
  •   Andrew Butenko    6 年前

    您可以使用以下代码使用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;
    

    之后你可以用它来取笔记。