void IWorkItemService.Release(WorkItem workItem) { if (workItem.Status != WorkItemStatus.Open) { throw new InvalidOperationException(string.Format("不能释放处于{0}状态的任务", workItem.Status)); } workItem.ChangeStatus(WorkItemStatus.New); _repository.Update(workItem); //释放任务会释放slot,需要将该节点的NoSlot的任务置为New if (workItem.GetReferredSetting().IsUsingSlot) { _repository.FindWorkItemsByActivityInstance(workItem.Process, workItem.ActivityInstance) .Where(o => o.Status == WorkItemStatus.NoSlot).ToList() .ForEach(o => { o.ChangeStatus(WorkItemStatus.New); _repository.Update(workItem); }); } }