示例#1
0
        /// <summary>
        /// 验证流程输入
        /// </summary>
        /// <param name="returnInfo">返回信息</param>
        /// <param name="flowIn">流程输入</param>
        /// <param name="workflow">工作流</param>
        /// <param name="connectionId">连接ID</param>
        /// <param name="currUser">当前用户</param>
        /// <returns>工作流定义</returns>
        protected override WorkflowDefineInfo ValiFlowIn(ReturnInfo <bool> returnInfo, FlowInInfo <FlowInitInfo <PersonTimeInfo <int> > > flowIn, out WorkflowInfo workflow, string connectionId = null, BasicUserInfo <int> currUser = null)
        {
            workflow = null;
            ValiBasicInParam(returnInfo, flowIn);
            if (returnInfo.Failure())
            {
                return(null);
            }

            ReturnInfo <WorkflowDefineInfo> reWorkFlowConfig = WorkflowConfigReader.ReaderAllConfig(flowIn.Flow.WorkflowCode, connectionId, currUser);

            if (reWorkFlowConfig.Failure())
            {
                returnInfo.FromBasic(reWorkFlowConfig);
                return(null);
            }

            ValiDbParam(returnInfo, flowIn, out workflow, connectionId, currUser);
            if (returnInfo.Failure())
            {
                return(null);
            }

            return(reWorkFlowConfig.Data);
        }
