当前位置: 首页 > news >正文

黄楼企业建站流程做天然文化石的网站

黄楼企业建站流程,做天然文化石的网站,发稿流程,抖音seo源码搭建流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表#xff1b;element variable 当前会签变量名称#xff0c;类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceIm…流程图配置 会签实现须在 userTask 节点下的 multi instance 中配置 collection 及 completion condition; collection 会签人员列表element variable 当前会签变量名称类似循环中的 item;completion condition: 完成条件。 ${taskExecutionServiceImpl.findProcessUsers(‘applicant’)} : spring 代理下的 activiti 项目可使用 bean 下配置方法。 ${countersignComponent.isComplete(taskId)} 会签实现方法省略监听类。括号中的字符加单引号就是传递字符串不加引号就是取当前任务中的变量。 会签配置图中的 user 变量需在此处使用。 实现代码 会签实现代码 Component RequiredArgsConstructor public class CountersignComponent {private final TaskService taskService;public boolean isComplete(String taskId) {// 1、参数验证if(StringUtils.isAnyEmpty(taskId)){return false;}// 2、获取当前任务节点参数及会签判断后重新设置// 获取流程参数 var会签人员完成自己的审批任务时会添加流程参数 var2 为拒绝1 为同意String variable BeanUtil.nullOrUndefinedToEmptyStr(taskService.getVariableLocal(taskId, ActivitiCommonConstant.VAR.getValue()));// 当值为 2 证明已有人拒绝返回 trueif(DefaultConstant.TWO_CODE.getKey().equals(variable)){//会签结束设置参数 execType 为 4 进行下一步操作。taskService.setVariableLocal(taskId, ActivitiCommonConstant.EXEC_TYPE.getValue(), DefaultConstant.FIVE_CODE.getKey());return true;}// 当值为 1判断会签是否结束Integer complete (Integer) taskService.getVariable(taskId, ActivitiCommonConstant.NR_OF_COMPLETED_INSTANCES.getValue());if(complete 0){// 会签未结束后续处理}return false;}}用户动态获取代码 Overridepublic ListString findProcessUsers(String code) {// 1、参数验证if(StringUtils.isEmpty(code)){throw new BusinessException(ActivitiConstant.PROCESS_USER_NULL);}// 2、查询对应流程人员具体取人逻辑根据个人业务变更ProcessParameterQuery processParameterQuery new ProcessParameterQuery();processParameterQuery.setCode(code);GostopResponseVoProcessParameterVo processParameter dev.findProcessParameter(processParameterQuery);ProcessParameterVo processParameterVo processParameter.getResult();if(Objects.isNull(processParameterVo)){throw new BusinessException(ActivitiConstant.PROCESS_USER_NULL);}ListHospitalUserVo userInfos processParameterVo.getUserInfos();if(CollectionUtils.isEmpty(userInfos)){throw new BusinessException(ActivitiConstant.PROCESS_USER_NULL);}return userInfos.stream().map(HospitalUserVo::getId).distinct().collect(Collectors.toList());}开启流程 Overridepublic String startProcess(CommonTaskParamVo param) {// 1、参数验证if(Objects.isNull(param) || StringUtils.isAnyEmpty(param.getProcessKey())){throw new BusinessException(ActivitiConstant.EXEC_ERROR_PARAMS_NULL);}// 2、启动流程定义返回流程实例ProcessInstance pi;try {CustomParamVo customParamVo param.getCustomParamVo();String paramJson JSONObject.toJSONString(customParamVo);Map paramMap JSONObject.parseObject(paramJson, Map.class);pi runtimeService.startProcessInstanceByKey(param.getProcessKey(), paramMap);} catch (Exception e) {log.error(e.getMessage());throw new BusinessException(ActivitiConstant.PROCESS_NOT_DEPLOYED);}return pi.getId();}任务执行 Overridepublic String complete(CommonTaskParamVo param) {// 1、参数验证if(Objects.isNull(param) || StringUtils.isAnyEmpty(param.getProcessId(), param.getUserId())){throw new BusinessException(ActivitiConstant.EXEC_ERROR_PARAMS_NULL);}// 2、查询当前人任务信息String userId param.getUserId();//与正在执行的任务管理相关的ServiceTask task taskService.createTaskQuery()//指定个人任务查询指定办理人.taskCandidateUser(userId)//使用流程实例ID查询.processInstanceId(param.getProcessId())//排序.orderByTaskCreateTime().asc()//返回列表.singleResult();if (Objects.isNull(task)) {throw new BusinessException(ActivitiConstant.TASK_NULL_ERROR);}task.setDescription(param.getDescription());task.setAssignee(userId);taskService.saveTask(task);// 2.1 设置执行人信息HospitalUserCacheVo userInfo activitComponent.getUserInfo();CustomParamVo customParamVo param.getCustomParamVo();customParamVo.setExecUserId(userInfo.getId());customParamVo.setExecUserName(userInfo.getDepartmentName());customParamVo.setExecTime(DateUtil.date2String(LocalDateTime.now()));customParamVo.setTaskId(task.getId());// 2.2 将自定义参数转为 mapString paramJson JSONObject.toJSONString(customParamVo);Map paramMap JSONObject.parseObject(paramJson, Map.class);taskService.setVariablesLocal(task.getId(), paramMap);// 3、执行当前节点信息taskService.complete(task.getId());return task.getId();}参数接收对象 Data public class CommonTaskParamVo {/*** 用户 ID*/private String userId;/**** 流程图定义 KEY*/private String processKey;/*** 流程 ID*/private String processId;/*** 描述*/private String description;/*** 自定义参数类*/private CustomParamVo customParamVo;} Data public class CustomParamVo {/*** 操作类型 1 同意 2 回退 3 驳回 4 提交 5 删除*/private String execType;/*** 节点类型 1 申请节点 2 审批节点*/private String nodeType;/*** 预留参数*/private String var;/*** 执行人 ID*/private String execUserId;/*** 执行人名称*/private String execUserName;/*** 执行时间*/private String execTime;/*** 任务 ID*/private String taskId;}使用上述参数类及流程配置后查询任务流水就变得非常简单。 流水查询 Overridepublic ListFlowDataVo flowQueryProcess(FlowQuery param) {// 1、参数验证if(Objects.isNull(param) || StringUtils.isAnyEmpty(param.getProcessId())){return new ArrayList();}// 2、查询任务执行节点信息HistoricTaskInstanceQuery historicTaskInstanceQuery historyService.createHistoricTaskInstanceQuery();ListHistoricTaskInstance taskInfoArr historicTaskInstanceQuery.processInstanceId(param.getProcessId()).orderByTaskCreateTime().asc().list();if(CollectionUtils.isEmpty(taskInfoArr)){return new ArrayList();}// 3、查询任务执行参数信息HistoricVariableInstanceQuery historicVariableInstanceQuery historyService.createHistoricVariableInstanceQuery();ListHistoricVariableInstance variableInstanceList historicVariableInstanceQuery.processInstanceId(param.getProcessId()).list();// 4、构建返回信息对象ListFlowDataVo resultArr taskInfoArr.stream().map(taskInfo - {FlowDataVo flowDataVo new FlowDataVo();flowDataVo.setNodeName(taskInfo.getName());flowDataVo.setDescription(taskInfo.getDescription());ListHistoricVariableInstance variableArr variableInstanceList.stream().filter(e - taskInfo.getId().equals(e.getTaskId())).collect(Collectors.toList());if (CollectionUtils.isEmpty(variableArr)) {flowDataVo.setStatus(DefaultConstant.ONE_CODE.getKey());return flowDataVo;}JSONObject flowDataJson (JSONObject) JSONObject.toJSON(flowDataVo);variableArr.stream().forEach(var - {String variableName var.getVariableName();String value BeanUtil.nullOrUndefinedToEmptyStr(var.getValue());flowDataJson.put(variableName, value);});String flowDataJsonString flowDataJson.toJSONString();FlowDataVo afterFlowData JSONObject.parseObject(flowDataJsonString, FlowDataVo.class);afterFlowData.setStatus(DefaultConstant.TWO_CODE.getKey());return afterFlowData;}).collect(Collectors.toList());return resultArr;}流水查询使用 bean 对象 Data public class FlowQuery {/*** 流程 ID*/private String processId;/*** 用户 ID*/private String userId; } Data public class FlowDataVo {/*** 操作类型 1 同意 2 回退 3 驳回 4 提交 5 删除*/private String execType;/*** 节点类型 1 申请节点 2 审批节点*/private String nodeType;/*** 预留参数*/private String var;/*** 节点名称*/private String nodeName;/*** 执行状态 1 未执行 2 已执行*/private String status;/*** 执行人 ID*/private String execUserId;/*** 执行人名称*/private String execUserName;/*** 执行时间*/private String execTime;/**** 描述*/private String description;}
http://www.hkea.cn/news/14460013/

