Пример #1
0
        /// <summary>
        /// 错误返回信息,并记录日志
        /// </summary>
        /// <param name="serviceInfo"></param>
        /// <param name="proStartInfo"></param>
        /// <param name="errorCodeType"></param>
        /// <param name="returnStatus"></param>
        public void ProStartAddErrorInfo(BPMServiceModel serviceInfo, ProcessStartArgs proStartInfo, int errorCodeType = 1)
        {
            serviceInfo.ResponseInfo.returnStatus = 500;
            serviceInfo.ResponseInfo.returnMsg    = errorCodeType == 0 ? "requestInfo参数缺失." : serviceInfo.ResponseInfo.returnMsg;
            serviceInfo.ResponseInfo.returnCode   = errorCodeType == 999 ? "E0999" : "E000" + errorCodeType;

            if (proStartInfo != null)
            {
                serviceInfo.InterfaceLog.BizID       = proStartInfo.bizId;
                serviceInfo.InterfaceLog.ProcessCode = proStartInfo.processCode;
            }

            //记录日志
            _interfaceLogService.AddBPMInterfaceLogInfo(serviceInfo);
        }
Пример #2
0
        /// <summary>
        /// 获取流程编码
        /// 获取拆分规则匹配到的流程编码
        /// </summary>
        /// <param name="processStartInfo"></param>
        /// <returns></returns>
        private string GetSplitProcessCode(ProcessStartArgs processStartInfo)
        {
            var splitProcessCode = processStartInfo.processCode;//默认发起参数流程编码

            //查询流程编码是否有拆分
            var processSplitConfigList = _prcConfigSplitService.GetProcessSplitConfigList(processStartInfo.processCode);

            //存在拆分,则计算拆分后的流程编码
            if (processSplitConfigList.Count > 0)
            {
                //TODO:根据拆分配置规则 获取拆分配置
            }

            return(splitProcessCode);
        }
Пример #3
0
        /// <summary>
        /// 流程发起
        /// </summary>
        /// <param name="serviceInfo"></param>
        /// <param name="requestInfo">发起接口Model数据</param>
        /// <returns></returns>
        public ResponseResultModel ProcessStart(BPMServiceModel serviceInfo, ProcessStartArgs requestInfo)
        {
            //校验参数数据正确性
            serviceInfo.ResponseInfo.returnMsg = VerifyArgsData(requestInfo);
            if (!string.IsNullOrWhiteSpace(serviceInfo.ResponseInfo.returnMsg))
            {
                ProStartAddErrorInfo(serviceInfo, requestInfo, 2);
                return(serviceInfo.ResponseInfo);
            }

            //获取流程发起信息
            var processInfo = _processBusService.GetProcessStartInfo(requestInfo);

            if (!string.IsNullOrWhiteSpace(processInfo.ResultInfo.Message))
            {
                serviceInfo.ResponseInfo.returnMsg = processInfo.ResultInfo.Message;
                ProStartAddErrorInfo(serviceInfo, requestInfo, 2);
                return(serviceInfo.ResponseInfo);
            }
            var processStartInfo = processInfo.ProStartInfo;

            var data = new ProcessStartResponseModel()
            {
                k2Id = processStartInfo.K2ID
            };

            if (requestInfo.startMode == ProcessStartModeEnum.Default.ToString())//直接提交(一步法)
            {
                stopwatch.Reset();
                stopwatch.Start();
                //处理一步法逻辑(模拟表单提交)
                processStartInfo.FormId = _workFlowService.NewTaskStart(processStartInfo);
                stopwatch.Stop();
                timespan = stopwatch.Elapsed;
                _logger.Debug("StartProcess", $"NewTaskStart 执行时间:{ timespan.TotalMilliseconds } ms");//方法计时记录日志系统

                //获取表单查看URL
                data.formUrl = _processBusService.GetFormViewUrl(processStartInfo.FormId);
            }
            else//需要弹出表单确认(二步法)
            {
                data.formUrl = _processBusService.GetFormPreStartuptUrl(processStartInfo.SplitProcessCode, processStartInfo.K2ID);
            }
            serviceInfo.ResponseInfo.data = data;

            ProStartAddSuccessLog(serviceInfo, processStartInfo);//发起添加成功日志
            return(serviceInfo.ResponseInfo);
        }
Пример #4
0
        /// <summary>
        /// 获取流程发起信息
        /// </summary>
        /// <param name="startInfo"></param>
        /// <returns></returns>
        public (ResponseModel ResultInfo, ProcessStartInfo ProStartInfo) GetProcessStartInfo(ProcessStartArgs startInfo)
        {
            //获取发起Model数据
            var processStartInfo = AutoMapperExt.MapTo <ProcessStartInfo>(startInfo);
            var resultInfo       = new ResponseModel();

            if (!string.IsNullOrWhiteSpace(startInfo.bizId))
            {
                var proStartLogInfo = _interfaceLogService.GetProcessStartLogInfo(startInfo.processCode, startInfo.bizId);
                if (proStartLogInfo != null)
                {
                    processStartInfo.K2ID = proStartLogInfo.K2ID;

                    //如果流程已作废,则重新生成表单数
                    if (!_formInstanceSevice.IsProcessDeleteByBizId(startInfo.bizId))
                    {
                        resultInfo.Message = "该bizId对应的流程已发起,请勿重复发起";
                        return(resultInfo, processStartInfo);
                    }
                }
            }

            processStartInfo.SplitProcessCode = startInfo.processCode;
            //processStartInfo.SplitProcessCode = GetSplitProcessCode(startInfo);//TODO:获取流程编码
            if (!string.IsNullOrWhiteSpace(processStartInfo.SplitProcessCode))
            {
                //根据流程编码获取流程信息
                var processSetInfo = _processSetService.GetPRC_Config_ProcessSetByCode(processStartInfo.SplitProcessCode);
                if (processSetInfo == null)
                {
                    resultInfo.Message = string.Format("processCode:{0}不存在;", processStartInfo.SplitProcessCode);
                    return(resultInfo, processStartInfo);
                }

                if (string.IsNullOrWhiteSpace(processStartInfo.K2ID))
                {
                    processStartInfo.K2ID = _processSetService.GetSerialNumberByProcessCode(processStartInfo.SplitProcessCode);//生成K2ID
                }
            }

            return(resultInfo, processStartInfo);
        }
Пример #5
0
 public static void Validation_ProcessStarted(object sender, ProcessStartArgs e)
 {
     Console.WriteLine("Début du process de validation du template {0} le {1} à {2}", e.Libelle, e.StartTime.ToString("MM/dd/yyyy"), e.StartTime.ToString("HH:mm"));
 }