示例#2
0
        /// <summary>
        /// 验证数据库参数
        /// </summary>
        /// <param name="returnInfo">返回信息</param>
        /// <param name="flowIn">流程输入</param>
        /// <param name="workflow">工作流</param>
        /// <param name="connectionId">连接ID</param>
        /// <param name="currUser">当前用户</param>
        private void ValiDbParam(ReturnInfo <bool> returnInfo, FlowInInfo <FlowInitInfo <PersonTimeInfo <int> > > flowIn, out WorkflowInfo workflow, string connectionId = null, BasicUserInfo <int> currUser = null)
        {
            workflow = null;
            ReturnInfo <WorkflowDefineInfo> reWorkFlowConfig = WorkflowConfigReader.ReaderAllConfig(flowIn.Flow.WorkflowCode, connectionId, currUser);

            if (reWorkFlowConfig.Failure())
            {
                returnInfo.FromBasic(reWorkFlowConfig);
                return;
            }

            var user = UserTool <int> .GetCurrUser(currUser);

            if (flowIn.Flow.Id > 0)
            {
                var reInfo = WorkflowService.Find(flowIn.Flow.Id, connectionId, currUser);
                if (reInfo.Failure())
                {
                    returnInfo.FromBasic(reInfo);

                    return;
                }
                if (reInfo.Data == null)
                {
                    returnInfo.SetFailureMsg($"找不到工作流ID[{flowIn.Flow.Id}]的数据");

                    return;
                }

                if (reInfo.Data.CreaterId != user.Id)
                {
                    returnInfo.SetFailureMsg($"Sorry,此流程不是您创建的,无权限操作");

                    return;
                }

                workflow = reInfo.Data;

                flowIn.Flow.Id      = workflow.Id;
                flowIn.Flow.ApplyNo = workflow.ApplyNo;
            }
            else
            {
                ReturnInfo <bool> reInfo = WorkflowService.ExistsByApplyNo(flowIn.Flow.ApplyNo, connectionId, currUser);
                if (reInfo.Failure())
                {
                    returnInfo.FromBasic(reInfo);

                    return;
                }
                if (reInfo.Data)
                {
                    returnInfo.SetFailureMsg($"申请单号[{flowIn.Flow.ApplyNo}]已存在");

                    return;
                }
            }
        }
        public virtual ReturnInfo <WorkflowInfo> FindContainHandlesAndAllConfigs([DisplayName2("ID"), Id] int id, string connectionId = null)
        {
            return(ExecReturnFuncAndConnectionId <WorkflowInfo>((reInfo, connId) =>
            {
                WorkflowInfo workflow = Persistence.SelectContainHandles(id, connId);
                if (workflow == null)
                {
                    reInfo.SetFailureMsg("找不到此工作流信息");

                    return null;
                }
                if (workflow.Handles.IsNullOrCount0())
                {
                    reInfo.SetFailureMsg("找不到此工作流处理信息");

                    return null;
                }

                ReturnInfo <WorkflowDefineInfo> reDefine = WorkflowConfigReader.ReaderAllConfig(workflow.WorkflowDefineId, connId);
                if (reDefine.Failure())
                {
                    reInfo.FromBasic(reDefine);

                    return null;
                }
                if (reDefine.Data == null)
                {
                    reInfo.SetFailureMsg("找不到此工作流定义信息");

                    return null;
                }

                ReturnInfo <ConcreteFormInfo> reFormData = FormDataReaderFactory.Create(reDefine.Data.Code).ReaderByWorkflowId(id, connId);
                if (reFormData.Failure())
                {
                    reInfo.FromBasic(reDefine);

                    return null;
                }
                workflow.FormData = reFormData.Data;

                workflow.WorkflowDefine = reDefine.Data;

                return workflow;
            }, null, connectionId, AccessMode.SLAVE));
        }
        /// <summary>
        /// 验证流程输入
        /// </summary>
        /// <param name="returnInfo">返回信息</param>
        /// <param name="flowIn">流程输入</param>
        /// <param name="workflow">工作流</param>
        /// <param name="connectionId">连接ID</param>
        /// <returns>工作流定义</returns>
        protected override WorkflowDefineInfo ValiFlowIn(ReturnInfo <bool> returnInfo, FlowInInfo <FlowAuditInfo> flowIn, out WorkflowInfo workflow, string connectionId = null)
        {
            workflow = null;
            if (flowIn == null)
            {
                returnInfo.SetFailureMsg("流程输入不能为null");
                return(null);
            }
            if (flowIn.Flow == null)
            {
                returnInfo.SetFailureMsg("流程不能为null");
                return(null);
            }

            ReturnInfo <WorkflowHandleInfo> reHandle = WorkflowHandle.Find(flowIn.Flow.HandleId, connectionId);

            if (reHandle.Failure())
            {
                returnInfo.FromBasic(reHandle);
                return(null);
            }
            if (reHandle.Data == null)
            {
                returnInfo.SetFailureMsg("找不到工作流处理信息");
                return(null);
            }
            if (reHandle.Data.HandlerId != UserTool.CurrUser.Id)
            {
                returnInfo.SetFailureMsg("此处理流程不属于您审核");
                return(null);
            }
            if (reHandle.Data.HandleType == HandleTypeEnum.NOTIFY)
            {
                returnInfo.SetFailureMsg("您的处理流程是通知类型,不能审核");
                return(null);
            }
            if (reHandle.Data.HandleStatus == HandleStatusEnum.SENDED || reHandle.Data.HandleStatus == HandleStatusEnum.RETURNED)
            {
                returnInfo.SetFailureMsg("您的处理流程是已审核过,不能重复审核");
                return(null);
            }
            if (reHandle.Data.HandleStatus == HandleStatusEnum.EFFICACYED)
            {
                returnInfo.SetFailureMsg("您的处理流程已失效,不能审核");
                return(null);
            }

            ReturnInfo <WorkflowInfo> reWorkflow = WorkflowService.Find(reHandle.Data.WorkflowId);

            if (reWorkflow.Failure())
            {
                returnInfo.FromBasic(reWorkflow);
                return(null);
            }
            if (reWorkflow.Data == null)
            {
                returnInfo.SetFailureMsg("找不到工作流信息");
                return(null);
            }
            if (reWorkflow.Data.FlowStatus == FlowStatusEnum.DRAFT)
            {
                returnInfo.SetFailureMsg("此工作流是草稿状态不能审核");
                return(null);
            }
            if (reWorkflow.Data.FlowStatus == FlowStatusEnum.AUDIT_NOPASS || reWorkflow.Data.FlowStatus == FlowStatusEnum.AUDIT_PASS)
            {
                returnInfo.SetFailureMsg("此工作流已审核结束");
                return(null);
            }

            reHandle.Data.Workflow     = reWorkflow.Data;
            flowIn.Flow.WorkflowHandle = reHandle.Data;

            ReturnInfo <WorkflowDefineInfo> reWorkFlowConfig = WorkflowConfigReader.ReaderAllConfig(reWorkflow.Data.WorkflowDefineId, connectionId);

            if (reWorkFlowConfig.Failure())
            {
                returnInfo.FromBasic(reWorkFlowConfig);
                return(null);
            }

            return(reWorkFlowConfig.Data);
        }