private ReadOnlyCollection <string> GetPossibleStateTransitions() { List <string> targetStates = new List <string>(); ReadOnlyCollection <WorkflowQueueInfo> workflowQueuedInfos = this.WorkflowInstance.GetWorkflowQueueData(); StateMachineWorkflowActivity stateMachineWorkflow = this.StateMachineWorkflow; foreach (WorkflowQueueInfo queueInfo in workflowQueuedInfos) { foreach (string subscribedActivityName in queueInfo.SubscribedActivityNames) { Activity subscribedActivity = StateMachineHelpers.FindActivityByName(stateMachineWorkflow, subscribedActivityName); IEventActivity eventActivity = subscribedActivity as IEventActivity; if (eventActivity == null) { continue; } EventDrivenActivity eventDriven = StateMachineHelpers.GetParentEventDriven(eventActivity); Debug.Assert(eventDriven != null); Queue <Activity> activities = new Queue <Activity>(); activities.Enqueue(eventDriven); while (activities.Count > 0) { Activity activity = activities.Dequeue(); SetStateActivity setState = activity as SetStateActivity; if (setState != null) { targetStates.Add(setState.TargetStateName); } else { CompositeActivity compositeActivity = activity as CompositeActivity; if (compositeActivity != null) { foreach (Activity childActivity in compositeActivity.EnabledActivities) { activities.Enqueue(childActivity); } } } } } } return(targetStates.AsReadOnly()); }
private ReadOnlyCollection <string> GetPossibleStateTransitions() { List <string> list = new List <string>(); ReadOnlyCollection <WorkflowQueueInfo> workflowQueueData = this.WorkflowInstance.GetWorkflowQueueData(); StateMachineWorkflowActivity stateMachineWorkflow = this.StateMachineWorkflow; foreach (WorkflowQueueInfo info in workflowQueueData) { foreach (string str in info.SubscribedActivityNames) { IEventActivity eventActivity = StateMachineHelpers.FindActivityByName(stateMachineWorkflow, str) as IEventActivity; if (eventActivity != null) { EventDrivenActivity parentEventDriven = StateMachineHelpers.GetParentEventDriven(eventActivity); Queue <Activity> queue = new Queue <Activity>(); queue.Enqueue(parentEventDriven); while (queue.Count > 0) { Activity activity5 = queue.Dequeue(); SetStateActivity activity6 = activity5 as SetStateActivity; if (activity6 != null) { list.Add(activity6.TargetStateName); } else { CompositeActivity activity7 = activity5 as CompositeActivity; if (activity7 != null) { foreach (Activity activity8 in activity7.EnabledActivities) { queue.Enqueue(activity8); } continue; } } } } } } return(list.AsReadOnly()); }
internal Activity FindActivityByQualifiedName(string id) { return(StateMachineHelpers.FindActivityByName(this.StateMachineWorkflow, id)); }