如何在重新托管的设计器中保存WAM4工作流的XAML,不用将其写入文件?我想将序列化工作流作为XML字符串存储在数据库中。
给定一个名为w的WorkflowDesigner实例,这将保存到文件:
WorkflowDesigner.Flush();
w.Save("filename.xaml");
我希望这会序列化为字符串 - 但它失败了:
WorkflowDesigner.Flush();
var modelService = WorkflowDesigner.Context.Services.GetService<ModelService>();
var workflow = modelService.Root;
var xml = XamlServices.Save(workflow);
...在保存单个Sequence活动时,它会显示“Type”System.Activities.Presentation.Model.ModelItemImpl'不可见。如果类型是本地的,请在XamlReaderSettings中设置LocalAssembly字段。
答案 0 :(得分:3)
是的,使用Flush()和Text将xaml作为字符串。使用Save()保存到文件或流,在这种情况下不需要Flush()。
答案 1 :(得分:2)
Flush()
的实例上调用WorkflowDesigner
时,它会将当前工作流保存到名为Text
的公共属性中。您应该能够抓住该文本并将其粘贴到您的数据库中。
来自docs:
在获得此值之前,请致电 Flush()转换当前 文本工作流程。设置完之后 value,调用Load()加载XAML 进入工作流程。
答案 2 :(得分:1)
使用ActivityXamlServices和StringWriter将内容刷新为字符串。