Ejemplo n.º 1
0
        //构造函数
        public designerDebugTracking(WorkflowDesigner designer)
        {
            //(1)
            this.designer     = designer;
            this.debugService = designer.DebugManagerView as DebuggerService;;

            //ziyunhx 2013-8-8 add debug status
            DebugStatus debug = new DebugStatus();

            debug.status = 1;

            //(2) TrackingProfile
            TrackingProfile    trackingProfile    = new TrackingProfile();
            ActivityStateQuery activityStateQuery = new ActivityStateQuery()
            {
                ActivityName = "*",
                States       = { ActivityStates.Executing },
                Variables    = { "*" },
                Arguments    = { "*" }
            };

            trackingProfile.Queries.Add(activityStateQuery);

            this.TrackingProfile = trackingProfile;

            //(3)
            clearTrackInfo();

            //(4)
            sourceLocationList = getSourceLocationMap();
            activityMapList    = getActivityMapList(sourceLocationList);
        } //end
Ejemplo n.º 2
0
        public GraywulfTrackingParticipant()
        {
            trackingProfile = new TrackingProfile();

            ActivityStateQuery aq = new ActivityStateQuery();

            aq.ActivityName = "*";
            aq.States.Add("*");
            aq.Arguments.Add("JobGuid");
            aq.Arguments.Add("UserGuid");
            aq.Arguments.Add("EntityGuid");
            aq.Arguments.Add("EntityGuidFrom");
            aq.Arguments.Add("EntityGuidTo");
            trackingProfile.Queries.Add(aq);

            CustomTrackingQuery cq = new CustomTrackingQuery();

            cq.ActivityName = "*";
            trackingProfile.Queries.Add(cq);

            FaultPropagationQuery fq = new FaultPropagationQuery();

            fq.FaultHandlerActivityName = "*";
            fq.FaultSourceActivityName  = "*";
            trackingProfile.Queries.Add(fq);
        }
Ejemplo n.º 3
0
        private static bool IsActivityLocationTracked(ActivityStateQuery activityQuery, string activityName, ActivityInstanceState activityInstanceState)
        {
            //todo_vc
            //if the activity query contains the "Executing" state we need to delete that. since there is no "Executing" state defined in product.
            //The correct fix is in the product.

            //this is fixed now for Beta2.
            //activityQuery.States.Remove(WorkflowElementStates.Executing);

            if (
                (activityQuery.ActivityName == "*" || activityQuery.ActivityName == activityName)
                &&
                (activityQuery.States.Contains("*") || activityQuery.States.Contains(activityInstanceState.ToString()))
                )
            {
                return(true);
            }
            return(false);
        }
Ejemplo n.º 4
0
        private TrackingParticipant CreateActivityTrackingParticipant()
        {
            var trackingParticipant = new ActivityStackTraceParticipant(MaxActivityStackTraceCount)
            {
                TrackingSource  = _trackingSource,
                TrackingProfile = new TrackingProfile
                {
                    Name = "ActivitTrackingProfile",
                    ActivityDefinitionId = "ProcessOrder"
                }
            };

            //TrackingQuery query = new WorkflowInstanceQuery
            //{
            //    States = { "*" }
            //};
            //trackingParticipant.TrackingProfile.Queries.Add(query);

            TrackingQuery query = new ActivityStateQuery
            {
                States =
                {
                    //ActivityStates.Canceled,
                    //ActivityStates.Closed,
                    ActivityStates.Faulted,
                    ActivityStates.Executing
                }
            };

            trackingParticipant.TrackingProfile.Queries.Add(query);

            query = new FaultPropagationQuery();
            trackingParticipant.TrackingProfile.Queries.Add(query);

            query = new CustomTrackingQuery
            {
                ActivityName = "*",
                Name         = "*"
            };
            trackingParticipant.TrackingProfile.Queries.Add(query);

            return(trackingParticipant);
        }
Ejemplo n.º 5
0
        protected override TrackingQuery NewTrackingQuery()
        {
            ActivityStateQuery query = new ActivityStateQuery {
                ActivityName = this.ActivityName
            };

            foreach (StateElement element in this.States)
            {
                query.States.Add(element.Name);
            }
            foreach (VariableElement element2 in this.Variables)
            {
                query.Variables.Add(element2.Name);
            }
            foreach (ArgumentElement element3 in this.Arguments)
            {
                query.Arguments.Add(element3.Name);
            }
            return(query);
        }
