【问题标题】:Is it possible to alter workflow step properties from code in Dynamics CRM 2013是否可以从 Dynamics CRM 2013 中的代码更改工作流步骤属性
【发布时间】:2015-06-04 14:10:13
【问题描述】:

如果我从 Dynamics CRM 中代码中的模板创建工作流,是否可以更改工作流步骤属性的值?

我有一个自定义工作流步骤,它是工作流模板的一部分,但是对于我由此创建的每个工作流,我想将不同的值传递给该步骤。

我正在从 C# 创建工作流,作为 powershell cmdlet 的一部分。我尝试使用 xaml 从头开始​​创建工作流,但它会导致更多问题,但它可以解决。

我可以使用以下代码创建和检索工作流,但我看不到任何指向我检索的 Workflow 对象上的步骤的内容。

using (var proxy = auth.GetOrganizationProxy())
        {
            // This statement is required to enable early-bound type support.
            proxy.EnableProxyTypes();

            OrganizationServiceContext _orgContext = new OrganizationServiceContext(proxy);

            CreateWorkflowFromTemplateRequest request = new CreateWorkflowFromTemplateRequest()
            {
                WorkflowName = "(" + EntityLogicalName + ") Migrate Notes to SharePoint",
                WorkflowTemplateId = new Guid(ProcessTemplateId)
            };

            var response = (CreateWorkflowFromTemplateResponse)proxy.Execute(request);

            ColumnSet cols = new ColumnSet(true);
            Workflow newWorkflow = (Workflow)proxy.Retrieve(Workflow.EntityLogicalName, response.Id, cols);

            newWorkflow.PrimaryEntity = EntityLogicalName;
        }

【问题讨论】:

    标签: c# .net powershell dynamics-crm


    【解决方案1】:

    当归档工作流 XAML,然后用这个 xaml(替换了值)从头开始创建一个新工作流时,我遇到了一个错误,CRM 认为 XAML 是在外部生成的并且无法工作,不允许我删除工作流,并且运行失败。

    我的解决方案是将工作流创建为模板,然后在代码中使用“CreateWorkflowFromTemplateRequest”该模板创建工作流。这将生成一个与模板具有相同基本实体的工作流,并且“CreateWorkflowFromTemplateResponse”包含此工作流的 ID

    然后我按 ID 查找此工作流,更改基本实体,替换我在其 XAML 属性中的值并将其保存为新工作流(使用新 ID),然后删除我从模板创建的原始工作流。

    导致我的代码基于模板创建了一个新的工作流,但涉及不同的实体。

    您无法编辑现有工作流的实体,因此需要查找、更改、重新保存。我可能已经按名称查找模板并对其进行了更改,但我不确定 CRM 如何处理模板与工作流,并选择克隆从模板生成的实际工作流。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多