1

通过几个步骤创建 StateMachine 工作流后,我想尝试使用 DynamicUpdate。按照说明创建更新地图,但是当我尝试应用它时,出现以下错误:

System.Activities.dll 中发生“System.Activities.DynamicUpdate.InstanceUpdateException”类型的未处理异常附加信息:更新映射与工作流定义不匹配。请确保这是此定义的正确映射,并且未手动更改序列化映射。

故障排除详细信息:所有者为 '' 的 IdSpace 有 '2' 个成员;预期为“1”。

如果修改了现有转换的触发器,或者将条件或操作活动重新分配给新的转换,StateMachine 不支持动态更新。


我在新版本中所做的只是添加 epmty State 并将指针连接到它。仍然存在的工作流给出了这个例外。

4

1 回答 1

0

试试看:

public static void UpdateWorkflowDynamic(string xaml)
    {
        StringReader sr = new StringReader(xaml);
        XmlReader xmlReader = XmlReader.Create(sr);
        XamlXmlReaderSettings settings = new XamlXmlReaderSettings
        {
            LocalAssembly = typeof(BookmarkDesign).Assembly
        };
        XamlReader xamlReader = new XamlXmlReader(xmlReader, settings);
        ActivityXamlServicesSettings XamlSettings = new ActivityXamlServicesSettings
        {
            CompileExpressions = true
        };
        Activity newActivity = ActivityXamlServices.Load(xamlReader, XamlSettings);


        sr = new StringReader(xaml);
        xmlReader = XmlReader.Create(sr);
        xamlReader = new XamlXmlReader(xmlReader, settings);
        ActivityBuilder activityBuilder = (ActivityBuilder)XamlServices.Load(ActivityXamlServices.CreateBuilderReader(xamlReader));
        DynamicUpdateServices.PrepareForUpdate(activityBuilder);
        DynamicUpdateMap updateMap = DynamicUpdateServices.CreateUpdateMap(activityBuilder);
        WorkflowIdentity newIdentity = new WorkflowIdentity
        {
            Name = "Update",
            Version = new Version(2, 0, 0, 0)
        };
        WorkflowApplicationInstance instance = WorkflowApplication.GetInstance(Guid.Parse("yourGuid"), GetInstance().InstanceStore);
        WorkflowApplication wfApp = new WorkflowApplication(newActivity, newIdentity);

        wfApp.Load(instance, updateMap);
        wfApp.Unload();
    }
于 2018-03-21T16:35:45.593 回答