Exemple #1
0
        /// <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);
        }
Exemple #2
0
        /// <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);
        }