public SplitForParallelism ( |
||
workItem | ||
parallelRootStep | ||
return | IEnumerable |
public IEnumerable<WorkItem> SplitForParallelism(WorkItem workItem, WorkStep parallelRootStep)
{
var childWorkItems = new List<WorkItem>();
foreach (var subStep in _workflowRepository.GetChildWorkSteps(parallelRootStep.Path))
{
var childId = GetParallelId(workItem.Id, parallelRootStep, subStep);
var childWorkItem = workItem.CreateChildItem(childId,WorkItemParentType.Parallelled).AddClass(subStep.WorkItemClass);
childWorkItems.Add(childWorkItem);
}
return childWorkItems;
}
private WorkItem CreateParallelledChildrenAndReturnWorkItemToMove(WorkItemTransition transition, WorkStep parallelStep) { var helper = new ParallelStepHelper(WorkflowRepository); var splitWorkItems = helper.SplitForParallelism(transition.WorkItem, parallelStep); foreach (var splitWorkItem in splitWorkItems) { WorkflowRepository.CreateWorkItem(splitWorkItem); WorkStep expandStep; var isInExpandStep = WorkflowRepository.IsInExpandStep(transition.WorkItem, out expandStep); if (isInExpandStep) { CreateTransientWorkSteps(splitWorkItem, expandStep); } } var idToMove = ParallelStepHelper.GetParallelId(transition.WorkItem.Id, parallelStep, transition.WorkStep); var workItemToMove = splitWorkItems.First(wi => wi.Id == idToMove); return(workItemToMove); }