Ejemplo n.º 6
0
        private static TrackingQuery GetActivityQueryState(List <string> argumentNames, List <string> variablesNames)
        {
            ActivityStateQuery query = new ActivityStateQuery()
            {
                ActivityName = "*",
                States       = { ActivityStates.Executing, ActivityStates.Closed }
            };

            if (argumentNames != null)
            {
                argumentNames.Distinct().ToList().ForEach(arg =>
                {
                    query.Arguments.Add(arg);
                });
            }
            if (variablesNames != null)
            {
                variablesNames.Distinct().ToList().ForEach(v =>
                {
                    query.Variables.Add(v);
                });
            }
            return(query);
        }
Ejemplo n.º 7
0
        public override TrackingProfile GetActiveTrackingProfile()
        {
            //Log.TraceInternal("[CustomCodeProfileProvider]GetActiveTrackingProfile() ProfileType = {0}", this.ActiveTrackingProfile);
            TrackingProfile profile = new TrackingProfile
            {
                // Setting the visibility scope to All will retain the expected behaviour of old tests.
                ImplementationVisibility = ImplementationVisibility.All
            };
            WorkflowInstanceQuery   wfInstanceQuery         = new WorkflowInstanceQuery();
            ActivityStateQuery      activityStateQuery      = new ActivityStateQuery();
            ActivityScheduledQuery  activityScheduledQuery  = new ActivityScheduledQuery();
            BookmarkResumptionQuery bookmarkResumptionQuery = new BookmarkResumptionQuery();
            CustomTrackingQuery     customTrackingQuery     = new CustomTrackingQuery();
            CancelRequestedQuery    cancelRequestedQuery    = new CancelRequestedQuery();
            FaultPropagationQuery   faultPropagationQuery   = new FaultPropagationQuery();
            string all = "*";

            switch (this.ActiveTrackingProfile)
            {
            case TestProfileType.NullProfile:
                profile = null;
                break;

            case TestProfileType.UnavailableProfile:
                //add nothing
                break;

            case TestProfileType.NoProfile:
                //add nothing.
                break;

            case TestProfileType.EmptyProfile:
                //add nothing. simply return the empty profile object
                break;

            case TestProfileType.AllTrackpointsProfile:
                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case TestProfileType.AllWfTrackpointsProfile:
                wfInstanceQuery.States.Add(WorkflowElementStates.Started);
                wfInstanceQuery.States.Add(WorkflowElementStates.Idle);
                wfInstanceQuery.States.Add(WorkflowElementStates.Closed);
                wfInstanceQuery.States.Add(WorkflowElementStates.Resumed);
                wfInstanceQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(wfInstanceQuery);
                break;

            case TestProfileType.ProfileScopeTarget:
                wfInstanceQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Closed);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.DefaultITMonitoringProfile:
                wfInstanceQuery.States.Add(WorkflowElementStates.Started);
                profile.Queries.Add(wfInstanceQuery);

                //activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                //profile.Queries.Add(activityScheduledQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Executing);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.AllActivityTrackpointsProfile:
            case TestProfileType.ActivityTrackpointOnlyAllActivitiesAllStates:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.ActivityTrackpointOnlyAllActivities1State:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.ActivityTrackpointOnlyAllActivities2States:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Completed);
                activityStateQuery.States.Add(WorkflowElementStates.Faulted);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.ActivityTrackpointsOnlyProfile:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);
                break;

            case TestProfileType.BookmarkTrackpointsOnlyProfile:
                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case TestProfileType.WFInstanceTrackpointsOnlyProfile:
            case TestProfileType.WFInstanceTrackpointOnlyAllActivitiesAllState:
                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);
                break;

            case TestProfileType.WFInstanceTrackpointOnlyAllActivities1State:
                wfInstanceQuery.States.Add(WorkflowElementStates.Started);
                profile.Queries.Add(wfInstanceQuery);
                break;

            case TestProfileType.WFInstanceTrackpointOnlyAllActivities2State:
                wfInstanceQuery.States.Add(WorkflowElementStates.Started);
                wfInstanceQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(wfInstanceQuery);
                break;

            case TestProfileType.ActivityandBookmarkOnlyProfile:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(all);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case TestProfileType.WFInstanceandBookmarkOnlyProfile:
                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case TestProfileType.CustomWFEventsActivityCompletedOnly:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Closed);
                wfInstanceQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.CustomWFEventsActivityExecutingOnly:
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Executing);
                activityStateQuery.States.Add(WorkflowElementStates.Started);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.RandomProfile:
                profile.Queries.Add(wfInstanceQuery);
                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Executing);
                activityStateQuery.States.Add(WorkflowElementStates.Closed);
                profile.Queries.Add(activityStateQuery);
                break;

            case TestProfileType.MissingActivityNameProfile:

                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);

                break;

            case TestProfileType.FuzzedProfileStatus:

                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case TestProfileType.FuzzedProfileStructure:

                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);
                break;

            case (TestProfileType.RandomFuzzedProfile欱欲欳欴欵欶欷欸欹欺欻欼欽款欿歀歁歂):

                wfInstanceQuery.States.Add(WorkflowElementStates.Completed);
                profile.Queries.Add(wfInstanceQuery);

                activityStateQuery.ActivityName = all;
                activityStateQuery.States.Add(WorkflowElementStates.Closed);
                profile.Queries.Add(activityStateQuery);

                activityScheduledQuery.ActivityName = activityScheduledQuery.ChildActivityName = all;
                profile.Queries.Add(activityScheduledQuery);

                cancelRequestedQuery.ActivityName = cancelRequestedQuery.ChildActivityName = all;
                profile.Queries.Add(cancelRequestedQuery);

                faultPropagationQuery.FaultHandlerActivityName = all;
                profile.Queries.Add(faultPropagationQuery);

                bookmarkResumptionQuery.Name = all;
                profile.Queries.Add(bookmarkResumptionQuery);

                customTrackingQuery.ActivityName = all;
                customTrackingQuery.Name         = all;
                profile.Queries.Add(customTrackingQuery);

                break;

            case TestProfileType.StateMachineTrackpointsOnly:
                wfInstanceQuery.States.Add(WorkflowElementStates.All);
                profile.Queries.Add(wfInstanceQuery);

                profile.Queries.Add(new StateMachineStateQuery()
                {
                    ActivityName = all
                });
                break;

            default:
                //Log.TraceInternal("[CustomCodeProfileProvider]Returning default null profile...");
                profile = null;
                break;
            }

            return(profile);
        }
