Exemple #1
0
        /// <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)));
 }