To inspect the Workflow tree, we can use WorkflowInspectServices:
/// <summary>
/// Use this method to list all sub activities
/// WorkflowInspectServices: Provides methods
/// for working with the runtime metadata for an activity tree.
/// </summary>
/// <param name="rootWF"></param>
/// <param name="indent"></param>
private static void InspectWorkflow(Activity rootWF, int indent) {
IEnumerator<Activity> activities =
WorkflowInspectionServices.GetActivities(rootWF).GetEnumerator();
Console.WriteLine(new string(' ', indent) + rootWF.DisplayName + " id:"
+ rootWF.Id);
while (activities.MoveNext()) {
InspectWorkflow(activities.Current, indent + 2);
}
}
To Inspect workflow Variables and Arguments, we can use ActivityBuilder:
/// <summary>
/// Use this method to list all Variables, InArguments and OutArguments
/// </summary>
private static void LoadWFFromXaml(){
string xamlWorkflow =File.ReadAllText(@"Path\Workflow1.xaml");
StringReader sr = new StringReader(xamlWorkflow);
XamlXmlReader xxr = new XamlXmlReader(sr);
XamlReader xr = ActivityXamlServices.CreateBuilderReader(xxr);
ActivityBuilder ab = XamlServices.Load(xr) as ActivityBuilder;
foreach (var p in ab.Properties) {
Console.WriteLine("Name:" + p.Name);
Console.WriteLine("Type:" + p.Type);
Console.WriteLine("Attribute:" + p.Attributes);
Console.WriteLine("Value:" + p.Value);
Console.WriteLine("---------------------------------");
}
}
a99ef9c9-20f1-481d-ac80-98b212a34b19|0|.0
WF4
WF4