private void TaskDispatch() { ProcedureStep nextStep; UserGroup curGroup; bool bolIsArchived = false; foreach (ProcedureTask curTask in DispatchTasks) { //物勒工名 string strLog; strLog = "\nStep: " + curTask.CurrentStep.Name + " Handler: " + curTask.Handler.Name + ";"; //从原handler任务列表中删除 curTask.Handler.HandleTasks.Remove(curTask); curTask.Description += strLog; //获取下一步Handler nextStep = curTask.CurrentStep.NextStep; if (nextStep == null) { //完成,存入归档数据库 mainDataSet.ArchiveTask(curTask); bolIsArchived = true; continue; } curTask.CurrentStep = nextStep; if (nextStep.IsFeedback == false) { //获取负责人组(单向) curGroup = nextStep.HandleRole; //智能分配负责人(双向) curTask.Handler = GetHandler(curGroup); } else { //如果是反馈步骤,则不挂接处理人组,直接反馈给提交者 curTask.Handler = curTask.Submitter; } curTask.Handler.HandleTasks.Add(curTask); curTask.Status = "Process"; } mainDataSet.UpdateRuntimeDataSet(); if (bolIsArchived == true) { mainDataSet.UpdateArchiveDataSet(); } }