private void AddActivitySubscription(ActivityStateQuery query)
 {
     HybridCollection<ActivityStateQuery> hybrids;
     this.trackingRecordPreFilter.TrackActivityStateRecords = true;
     foreach (string str in query.States)
     {
         if (string.CompareOrdinal(str, "*") == 0)
         {
             this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
             this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
             break;
         }
         if (string.CompareOrdinal(str, "Closed") == 0)
         {
             this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
         }
         else if (string.CompareOrdinal(str, "Executing") == 0)
         {
             this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
         }
     }
     if (this.activitySubscriptions == null)
     {
         this.activitySubscriptions = new Dictionary<string, HybridCollection<ActivityStateQuery>>();
     }
     if (!this.activitySubscriptions.TryGetValue(query.ActivityName, out hybrids))
     {
         hybrids = new HybridCollection<ActivityStateQuery>();
         this.activitySubscriptions[query.ActivityName] = hybrids;
     }
     hybrids.Add(query);
     this.AddActivityName(query.ActivityName);
 }
Пример #2
0
        private ActivityStateQuery Match(ActivityStateRecord activityStateRecord)
        {
            ActivityStateQuery query = null;

            if (this.activitySubscriptions != null)
            {
                //first look for a specific match, if not found, look for a generic match.
                if (this.activitySubscriptions.TryGetValue(activityStateRecord.Activity.Name, out var eventSubscriptions))
                {
                    query = MatchActivityState(activityStateRecord, eventSubscriptions.AsReadOnly());
                }

                if (query == null && this.activitySubscriptions.TryGetValue("*", out eventSubscriptions))
                {
                    query = MatchActivityState(activityStateRecord, eventSubscriptions.AsReadOnly());

                    if ((query != null) && (this.associatedProfile.ImplementationVisibility == ImplementationVisibility.RootScope))
                    {
                        if (!ShouldTrackActivity(activityStateRecord.Activity, "*"))
                        {
                            return(null);
                        }
                    }
                }
            }

            return(query);
        }
        private void AddActivitySubscription(ActivityStateQuery query)
        {
            HybridCollection <ActivityStateQuery> hybrids;

            this.trackingRecordPreFilter.TrackActivityStateRecords = true;
            foreach (string str in query.States)
            {
                if (string.CompareOrdinal(str, "*") == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState    = true;
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                    break;
                }
                if (string.CompareOrdinal(str, "Closed") == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
                }
                else if (string.CompareOrdinal(str, "Executing") == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                }
            }
            if (this.activitySubscriptions == null)
            {
                this.activitySubscriptions = new Dictionary <string, HybridCollection <ActivityStateQuery> >();
            }
            if (!this.activitySubscriptions.TryGetValue(query.ActivityName, out hybrids))
            {
                hybrids = new HybridCollection <ActivityStateQuery>();
                this.activitySubscriptions[query.ActivityName] = hybrids;
            }
            hybrids.Add(query);
            this.AddActivityName(query.ActivityName);
        }
Пример #4
0
        private void AddActivitySubscription(ActivityStateQuery query)
        {
            this.trackingRecordPreFilter.TrackActivityStateRecords = true;

            foreach (var state in query.States)
            {
                if (string.CompareOrdinal(state, "*") == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState    = true;
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                    break;
                }
                if (string.CompareOrdinal(state, ActivityStates.Closed) == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
                }
                else if (string.CompareOrdinal(state, ActivityStates.Executing) == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                }
            }

            if (this.activitySubscriptions == null)
            {
                this.activitySubscriptions = new Dictionary <string, HybridCollection <ActivityStateQuery> >();
            }

            if (!this.activitySubscriptions.TryGetValue(query.ActivityName, out var subscription))
            {
                subscription = new HybridCollection <ActivityStateQuery>();
                this.activitySubscriptions[query.ActivityName] = subscription;
            }
            subscription.Add((ActivityStateQuery)query);
            AddActivityName(query.ActivityName);
        }
