public void InstanceTracking() { Console.WriteLine(); Console.WriteLine("*** InstanceTracking ***"); Console.WriteLine(); MyTrackingParticipant participant; // First, let's just get all instance states tracked. TrackingProfile profile = new TrackingProfile(); WorkflowInstanceQuery query = new WorkflowInstanceQuery(); query.States.Add("*"); profile.Queries.Add(query); RunWorkflow(profile, out participant); Assert.True(participant.InstanceStates.Contains("Started")); Assert.True(participant.InstanceStates.Contains("Idle")); Assert.True(participant.InstanceStates.Contains("Completed")); // Now lets test filtering. Only ask for Idle and Unloaded. // We should only get Idle. profile = new TrackingProfile(); query = new WorkflowInstanceQuery(); query.States.Add("Idle"); query.States.Add("Unloaded"); profile.Queries.Add(query); RunWorkflow(profile, out participant); Assert.True(!participant.InstanceStates.Contains("Started")); Assert.True(participant.InstanceStates.Contains("Idle")); Assert.True(!participant.InstanceStates.Contains("Completed")); // Even though we asked for Unloaded records, there shouldn't be any. Assert.True(!participant.InstanceStates.Contains("Unloaded")); }
protected override TrackingQuery NewTrackingQuery() { WorkflowInstanceQuery query = new WorkflowInstanceQuery(); foreach (StateElement element in this.States) { query.States.Add(element.Name); } return(query); }
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); }