如果我在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;
}
答案 0 :(得分:1)
归档工作流XAML,然后使用此xaml从头开始创建一个新工作流程(替换值)我收到一个错误,CRM认为XAML是外部生成的,无法工作,不会让我删除工作流程,它无法运行。
我的解决方案是创建一个工作流作为模板,然后在代码中,使用" CreateWorkflowFromTemplateRequest"从该模板创建工作流。这将生成一个工作流,该工作流具有与模板相同的基本实体,以及" CreateWorkflowFromTemplateResponse"包含此工作流程的ID
然后,我按ID查看了此工作流程,更改了基本实体,将其中的值替换为XAML属性,并将其保存为新的工作流程(使用新ID),然后删除了我创建的原始工作流程模板。
导致我的代码基于模板创建新的工作流,但是关于不同的实体。
您无法编辑现有工作流程的实体,因此可以查找,更改,重新保存。我可能已经按名称查找了模板,对其进行了修改,但我不确定CRM如何处理模板与工作流程,并选择克隆从模板生成的实际工作流程。