是否可以从 Dynamics CRM 2013 中的代码更改工作流步骤属性

Is it possible to alter workflow step properties from code in Dynamics CRM 2013

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

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

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

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

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;
        }

归档工作流程 XAML 时,然后使用此 xaml 从头开始​​创建新工作流程(替换值)时出现错误,CRM 认为 XAML 是外部生成的,并且工作失败,不让我删除工作流程,而且 运行.

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

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

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

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