失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > springboot+vue 审批工作流集成flowable(springboot实现工作流)

springboot+vue 审批工作流集成flowable(springboot实现工作流)

时间:2023-05-09 13:40:39

相关推荐

springboot+vue 审批工作流集成flowable(springboot实现工作流)

仿钉钉审批流程图在线绘制、业务申请、审批、流转、委托、催办,springboot集成工作流基础框架

前言

目前市场上有很多开源平台没有整合工作流,即使有,也是价格不菲的商业版,这次推荐的是在一个基础开发平台系统基础功能(用户管理,部门管理…)上整合了flowable工作流,你可以直接用来开发ERP,OA,CRM等企业级应用,不用再担心如何再去花大量的时间集成工作流进来,目前表单支持自定义拖拽,具体功能下面我们来探索吧。

一、项目形式

springboot+vue+flowable 集成了仿钉钉拖拽设计流程编辑器,快速开发平台,可插拔工作流服务。

二、项目介绍

本项目拥有用户管理,部门管理,岗位管理,系统监管,IM聊天,自定义问卷调查,网络拓扑图设计,业务审批等功能。功能太强大,只能大致介绍,所见即所得,体验一下吧。

项目预览

预览地址:

本次我们主要来了解项目中的工作流部分模块

三、工作流

/*** 查询可退回的节点* @param taskId* @return*/private List<QueryWorkFlowToBackNodeRes> getWorkFlowToBackNodeRes(String taskId){// 初始化返回结果列表List<QueryWorkFlowToBackNodeRes> result = new ArrayList<>();if (StringUtils.isBlank(taskId)){return result;}Task task = taskService.createTaskQuery().taskId(taskId).singleResult();if (task == null){return result;}// 任务定义key 等于 当前任务节点idString taskDefinitionKey = task.getTaskDefinitionKey();BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());Process mainProcess = bpmnModel.getMainProcess();// 当前节点FlowNode currentFlowElement = (FlowNode) mainProcess.getFlowElement(taskDefinitionKey, true);// 查询历史节点实例List<HistoricActivityInstance> activityInstanceList = historyService.createHistoricActivityInstanceQuery().processInstanceId(task.getProcessInstanceId()).finished().orderByHistoricActivityInstanceEndTime().asc().list();List<String> activityIdList = activityInstanceList.stream().filter(activityInstance ->BpmnXMLConstants.ELEMENT_TASK_USER.equals(activityInstance.getActivityType()) || BpmnXMLConstants.ELEMENT_EVENT_START.equals(activityInstance.getActivityType())).map(HistoricActivityInstance::getActivityId).filter(activityId -> !taskDefinitionKey.equals(activityId)).distinct().collect(Collectors.toList());for (String activityId : activityIdList) {// 回退到主流程的节点FlowNode toBackFlowElement = (FlowNode) mainProcess.getFlowElement(activityId, true);// 判断 【工具类判断是否可以从源节点 到 目标节点】Set<String> set = new HashSet<>();if (toBackFlowElement != null && ExecutionGraphUtil.isReachable(mainProcess,toBackFlowElement,currentFlowElement, set)) {QueryWorkFlowToBackNodeRes workFlowNodeDTO = new QueryWorkFlowToBackNodeRes();workFlowNodeDTO.setTaskNodeId(activityId);workFlowNodeDTO.setTaskNodeName(toBackFlowElement.getName());result.add(workFlowNodeDTO);}}return result;}

如果觉得《springboot+vue 审批工作流集成flowable(springboot实现工作流)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。