Пример #5
0
        //构造函数
        public designerDebugTracking(WorkflowDesigner designer)
        {
            //(1)
            this.designer = designer;
            this.debugService = designer.DebugManagerView as DebuggerService; ;

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

            this.TrackingProfile = trackingProfile;

            //(3)
            clearTrackInfo();

            //(4)
            sourceLocationList = getSourceLocationMap();
            activityMapList = getActivityMapList(sourceLocationList);

        } //end
Пример #6
0
 static void ExtractArguments(ActivityStateRecord activityStateRecord, ActivityStateQuery activityStateQuery)
 {
     if (activityStateQuery.HasArguments)
     {
         activityStateRecord.Arguments = activityStateRecord.GetArguments(activityStateQuery.Arguments);
     }
     else
     {
         activityStateRecord.Arguments = ActivityUtilities.EmptyParameters;
     }
 }
Пример #7
0
 static void ExtractVariables(ActivityStateRecord activityStateRecord, ActivityStateQuery activityStateQuery)
 {
     if (activityStateQuery.HasVariables)
     {
         activityStateRecord.Variables = activityStateRecord.GetVariables(activityStateQuery.Variables);
     }
     else
     {
         activityStateRecord.Variables = ActivityUtilities.EmptyParameters;
     }
 }
        public void ActivityStateQueryToFormattedShouldFormat()
        {
            const string Expected = @"ActivityStateQuery
            {
            ActivityName: ActivityName
            Arguments
            {
            Arg1
            Arg2
            }
            QueryAnnotations
            {
            Annotation1: Annotation 1
            Annotation2: Annotation 2
            }
            States
            {
            Canceled
            Closed
            }
            Variables
            {
            Var1
            Var2
            }
            }
            ";

            // Arrange
            var asq = new ActivityStateQuery
                {
                    ActivityName = "ActivityName",
                    Arguments = {
                                   "Arg1", "Arg2"
                                },
                    QueryAnnotations = {
                                          { "Annotation1", "Annotation 1" }, { "Annotation2", "Annotation 2" }
                                       },
                    States = {
                                ActivityInstanceStates.Canceled, ActivityInstanceStates.Closed
                             },
                    Variables = {
                                   "Var1", "Var2"
                                }
                };

            // Act
            var actual = asq.ToFormattedString();

            // Assert
            Assert.AreEqual(Expected, actual);
        }
        private static ActivityStateQuery MatchActivityState(ActivityStateRecord activityRecord, ReadOnlyCollection <ActivityStateQuery> subscriptions)
        {
            ActivityStateQuery query = null;

            for (int i = 0; i < subscriptions.Count; i++)
            {
                if (subscriptions[i].States.Contains(activityRecord.State))
                {
                    return(subscriptions[i]);
                }
                if (subscriptions[i].States.Contains("*") && (query == null))
                {
                    query = subscriptions[i];
                }
            }
            return(query);
        }
 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;
 }
Пример #11
0
        private static ActivityStateQuery MatchActivityState(ActivityStateRecord activityRecord, ReadOnlyCollection <ActivityStateQuery> subscriptions)
        {
            ActivityStateQuery genericMatch = null;

            for (var i = 0; i < subscriptions.Count; i++)
            {
                if (subscriptions[i].States.Contains(activityRecord.State))
                {
                    return(subscriptions[i]);
                }
                else if (subscriptions[i].States.Contains("*"))
                {
                    if (genericMatch == null)
                    {
                        genericMatch = subscriptions[i];
                    }
                }
            }
            return(genericMatch);
        }
        private ActivityStateQuery Match(ActivityStateRecord activityStateRecord)
        {
            ActivityStateQuery query = null;

            if (this.activitySubscriptions != null)
            {
                HybridCollection <ActivityStateQuery> hybrids;
                if (this.activitySubscriptions.TryGetValue(activityStateRecord.Activity.Name, out hybrids))
                {
                    query = MatchActivityState(activityStateRecord, hybrids.AsReadOnly());
                }
                if ((query == null) && this.activitySubscriptions.TryGetValue("*", out hybrids))
                {
                    query = MatchActivityState(activityStateRecord, hybrids.AsReadOnly());
                    if (((query != null) && (this.associatedProfile.ImplementationVisibility == ImplementationVisibility.RootScope)) && !this.ShouldTrackActivity(activityStateRecord.Activity, "*"))
                    {
                        return(null);
                    }
                }
            }
            return(query);
        }
