protected override void Execute(ActivityExecutionContext activityExecutionContext) { var outcomes = activityExecutionContext.Outcomes = Outcomes.ToList(); var workflowExecutionContext = activityExecutionContext.WorkflowExecutionContext; var nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityBlueprint.Id, outcomes).ToList(); // See if we got a "default" connection (from the current activity to the next activity via the default "Done" outcome). if (!outcomes.Contains(OutcomeNames.Done) && !nextConnections.Any()) { nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityBlueprint.Id, new[] { OutcomeNames.Done }).ToList(); } var nextActivities = ( from connection in nextConnections from activityBlueprint in workflowExecutionContext.WorkflowBlueprint.Activities where activityBlueprint.Id == connection.Target.Activity.Id select activityBlueprint.Id ) .Distinct(); foreach (var nextConnection in nextConnections) { workflowExecutionContext.ExecutionLog.Add(nextConnection); } workflowExecutionContext.ScheduleActivities(nextActivities, activityExecutionContext.Output); }
protected override void Execute(ActivityExecutionContext activityExecutionContext) { var outcomes = activityExecutionContext.Outcomes = Outcomes.ToList(); var workflowExecutionContext = activityExecutionContext.WorkflowExecutionContext; var nextConnections = GetNextConnections(workflowExecutionContext, activityExecutionContext.ActivityBlueprint.Id, outcomes).ToList(); var nextActivities = ( from connection in nextConnections from activityBlueprint in workflowExecutionContext.WorkflowBlueprint.Activities where activityBlueprint.Id == connection.Target.Activity.Id select activityBlueprint.Id ) .Distinct(); workflowExecutionContext.ScheduleActivities(nextActivities, Input); }