//构造函数 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
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); }
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); }
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); }
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); }
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); }
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); }
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")); }