Esempio n. 1
0
        /// <summary>
        /// Build a summary of the workflow instance that this channel represents.
        /// </summary>
        /// <returns>
        /// <see cref="WorkflowInstanceSummary" /> representing the workflow
        /// instance.
        /// </returns>
        private WorkflowInstanceSummary buildWorkflowInstanceSummary()
        {
            bool isXomlWorkflow = WorkflowInstanceHelper.IsXomlWorkflow(
                this.trackingParameters.RootActivity);
            string xomlDocument = WorkflowInstanceHelper.GetXomlDocument(
                this.trackingParameters.RootActivity);

            WorkflowInstanceSummary workflowInstanceSummary = new WorkflowInstanceSummary(
                this.trackingParameters.InstanceId, isXomlWorkflow,
                xomlDocument, this.trackingParameters.ContextGuid,
                this.trackingParameters.CallerInstanceId,
                this.trackingParameters.CallerContextGuid,
                this.trackingParameters.CallerParentContextGuid,
                buildCallPath());

            workflowInstanceSummary.WorkflowType = new WorkflowTypeSummary(
                this.trackingParameters.WorkflowType);

            workflowInstanceSummary.RootActivity = buildRootActivitySummary();

            return(workflowInstanceSummary);
        }
Esempio n. 2
0
        private static List <SerialisableActivityRemovedAction> buildSerialisableRemovedActivityAction(RemovedActivityAction action, int order)
        {
            List <SerialisableActivityRemovedAction> removedActivities = new List <SerialisableActivityRemovedAction>();

            Queue <Activity> activityQueue = new Queue <Activity>();

            activityQueue.Enqueue(action.OriginalRemovedActivity);
            while (activityQueue.Count > 0)
            {
                // is this the first record?
                Activity currentActivity = activityQueue.Dequeue();
                if (currentActivity == action.OriginalRemovedActivity)
                {
                    removedActivities.Add(new SerialisableActivityRemovedAction(
                                              currentActivity.GetType(), currentActivity.QualifiedName,
                                              currentActivity.Parent == null ? null : currentActivity.Parent.QualifiedName,
                                              order, WorkflowInstanceHelper.GetXomlDocument(currentActivity)));
                }
                else
                {
                    removedActivities.Add(new SerialisableActivityRemovedAction(
                                              currentActivity.GetType(), currentActivity.QualifiedName,
                                              currentActivity.Parent == null ? null : currentActivity.Parent.QualifiedName,
                                              -1, WorkflowInstanceHelper.GetXomlDocument(currentActivity)));
                }

                CompositeActivity parentActivity = currentActivity as CompositeActivity;
                if (parentActivity != null)
                {
                    foreach (Activity childActivity in parentActivity.Activities)
                    {
                        activityQueue.Enqueue(childActivity);
                    }
                }
            }

            return(removedActivities);
        }