/// <summary> /// 创建一个流程实例 /// </summary> /// <param name="flowId"></param> /// <returns></returns> public int CreateFlowCase(int flowId, int mainTableKey) { //流程 var flow = BF_FLOW.Instance.GetEntityByKey <BF_FLOW.Entity>(flowId); //主节点 var mainNode = BF_FLOW_NODE.Instance.GetEntity <BF_FLOW_NODE.Entity>("FLOW_ID=? AND IS_MAIN=1"); #region 保存流程实例 int flowCaseId = BF_FLOW_CASE.Instance.GetNextValueFromSeqDef(); BF_FLOW_CASE.Entity flowCase = new BF_FLOW_CASE.Entity() { ID = flowCaseId, CREATE_TIME = DateTime.Now, CREATE_UID = SystemSession.UserID, FLOW_ID = flow.ID, FLOW_TYPE_ID = flow.FLOW_TYPE_ID, IS_ARCHIVE = 0, IS_ENABLE = 1, MAIN_PAGE = (mainTableKey > 0)?((flow.MAIN_PAGE.IndexOf('?') >= 0) ? (flow.MAIN_PAGE + "&id=" + mainTableKey) : (flow.MAIN_PAGE + "?id=" + mainTableKey)):flow.MAIN_TABLE, MAIN_TABLE = flow.MAIN_TABLE, PRIMARY_KEY = mainTableKey, NAME = flow.NAME }; BF_FLOW_CASE.Instance.Add(flowCase); #endregion return(flowCaseId); }
/// <summary> /// 退回流程至主节点 /// </summary> /// <param name="flowNodeId"></param> /// <param name="flowCaseId"></param> /// <param name="flowId"></param> /// <returns></returns> public int ReturnFlowNodeCase(int returnFlowNodeCaseId, int flowCaseId) { int mainFlowNodeCaseId = 0; BF_FLOW_CASE.Entity flowCase = new BF_FLOW_CASE.Entity(); BF_FLOW_NODE.Entity mainFlowNode = new BF_FLOW_NODE.Entity(); try { flowCase = BF_FLOW_CASE.Instance.GetEntityByKey <BF_FLOW_CASE.Entity>(flowCaseId); mainFlowNode = BF_FLOW_NODE.Instance.GetEntity <BF_FLOW_NODE.Entity>("FLOW_ID=? AND IS_MAIN=1"); //获得上次主节点流程实例信息 var mainFlowNodeCaseList = BF_FLOW_NODE_CASE.Instance.GetList <BF_FLOW_NODE_CASE.Entity>("FLOW_NODE_ID=? AND FLOW_CASE_ID=? AND FLOW_ID=?", mainFlowNode.ID, flowCaseId, flowCase.FLOW_ID).OrderByDescending(p => p.ID).ToList(); if (mainFlowNodeCaseList != null && mainFlowNodeCaseList.Count() > 0) { var lastMainFlowNodeCase = mainFlowNodeCaseList[0]; mainFlowNodeCaseId = BF_FLOW_NODE_CASE.Instance.GetNextValueFromSeqDef(); BF_FLOW_NODE_CASE.Entity mainFlowNodeCase = new BF_FLOW_NODE_CASE.Entity() { ID = mainFlowNodeCaseId, DIV_X = lastMainFlowNodeCase.DIV_X, DIV_Y = lastMainFlowNodeCase.DIV_Y, AUDIT_STATUS = Convert.ToInt16(CS.Common.Enums.AuditStatus.未审批.GetHashCode()),//未审批 CREATE_TIME = DateTime.Now, CREATE_UID = SystemSession.UserID, USER_IDS = flowCase.CREATE_UID.ToString(), FLOW_CASE_ID = flowCaseId, FLOW_ID = flowCase.FLOW_ID, FROM_FLOW_NODE_CASE_ID = 0, IS_FINISH = 0, IS_MAIN = 1, NAME = lastMainFlowNodeCase.NAME, REMARK = "被退回至主节点", FINISH_TIME = DateTime.Now, FLOW_NODE_ID = mainFlowNode.ID, DEAL_WAY = mainFlowNode.DEAL_WAY }; BF_FLOW_NODE_CASE.Instance.Add(mainFlowNodeCase); } } catch (Exception ex) { string errMsg = string.Format(@"为流程[{0}]实例[{1}]添加节点[{2}]的实例[3]失败:{4}", flowCase.FLOW_ID, flowCaseId, mainFlowNode.ID, mainFlowNodeCaseId, ex.Message); BLog.Write(BLog.LogLevel.ERROR, errMsg); throw ex; } return(mainFlowNodeCaseId); }