/// <summary> /// Schedule the activity given by name and version. Activity should be already registered with Amazon SWF. /// </summary> /// <param name="name">Name of the activity.</param> /// <param name="version">Version of the activity.</param> /// <param name="positionalName">A user defined name to differentiate same activity at multiple positions in workflow.</param> /// <returns></returns> protected IFluentActivityItem ScheduleActivity(string name, string version, string positionalName = "") { Ensure.NotNullAndEmpty(name, "name"); Ensure.NotNullAndEmpty(version, "version"); var activityItem = new ActivityItem(Identity.New(name, version, positionalName), this); if (!_allWorkflowItems.Add(activityItem)) { throw new DuplicateItemException(string.Format(Resources.Duplicate_activity, name, version, positionalName)); } return(activityItem); }
public WorkflowItemEvent LastActivityEventFor(ActivityItem activityItem) { WorkflowItemEvent result = null; if (_cachedActivityEvents.TryGetValue(activityItem, out result)) { return(result); } result = AllActivityEventsFor(activityItem).FirstOrDefault(); _cachedActivityEvents.Add(activityItem, result); return(result); }
public IEnumerable <WorkflowItemEvent> AllActivityEventsFor(ActivityItem activityItem) { var allEvents = new List <WorkflowItemEvent>(); foreach (var historyEvent in _allHistoryEvents) { var workflowItemEvent = historyEvent.CreateActivityEventFor(_allHistoryEvents); if (workflowItemEvent == null) { continue; } if (workflowItemEvent.IsFor(activityItem) && !workflowItemEvent.InChainOf(allEvents)) { allEvents.Add(workflowItemEvent); yield return(workflowItemEvent); } } }
public IEnumerable <WorkflowItemEvent> AllActivityEvents(ActivityItem activityItem) { var allEvents = new List <WorkflowItemEvent>(); foreach (var historyEvent in AllEventsInDescOrderOfEventId) { var workflowItemEvent = historyEvent.ActivityEvent(_workflowTask.AllEvents); if (workflowItemEvent == null) { continue; } if (workflowItemEvent.IsFor(activityItem) && !workflowItemEvent.InChainOf(allEvents)) { allEvents.Add(workflowItemEvent); yield return(workflowItemEvent); } } }
public WorkflowItemEvent LastActivityEvent(ActivityItem activityItem) { return(AllActivityEvents(activityItem).FirstOrDefault(e => !LastEventFilters.Activity.Contains(e))); }