Ejemplo n.º 8
0
        private void ActivityTracking()
        {
            Console.WriteLine();
            Console.WriteLine("*** ActivityTracking ***");
            Console.WriteLine();
            MyTrackingParticipant participant;

            // First, let's just get all activity states tracked.
            TrackingProfile    profile = new TrackingProfile();
            ActivityStateQuery query   = new ActivityStateQuery();

            query.States.Add("*");
            profile.Queries.Add(query);

            RunWorkflow(profile, out participant);
            Assert.True(participant.ActivityStates.Contains("Tracking WriteLine1:Executing"));
            Assert.True(participant.ActivityStates.Contains("Tracking WriteLine1:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Faulted"));

            Assert.True(participant.ActivityStates.Contains("Tracking BookmarkActivity:Executing"));
            Assert.True(participant.ActivityStates.Contains("Tracking BookmarkActivity:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Faulted"));

            Assert.True(participant.ActivityStates.Contains("Tracking WriteLine2:Executing"));
            Assert.True(participant.ActivityStates.Contains("Tracking WriteLine2:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Faulted"));

            // Now lets test filtering by Activity name.

            profile            = new TrackingProfile();
            query              = new ActivityStateQuery();
            query.ActivityName = "Tracking BookmarkActivity";
            query.States.Add("*");
            profile.Queries.Add(query);
            RunWorkflow(profile, out participant);
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Executing"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Faulted"));

            Assert.True(participant.ActivityStates.Contains("Tracking BookmarkActivity:Executing"));
            Assert.True(participant.ActivityStates.Contains("Tracking BookmarkActivity:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Faulted"));

            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Executing"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Faulted"));

            // Now lets test filtering by Activity name AND specific states.

            profile            = new TrackingProfile();
            query              = new ActivityStateQuery();
            query.ActivityName = "Tracking BookmarkActivity";
            query.States.Add("Closed");
            profile.Queries.Add(query);
            RunWorkflow(profile, out participant);
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Executing"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine1:Faulted"));

            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Executing"));
            Assert.True(participant.ActivityStates.Contains("Tracking BookmarkActivity:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking BookmarkActivity:Faulted"));

            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Executing"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Closed"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Canceled"));
            Assert.True(!participant.ActivityStates.Contains("Tracking WriteLine2:Faulted"));
        }