Beispiel #1
0
        public void BookmarkResumptionTracking()
        {
            Console.WriteLine();
            Console.WriteLine("*** BookmarkResumptionTracking ***");
            Console.WriteLine();
            MyTrackingParticipant participant;

            // First, let's just get all bookmarks tracked.
            TrackingProfile         profile = new TrackingProfile();
            BookmarkResumptionQuery query   = new BookmarkResumptionQuery();

            query.Name = "*";
            profile.Queries.Add(query);
            RunWorkflow(profile, out participant);
            Assert.True(participant.BookmarkResumptionRecords.Contains(bookmarkName + ":" + bookmarkData));

            // Now lets test filtering.

            profile    = new TrackingProfile();
            query      = new BookmarkResumptionQuery();
            query.Name = bookmarkName;
            profile.Queries.Add(query);
            RunWorkflow(profile, out participant);
            Assert.True(participant.BookmarkResumptionRecords.Contains(bookmarkName + ":" + bookmarkData));

            profile    = new TrackingProfile();
            query      = new BookmarkResumptionQuery();
            query.Name = "some bogus bookmark name";
            profile.Queries.Add(query);
            RunWorkflow(profile, out participant);
            Assert.True(!participant.BookmarkResumptionRecords.Contains(bookmarkName + ":" + bookmarkData));
        }
        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);
        }