/// <summary> /// 从数据库创建Process类。 /// </summary> /// <param name="processID">流程ID。</param> /// <returns>流程类。</returns> public static Process CreateProcess(GUIDEx processID) { lock (ModuleUtils.SynchronizedObject) { Process process = null; if (processID.IsValid) { #region 流程信息。 FlowProcessEntity flowProcessEntity = new FlowProcessEntity(); FlowStepEntity flowStepEntity = new FlowStepEntity(); FlowTransitionEntity flowTransitionEntity = new FlowTransitionEntity(); FlowProcess p = new FlowProcess(); p.ProcessID = processID; if (flowProcessEntity.LoadRecord(ref p)) { process = new Process(); process.ProcessID = p.ProcessID; process.ProcessName = p.ProcessName; process.ProcessSign = p.ProcessSign; process.BeginDate = p.BeginDate; process.EndDate = p.EndDate; process.ProcessDescription = p.ProcessDescription; #region 步骤信息。 process.Steps = flowStepEntity.LoadStepCollection(process.ProcessID); #endregion #region 变迁规则。 process.Transitions = flowTransitionEntity.LoadTransitionCollection(process.ProcessID); #endregion } #endregion } return process; } }
/// <summary> /// 对指定的步骤进行授权。 /// </summary> /// <param name="processSign">流程标识。</param> /// <param name="employeeID">进行授权的用户ID。</param> /// <param name="employeeName">进行授权的用户名称。</param> /// <param name="stepSigns">进行授权的步骤标识列表。</param> /// <param name="toEmployeeID">授权的目标用户ID。</param> /// <param name="fromDate">授权开始时间,为2010-01-11 15:00:00格式。</param> /// <param name="toDate">授权结束时间,为2010-01-11 15:00:00格式。</param> /// <param name="msgError">调用失败时的错误消息。</param> /// <returns>如果授权成功则返回true,否则返回false。</returns> public bool AuthorizeFlow(string processSign, GUIDEx employeeID, string employeeName, string[] stepSigns, GUIDEx toEmployeeID, DateTime fromDate, DateTime toDate, out string msgError) { lock (this) { msgError = null; bool result = false; try { #region 验证参数。 if (string.IsNullOrEmpty(processSign)) { msgError = "流程标识为空。"; return result; } if (!employeeID.IsValid) { msgError = "进行授权的用户ID为空。"; return result; } if (string.IsNullOrEmpty(employeeName)) { msgError = "进行授权的用户名称为空。"; return result; } if (stepSigns == null || stepSigns.Length == 0) { msgError = "进行授权的步骤标识列表不存在或为空。"; return result; } if (!toEmployeeID.IsValid) { msgError = "授权的目标用户ID为空。"; return result; } #endregion #region 获取流程定义。 GUIDEx processID = this.flowProcessEntity.FindProcessID(processSign); if (!processID.IsValid) { msgError = "流程标识不正确。"; return result; } #endregion #region 流程步骤定义。 FlowStepEntity flowStepEntity = new FlowStepEntity(); List<FlowStep> flowStepList = flowStepEntity.FindFlowStep(processID, stepSigns); if (flowStepList == null || flowStepList.Count == 0) { msgError = "进行授权的步骤标识列表不存在或为空。"; return result; } #endregion #region 流程步骤的授权。 FlowStepAuthorize flowStepAuthorize = new FlowStepAuthorize(); FlowStepAuthorizeEntity flowStepAuthorizeEntity = new FlowStepAuthorizeEntity(); foreach (FlowStep fs in flowStepList) { flowStepAuthorize.AuthorizeID = GUIDEx.New; flowStepAuthorize.BeginDate = fromDate; flowStepAuthorize.EndDate = toDate; flowStepAuthorize.EmployeeID = employeeID; flowStepAuthorize.StepID = fs.StepID; flowStepAuthorize.TargetEmployeeID = toEmployeeID; result = flowStepAuthorizeEntity.UpdateRecord(flowStepAuthorize); } #endregion } catch (Exception e) { msgError = e.Message; } return result; } }
/// <summary> /// 收回流程的授权。 /// </summary> /// <param name="processSign">流程标识。</param> /// <param name="employeeID">进行回收的用户ID,只能回收自己的授权。</param> /// <param name="employeeName">进行回收的用户名称。</param> /// <param name="authorizeID">要回收的流程授权的步骤标识列表。</param> /// <param name="msgError">调用失败时的错误消息。</param> /// <returns>回收成功则返回true,否则返回false。</returns> public bool WithdrawFlow(string processSign, GUIDEx employeeID, string employeeName, string[] stepSigns, out string msgError) { lock (this) { msgError = null; bool result = false; try { #region 验证参数。 if (string.IsNullOrEmpty(processSign)) { msgError = "流程标识为空。"; return result; } if (!employeeID.IsValid) { msgError = "用户ID为空。"; return result; } if (stepSigns == null || stepSigns.Length == 0) { msgError = "要回收的流程授权的步骤标识列表为空。"; return result; } #endregion #region 获取流程定义。 GUIDEx processID = this.flowProcessEntity.FindProcessID(processSign); if (!processID.IsValid) { msgError = "流程标识不正确。"; return result; } #endregion #region 流程步骤定义。 FlowStepEntity flowStepEntity = new FlowStepEntity(); List<FlowStep> flowStepList = flowStepEntity.FindFlowStep(processID, stepSigns); if (flowStepList == null || flowStepList.Count == 0) { msgError = "进行授权的步骤标识列表不存在或为空。"; return result; } #endregion #region 流程步骤授权取消。 FlowStepAuthorizeEntity flowStepAuthorizeEntity = new FlowStepAuthorizeEntity(); foreach (FlowStep fs in flowStepList) { result = flowStepAuthorizeEntity.DeleteFlowStepAuthorize(employeeID, fs.StepID); } #endregion } catch (Exception e) { msgError = e.Message; } return result; } }