相关文章:

  • 如何使用wordpress制作网站微信红包封面分销平台
  • 188网站开发国内vps做网站要备案吗
  • 成都筑巢网站建设wordpress语言更换
  • 重庆装修公司排行榜一览表seo织梦网站建设步骤
  • 海口建站模板系统中国建设监理协会化工监理协会网站
  • 苏州吴江做网站公司汕头网络推广教程
  • 阿里巴巴网站优化怎么做简述网站开发主要步骤
  • 盘锦做网站谁家好做视频网站视频用什么插件
  • 石家庄网站建设云图网络商城推广营销
  • 江西建设银行分行网站安卓系统开发平台
  • 网站用什么字体wordpress忘记密码
  • Discuz网站制作教程品牌建设和品牌打造对企业的意义
  • 个人做游戏网站娄底网站建设报价
  • 做网站每年包多少流量免费浏览器
  • 网站html地图制作免费模板简历网站
  • 咸阳建设局网站做网站必须哪几个软件
  • 网站手机版开发搭建网站赚钱
  • 泉州网站建设费用宁波企业做网站
  • 公司网站建设与维护方案做冲压件加工有什么好网站
  • 心理咨询网站建设论文域名及密码登录域名管理网站
  • 泉州手机网站建设网站建设的广告语
  • 在线包装设计软件站长seo
  • 网站修改关键词蓝色网站风格
  • ppt超链接到网站怎么做wordpress文本框
  • 手机网站做分享到朋友圈网站规划与建设的案例分析
  • 网站挂到国外服务器地址什么语言做网站
  • 怎么做网站省钱关于网页制作的论文
  • 东莞哪里做网站广汉做网站
  • 网站名字设计logo在线查询
  • 动易网站开发wordpress发布文章慢