public static TransferObject Start(ActivityBuilder activityBuilder) { TransferObject = new TransferObject(); var rootActivity = activityBuilder.Implementation; _logger.Trace("Converting root activity to traversal object."); var traversalObject = FromGenericWWFObject.ToBaseTraversalObject(rootActivity); TraverseActivities(traversalObject, 0); return(TransferObject); }
private static void TraverseActivities(BaseTraversalObject activity, int level) { _logger.Trace($"Converting {activity.DisplayName} to traversal object."); _logger.Trace($"In Level: {level}."); AddActivityToTransferObject(activity, level); // add any variables in current scope to transfer object (as global scope variable) if (activity.Variables.Any()) { _logger.Trace($"Has {activity.Variables.Count()} variables."); AddVariablesToTransferObject(activity.Variables); } // evaluate any activities in scope _logger.Trace($"Has {activity.Activities.Count()} child activities."); foreach (var childActivity in activity.Activities) { // convert child to traversal object var newActivity = FromGenericWWFObject.ToBaseTraversalObject(childActivity); // traverse child if (newActivity.IsSequence || newActivity.IsForEachActivity || newActivity.IsIfActivity || newActivity.IsTryCatchActivity) { TraverseActivities(newActivity, level + 1); } else { AddActivityToTransferObject(newActivity, level); } } // evaluate if then if (activity.Then != null) { _logger.Trace("In Then."); var thenActivity = FromGenericWWFObject.ToBaseTraversalObject(activity.Then); TraverseActivities(thenActivity, level + 1); } // evaluate if else if (activity.Else != null) { _logger.Trace("In Else"); var elseActivity = FromGenericWWFObject.ToBaseTraversalObject(activity.Else); TraverseActivities(elseActivity, level + 1); } }