コード例 #1
0
        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);
        }
コード例 #2
0
        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);
            }
        }