Я пытаюсь сериализовать рабочий процесс (используя рабочий процесс C # 4.0), чтобы получить полный рабочий процесс XAML и ударить по стене.
У меня есть активность (myActivity), которую я создал. Содержимое файла xaml, описывающего это действие:
<Activity mc:Ignorable="sap" x:Class="atest.MySuite" >
<Sequence sap:VirtualizedContainerService.HintSize="222,501">
<sap:WorkflowViewStateService.ViewState>
<scg3:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg3:Dictionary>
</sap:WorkflowViewStateService.ViewState>
<Sequence DisplayName="First Sequence" sap:VirtualizedContainerService.HintSize="200,99">
<sap:WorkflowViewStateService.ViewState>
<scg3:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg3:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</Sequence>
<Sequence DisplayName="Second Sequence" sap:VirtualizedContainerService.HintSize="200,99">
<sap:WorkflowViewStateService.ViewState>
<scg3:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg3:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</Sequence>
<Sequence DisplayName="Third Sequence" sap:VirtualizedContainerService.HintSize="200,99">
<sap:WorkflowViewStateService.ViewState>
<scg3:Dictionary x:TypeArguments="x:String, x:Object">
<x:Boolean x:Key="IsExpanded">True</x:Boolean>
</scg3:Dictionary>
</sap:WorkflowViewStateService.ViewState>
</Sequence>
</Sequence>
</Activity>
Обратите внимание, что подпоследовательности отображаются в XAML.
При сериализации этого действия я использую код, найденный в MSDN:
using (var sw = new StreamWriter(somePath))
{
sw.Write(a.Log.ToString());
StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
XamlWriter xw = ActivityXamlServices.CreateBuilderWriter(new XamlXmlWriter(tw, new XamlSchemaContext()));
XamlServices.Save(xw, myActivity);
string serializedActivity = sb.ToString();
}
Но строка, которая выходит на другом конце, просто:
<?xml version="1.0" encoding="utf-16"?><MySuite xmlns="clr-namespace:atest;assembly=Wtf.Automation.atest" xmlns:sap="http://schemas.microsoft.com/netfx/2009/xaml/activities/presentation" />
Я изучал MSDN и stackoverflow, но не нашел способа получить полный XAML пользовательского действия (с учетом экземпляра этого действия), как я описал в моем файле xaml, а не только в этой усеченной версии.
Кто-нибудь знает, есть ли способ? Примеры кода и / или указатели будут с благодарностью.
Спасибо!