Optimize activity execution contexts filtering
Removed manual removal of child contexts from the list of active activity execution contexts. Replaced it with more efficient direct filtering of not completed activity execution contexts. This change may affect scripts that access activity output directly, but a variable capturing workaround is provided.
This commit is contained in:
parent
e5de5934e6
commit
6b2eea3502
|
|
@ -253,14 +253,9 @@ public class WorkflowStateExtractor : IWorkflowStateExtractor
|
|||
|
||||
private static IEnumerable<ActivityExecutionContext> GetActiveActivityExecutionContexts(IEnumerable<ActivityExecutionContext> activityExecutionContexts)
|
||||
{
|
||||
var contexts = activityExecutionContexts.ToList();
|
||||
|
||||
// Remove all child contexts of completed contexts.
|
||||
foreach (var context in contexts.ToList().Where(context => context.IsCompleted))
|
||||
{
|
||||
contexts.RemoveAll(x => x.ParentActivityExecutionContext == context);
|
||||
}
|
||||
|
||||
return contexts;
|
||||
// Filter out completed activity execution contexts.
|
||||
// This will currently break scripts accessing activity output directly, but there's a workaround for that via variable capturing.
|
||||
// We may ultimately restore direct output access, but in a different way.
|
||||
return activityExecutionContexts.Where(x => !x.IsCompleted).ToList();
|
||||
}
|
||||
}
|
||||
Loading…
Reference in a new issue