private void ThrowInvalidOperationExceptionIfParentIsParallelLocked(WorkItem workItem) { if (workItem.Parent != null) { var parent = WorkflowRepository.GetWorkItem(workItem.Parent.Id); if (parent.Status == WorkItemStatus.ParallelLocked) { throw new InvalidOperationException("Cannot delete workitem which is child of paralleled workitem"); } } }
public void DeleteWorkItem(string id) { using (WorkflowRepository.BeginTransaction()) { var workItem = WorkflowRepository.GetWorkItem(id); ThrowInvalidOperationExceptionIfParentIsParallelLocked(workItem); DeleteWorkItemRecursively(workItem); WorkflowRepository.CommitTransaction(); } }
private void TryUpdatingExpandLockOnParent(WorkItem item) { var parent = WorkflowRepository.GetWorkItem(item.Parent.Id); if (WorkflowRepository.GetChildWorkItems(item.Parent).All(WorkflowRepository.IsDone)) { parent = parent.UpdateStatus(WorkItemStatus.Normal); } else { parent = parent.UpdateStatus(WorkItemStatus.ExpandLocked); } WorkflowRepository.UpdateWorkItem(parent); }
private WorkItem MergeParallelWorkItems(WorkItemTransition transition) { var unlockedParentWorkItem = WorkflowRepository.GetWorkItem(transition.WorkItem.Parent.Id).UpdateStatus(WorkItemStatus.Normal); WorkflowRepository.UpdateWorkItem(unlockedParentWorkItem); foreach (var childWorkItem in WorkflowRepository.GetChildWorkItems(transition.WorkItem.Parent).ToList()) { if (WorkflowRepository.IsExpandStep(transition.WorkStep)) { CleanUpIfMovingFromExpandStep(new WorkItemTransition(childWorkItem, transition.WorkStep)); } WorkflowRepository.DeleteWorkItem(childWorkItem.Id); } return(unlockedParentWorkItem); }
public WorkItem GetWorkItem(string id) { return(WorkflowRepository.GetWorkItem(id)); }
private WorkItem GetTransientParentWorkItem(WorkStep transientStep) { var workItemId = transientStep.Path.Split(WorkflowPath.Separator).Last(); return(WorkflowRepository.GetWorkItem(workItemId)); }