/// <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); }
/// <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); }
/// <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); }
/// <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); }
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")); }