Пример #13
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;
 }
        void AddActivitySubscription(ActivityStateQuery query)
        {
            this.trackingRecordPreFilter.TrackActivityStateRecords = true;

            foreach (string state in query.States)
            {
                if (string.CompareOrdinal(state, "*") == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                    break;
                }
                if (string.CompareOrdinal(state, ActivityStates.Closed) == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsClosedState = true;
                }
                else if (string.CompareOrdinal(state, ActivityStates.Executing) == 0)
                {
                    this.trackingRecordPreFilter.TrackActivityStateRecordsExecutingState = true;
                }
            }

            if (this.activitySubscriptions == null)
            {
                this.activitySubscriptions = new Dictionary<string, HybridCollection<ActivityStateQuery>>();
            }

            HybridCollection<ActivityStateQuery> subscription;
            if (!this.activitySubscriptions.TryGetValue(query.ActivityName, out subscription))
            {
                subscription = new HybridCollection<ActivityStateQuery>();
                this.activitySubscriptions[query.ActivityName] = subscription;
            }
            subscription.Add((ActivityStateQuery)query);
            AddActivityName(query.ActivityName);
        }
 private static void ExtractVariables(ActivityStateRecord activityStateRecord, ActivityStateQuery activityStateQuery)
 {
     if (activityStateQuery.HasVariables)
     {
         activityStateRecord.Variables = activityStateRecord.GetVariables(activityStateQuery.Variables);
     }
     else
     {
         activityStateRecord.Variables = ActivityUtilities.EmptyParameters;
     }
 }
 private static void ExtractArguments(ActivityStateRecord activityStateRecord, ActivityStateQuery activityStateQuery)
 {
     if (activityStateQuery.HasArguments)
     {
         activityStateRecord.Arguments = activityStateRecord.GetArguments(activityStateQuery.Arguments);
     }
     else
     {
         activityStateRecord.Arguments = ActivityUtilities.EmptyParameters;
     }
 }
Пример #17
0
		private PSWorkflowTrackingParticipant GetTrackingParticipant()
		{
			PSWorkflowTrackingParticipant pSWorkflowTrackingParticipant = new PSWorkflowTrackingParticipant();
			TrackingProfile trackingProfile = new TrackingProfile();
			trackingProfile.Name = "WorkflowTrackingProfile";
			CustomTrackingQuery customTrackingQuery = new CustomTrackingQuery();
			customTrackingQuery.Name = "*";
			customTrackingQuery.ActivityName = "*";
			trackingProfile.Queries.Add(customTrackingQuery);
			WorkflowInstanceQuery workflowInstanceQuery = new WorkflowInstanceQuery();
			workflowInstanceQuery.States.Add("Started");
			workflowInstanceQuery.States.Add("Completed");
			workflowInstanceQuery.States.Add("Persisted");
			workflowInstanceQuery.States.Add("UnhandledException");
			trackingProfile.Queries.Add(workflowInstanceQuery);
			ActivityStateQuery activityStateQuery = new ActivityStateQuery();
			activityStateQuery.ActivityName = "*";
			activityStateQuery.States.Add("*");
			activityStateQuery.Variables.Add("*");
			trackingProfile.Queries.Add(activityStateQuery);
			pSWorkflowTrackingParticipant.TrackingProfile = trackingProfile;
			PSWorkflowTrackingParticipant pSWorkflowTrackingParticipant1 = pSWorkflowTrackingParticipant;
			return pSWorkflowTrackingParticipant1;
		}