Source/UBCS-WEB/package-lock.json
ÎļþÒÑɾ³ý Source/UBCS-WEB/vue.config.js
@@ -26,18 +26,9 @@ proxy: { '/api': { //æ¬å°æå¡æ¥å£å°å // target: 'http://localhost:37000', // target: 'http://localhost:37000', // target: 'http://192.168.1.51:37000', target: 'http://192.168.1.46:37000', // target: 'http://dev.vci-tech.com:37000', // target: 'http://192.168.1.51:37000/', // target: 'http://192.168.1.104:37000', // target: 'http://192.168.1.63:37000', target: 'http://localhost:37000', //target: 'http://192.168.3.7:37000', // target: 'http://dev.vci-tech.com:37000', //target: 'http://192.168.1.51:37000/', // target:'http://192.168.1.104:37000', //target: 'http://dev.vci-tech.com:37000', //è¿ç¨æ¼ç¤ºæå¡å°å,å¯ç¨äºç´æ¥å¯å¨é¡¹ç® // target: 'https://saber.bladex.vip/api', ws: true, Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/business/service/impl/FlowBusinessServiceImpl.java
@@ -264,7 +264,6 @@ variables = Kv.create(); } variables.put(ProcessConstant.PASS_KEY, flow.isPass()); variables.put("yn","y"); // å®æä»»å¡ taskService.complete(taskId, variables); return true; Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowModelController.java
@@ -69,7 +69,6 @@ .select("id,model_key modelKey,name,description,version,created,last_updated lastUpdated") .orderByDesc("last_updated")); flowEngineService.getNodeByFlowableKey("process_t"); return R.data(pages); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowProcessTSController.java
@@ -2,8 +2,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.flow.engine.service.FlowEngineService; @@ -81,7 +80,7 @@ * æµç¨é¶æ®µï¼è¿ä¸ªæµç¨çå个èç¹ */ @GetMapping("/sslist") public R<List<Map<String,String>>> sslist(@RequestParam String modelKey) { public R<List<FlowTaskDTO>> sslist(@RequestParam String modelKey) { return R.data(flowEngineService.getNodeByFlowableKey(modelKey)); } @@ -105,7 +104,7 @@ * @return */ @PostMapping("sasou") public R<ProcessTemplate> stageAttributeSaveOrUpdate(@RequestBody FlowTaskUserC flowTaskUserC) { public R<ProcessTemplate> stageAttributeSaveOrUpdate(@RequestBody FlowTaskDTO flowTaskUserC) { processStageAttrService.saveOrUpdateUser(flowTaskUserC); return R.success("ä¿åæå"); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowTaskUserController.java
@@ -1,14 +1,11 @@ package com.vci.ubcs.flow.engine.controller; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; import org.springblade.core.tool.api.R; import org.springframework.web.bind.annotation.*; import java.util.List; /** @@ -40,7 +37,7 @@ * @return */ @PostMapping("su") public R<String> saveUser(@RequestBody FlowTaskUserC flowTaskUserC) { public R<String> saveUser(@RequestBody FlowTaskDTO flowTaskUserC) { taskUserService.saveOrUpdateUser(flowTaskUserC); return R.success("ä¿åæå"); } @@ -51,7 +48,7 @@ * @return */ @PostMapping("du") public R<String> deleteUser(@RequestBody FlowTaskUserC flowTaskUserC) { public R<String> deleteUser(@RequestBody FlowTaskDTO flowTaskUserC) { taskUserService.deleteUser(flowTaskUserC.getName()); return R.success("å 餿å"); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/VCIFlowController.java
@@ -1,8 +1,7 @@ package com.vci.ubcs.flow.engine.controller; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.service.VICFlowService; import lombok.AllArgsConstructor; import org.springblade.core.tenant.annotation.NonDS; @@ -10,6 +9,8 @@ import org.springframework.web.bind.annotation.*; import java.util.List; import static com.vci.ubcs.flow.engine.service.impl.VCIFlowserviceImpl.NODE_NEXT; /** @@ -30,15 +31,15 @@ * @return */ @PostMapping("start") public R<BladeFlow> list(@RequestBody FlowTaskUserC flowTaskUserC) { public R<BladeFlow> list(@RequestBody FlowTaskDTO flowTaskUserC) { return vicFlowService.startProcess(flowTaskUserC); } /** * æµç¨é¢æµ * æµç¨é¢æµ,æµç¨ä»»å¡æé® */ @PostMapping("a") public R<BladeFlow> a(@RequestBody FlowTaskUserC flowTaskUserC) { return vicFlowService.startProcess(flowTaskUserC); @PostMapping("next") public R<FlowTaskDTO> next(@RequestBody FlowTaskDTO flowTaskUserC) { return R.data(vicFlowService.nextFlowNode(NODE_NEXT,flowTaskUserC.getProcessInstanceId())); } } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskDTO.java
ÎļþÃû´Ó Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/entity/FlowTaskUserC.java ÐÞ¸Ä @@ -20,6 +20,7 @@ import java.io.Serializable; import java.util.List; import java.util.Map; /** * æµç¨èç¹å®¡æ ¸äººæ¶è @@ -27,12 +28,13 @@ * @author wang1 */ @Data public class FlowTaskUserC implements Serializable { public class FlowTaskDTO implements Serializable { private static final long serialVersionUID = 1L; private String createdBy; private String name;//ä¿åçè¿ä¸ªæ¶èåç§° private String processInstanceId;//æµç¨å®ä¾id private String modelKey; private String modelName; private String processName; @@ -46,5 +48,18 @@ private List<ProcessStageAttr> processStageAttr;//æµç¨é¶æ®µä¿åç屿§ private List<String> ids;//æµç¨åèµ·ä¸ä¼ éè¿æ¥çæ°æ®id //æµç¨é©³åè·¯å¾ private String toName;//åæã驳å private String toTaskName;//åæã驳åå°çä¸ä¸ä¸ªèç¹ private String toTaskId;//åæã驳åå°çä¸ä¸ä¸ªèç¹ private String condition;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶ private String conditionKey;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶key private String conditionValue;//åæã驳åå°çä¸ä¸ä¸ªèç¹çæ¡ä»¶value //æµç¨ä¸åæ° private List<FlowTaskDTO> toTasks;//æµç¨ä¸ä¸æ¥æé® private Map<String, Object> vars;//æµç¨åæ° } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowEngineService.java
@@ -22,8 +22,8 @@ import com.vci.ubcs.flow.engine.entity.FlowExecution; import com.vci.ubcs.flow.engine.entity.FlowModel; import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.Document; import javax.servlet.http.HttpServletResponse; import java.util.List; @@ -171,8 +171,14 @@ * @param key * @return */ List<Map<String,String>> getNodeByFlowableKey(String key); List<FlowTaskDTO> getNodeByFlowableKey(String key); String getTaskIdString(); /** * æ ¹æ®æµç¨æ¨¡åkeyè·åXMLä¸èç¹é ç½®çå¤ç人,读åèç¹åç§°åé ç½®çå¼ï¼æµç¨æ¨¡åkeyå·²ç»éå¶ä¸éå¤ * * @param key * @return */ FlowTaskDTO getNodeByFlowableKey(String key, String taskId); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/FlowTaskUserService.java
@@ -16,15 +16,10 @@ */ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.*; import org.springframework.web.multipart.MultipartFile; import javax.servlet.http.HttpServletResponse; import java.util.List; import java.util.Map; /** * FlowService @@ -45,7 +40,7 @@ * @param flowTaskUserC * @return */ void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); void saveOrUpdateUser(FlowTaskDTO flowTaskUserC); /** * å 餿µç¨å®¡æ ¸äººå Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessStageAttrService.java
@@ -17,10 +17,8 @@ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import java.util.List; /** * æµç¨é¶æ®µæå¡ @@ -34,6 +32,6 @@ * @param flowTaskUserC * @return */ void saveOrUpdateUser(FlowTaskUserC flowTaskUserC); void saveOrUpdateUser(FlowTaskDTO flowTaskUserC); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/ProcessTemplateService.java
@@ -17,10 +17,7 @@ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; import java.util.List; import java.util.Map; Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/VICFlowService.java
@@ -16,10 +16,8 @@ */ package com.vci.ubcs.flow.engine.service; import com.baomidou.mybatisplus.extension.service.IService; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import org.springblade.core.tool.api.R; /** @@ -33,5 +31,14 @@ * å¯å¨æµç¨ * @return */ R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC); R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC); /** * æµç¨å®¡æ¹ä¸ä¸ä¸æ¥æé® * @param node * @param processInstanceId * @return */ FlowTaskDTO nextFlowNode(String node, String processInstanceId); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowEngineServiceImpl.java
@@ -16,8 +16,6 @@ */ package com.vci.ubcs.flow.engine.service.impl; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; @@ -29,6 +27,7 @@ import com.vci.ubcs.flow.engine.entity.FlowExecution; import com.vci.ubcs.flow.engine.entity.FlowModel; import com.vci.ubcs.flow.engine.entity.FlowProcess; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.mapper.FlowMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.utils.FlowCache; @@ -37,7 +36,6 @@ import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.*; @@ -51,7 +49,6 @@ import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.DeploymentQuery; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.runtime.ProcessInstance; @@ -67,17 +64,12 @@ import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.*; import org.xml.sax.InputSource; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.util.*; /** @@ -93,8 +85,6 @@ private static final String USR_TASK = "userTask"; private static final String IMAGE_NAME = "image"; private static final String XML_NAME = "xml"; private static final String TASKID = "taskId"; private static final String TASKNAME = "taskName"; private static final Integer INT_1024 = 1024; private static final BpmnJsonConverter BPMN_JSON_CONVERTER = new BpmnJsonConverter(); private static final BpmnXMLConverter BPMN_XML_CONVERTER = new BpmnXMLConverter(); @@ -500,29 +490,43 @@ * @return */ @Override public List<Map<String,String>> getNodeByFlowableKey(String key){ public List<FlowTaskDTO> getNodeByFlowableKey(String key){ String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); Process process = bpmnModel.getProcesses().get(0);//åªæä¸ä¸ª List<Map<String,String>> ll = new ArrayList<>(); List<FlowTaskDTO> ll = new ArrayList<>(); if (CollectionUtils.isNotEmpty(process.getFlowElements())) { for (FlowElement flowElement : process.getFlowElements()) { if (flowElement instanceof UserTask) { Map<String,String> mi = new HashMap<>(); mi.put(TASKID,flowElement.getId()); mi.put(TASKNAME,flowElement.getName()); ll.add(mi); FlowTaskDTO flowTaskUserC = new FlowTaskDTO(); flowTaskUserC.setTaskId(flowElement.getId()); flowTaskUserC.setTaskName(flowElement.getName()); ll.add(flowTaskUserC); } } } return ll; } @Override public String getTaskIdString(){ return TASKID; public FlowTaskDTO getNodeByFlowableKey(String key, String taskId){ String processDefinitionId = repositoryService.createProcessDefinitionQuery().latestVersion().processDefinitionKey(key).singleResult().getId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); Process process = bpmnModel.getProcesses().get(0);//åªæä¸ä¸ª FlowTaskDTO flowTaskUserC = new FlowTaskDTO(); if (CollectionUtils.isNotEmpty(process.getFlowElements())) { for (FlowElement flowElement : process.getFlowElements()) { if (flowElement instanceof UserTask&&taskId.equals(flowElement.getId())) { flowTaskUserC.setTaskId(flowElement.getId()); flowTaskUserC.setTaskName(flowElement.getName()); break; } } } return flowTaskUserC; } /** * æ¯å¦å·²å®ç» * Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/FlowTaskUserServiceImpl.java
@@ -17,68 +17,19 @@ package com.vci.ubcs.flow.engine.service.impl; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.node.ObjectNode; import com.vci.ubcs.flow.core.entity.BladeFlow; import com.vci.ubcs.flow.core.enums.FlowModeEnum; import com.vci.ubcs.flow.core.utils.TaskUtil; import com.vci.ubcs.flow.engine.constant.FlowEngineConstant; import com.vci.ubcs.flow.engine.entity.*; import com.vci.ubcs.flow.engine.mapper.FlowMapper; import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.utils.FlowCache; import com.vci.ubcs.system.user.cache.UserCache; import com.vci.ubcs.system.user.entity.User; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.flowable.bpmn.converter.BpmnXMLConverter; import org.flowable.bpmn.model.BpmnModel; import org.flowable.bpmn.model.Process; import org.flowable.common.engine.impl.util.IoUtil; import org.flowable.common.engine.impl.util.io.StringStreamSource; import org.flowable.editor.language.json.converter.BpmnJsonConverter; import org.flowable.engine.*; import org.flowable.engine.history.HistoricActivityInstance; import org.flowable.engine.history.HistoricProcessInstance; import org.flowable.engine.impl.persistence.entity.ExecutionEntityImpl; import org.flowable.engine.impl.persistence.entity.ProcessDefinitionEntityImpl; import org.flowable.engine.repository.Deployment; import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.repository.ProcessDefinitionQuery; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.engine.runtime.ProcessInstanceQuery; import org.flowable.engine.task.Comment; import org.flowable.image.ProcessDiagramGenerator; import org.springblade.core.launch.constant.FlowConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.utils.DateUtil; import org.springblade.core.tool.utils.FileUtil; import org.springblade.core.tool.utils.Func; import org.springblade.core.tool.utils.StringUtil; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.web.multipart.MultipartFile; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.NodeList; import org.xml.sax.InputSource; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.io.StringReader; import java.util.*; /** @@ -120,7 +71,7 @@ QueryWrapper<FlowTaskUser> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("CREATED_BY", TaskUtil.getTaskUser()); List<FlowTaskUser> flowTaskUsers = baseMapper.selectList(queryWrapper); List<FlowTaskUserC> cl = new ArrayList<>(); List<FlowTaskDTO> cl = new ArrayList<>(); Map<String,List<FlowTaskUser>> nameMap = new HashMap<>(); for(FlowTaskUser flowTaskUser:flowTaskUsers){ @@ -136,7 +87,7 @@ } for (String name:nameMap.keySet()){ FlowTaskUserC flowTaskUserCR = new FlowTaskUserC(); FlowTaskDTO flowTaskUserCR = new FlowTaskDTO(); flowTaskUserCR.setName(name);//æ¶èåç§° flowTaskUserCR.setModelKey(nameMap.get(name).get(0).getModelKey()); flowTaskUserCR.setModelName(nameMap.get(name).get(0).getModelName()); @@ -146,13 +97,13 @@ kv.put("collect",cl); //æ°æ®èç¹æ°æ® List<Map<String,String>> tl = flowEngineService.getNodeByFlowableKey(processTemplate.getModelKey()); List<FlowTaskDTO> tl = flowEngineService.getNodeByFlowableKey(processTemplate.getModelKey()); kv.put("user",tl); return kv; } @Override public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ public void saveOrUpdateUser(FlowTaskDTO flowTaskUserC){ List<FlowTaskUser> flowTaskUsers = flowTaskUserC.getFlowTaskUsers(); String name = flowTaskUserC.getName();//æ¶èåç§° Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessStageAttrServiceImpl.java
@@ -19,7 +19,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.FlowTaskDTO; import com.vci.ubcs.flow.engine.entity.ProcessStageAttr; import com.vci.ubcs.flow.engine.mapper.ProcessStageAttrMapper; import com.vci.ubcs.flow.engine.service.ProcessStageAttrService; @@ -49,7 +49,7 @@ * @return */ @Transactional public void saveOrUpdateUser(FlowTaskUserC flowTaskUserC){ public void saveOrUpdateUser(FlowTaskDTO flowTaskUserC){ List<ProcessStageAttr> processStageAttrs = flowTaskUserC.getProcessStageAttr(); String modelKey = flowTaskUserC.getModelKey(); String templateId = flowTaskUserC.getTemplateId(); Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/ProcessTemplateServiceImpl.java
@@ -19,21 +19,14 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.vci.ubcs.flow.core.utils.TaskUtil; import com.vci.ubcs.flow.engine.entity.FlowTaskUser; import com.vci.ubcs.flow.engine.entity.FlowTaskUserC; import com.vci.ubcs.flow.engine.entity.ProcessTemplate; import com.vci.ubcs.flow.engine.mapper.FlowTaskUserMapper; import com.vci.ubcs.flow.engine.mapper.ProcessTemplateMapper; import com.vci.ubcs.flow.engine.service.FlowEngineService; import com.vci.ubcs.flow.engine.service.FlowTaskUserService; import com.vci.ubcs.flow.engine.service.ProcessTemplateService; import com.vci.ubcs.starter.web.enumpck.ProcessTemplateTypeEnum; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springblade.core.launch.constant.FlowConstant; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.mp.support.Condition; import org.springframework.stereotype.Service; import java.util.*; @@ -58,6 +51,7 @@ //æ ¡éªè¿ä¸ªæ¨¡æ¿ä¸ï¼ä¸ç±»æé®åªè½æä¸ä¸ªæ¨¡æ¿ QueryWrapper<ProcessTemplate> queryWrapper = new QueryWrapper<>(); queryWrapper.eq("button_type_key", processTemplate.getButtonTypeKey()); queryWrapper.eq("template_id", processTemplate.getTemplateId()); if(StringUtils.isNotEmpty(processTemplate.getId())) {//ä¿®æ¹çæ¶å,idä¸ºç©ºå°±æ¯æ°å¢ queryWrapper.ne("id", processTemplate.getId()); } Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/service/impl/VCIFlowserviceImpl.java
@@ -31,7 +31,6 @@ import org.flowable.engine.repository.ProcessDefinition; import org.flowable.engine.runtime.ProcessInstance; import org.flowable.task.api.Task; import org.springblade.core.log.exception.ServiceException; import org.springblade.core.secure.utils.AuthUtil; import org.springblade.core.tool.api.R; import org.springblade.core.tool.support.Kv; @@ -57,7 +56,7 @@ private final HistoryService historyService; @Override public R<BladeFlow> startProcess(FlowTaskUserC flowTaskUserC){ public R<BladeFlow> startProcess(FlowTaskDTO flowTaskUserC){ String modelKey = flowTaskUserC.getModelKey(); String templateId = flowTaskUserC.getTemplateId(); @@ -81,16 +80,16 @@ } //对æ¯é ç½®çå®¡æ ¸äººååæµç¨ä¸èç¹æ¯å¦ä¸è´ï¼å¯è½å卿µç¨èç¹åæ´äºï¼å¤äºæè å°äºèç¹ï¼ä½æ¯é ç½®å®¡æ ¸äººåçèç¹æ²¡æå List<Map<String,String>> processTasks = flowEngineService.getNodeByFlowableKey(modelKey); for (Map<String,String> mi:processTasks){ String taskId = mi.get(flowEngineService.getTaskIdString()); if(!taskIdSet.contains(taskId)){ throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); } } if(taskIdSet.size()!=processTasks.size()){ throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); } // List<Map<String,String>> processTasks = flowEngineService.getNodeByFlowableKey(modelKey); // for (Map<String,String> mi:processTasks){ // String taskId = mi.get(flowEngineService.getTaskIdString()); // if(!taskIdSet.contains(taskId)){ // throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); // } // } // if(taskIdSet.size()!=processTasks.size()){ // throw new ServiceException("æµç¨å·²éæ°é¨ç½²ï¼èç¹å·²æ¹åï¼è¯·è®¾ç½®å®¡æ ¸äººåï¼"); // } //æµç¨ä¸æä»¶ãåéç //do.. @@ -100,46 +99,78 @@ BladeFlow flow = new BladeFlow(); flow.setProcessInstanceId(processInstance.getId()); nextFlowNode("next","039ac1d8-0c1e-11ee-bebb-5c3a4570456d"); return R.data(flow); } public static String NODE_NOW = "now"; public static String NODE_NEXT = "next"; /** * è·åä»»å¡èç¹ * * @param node æ¥è¯¢èç¹éæ© * @param processInstanceId æµç¨å®ä¾id */ public void nextFlowNode(String node, String processInstanceId) { public FlowTaskDTO nextFlowNode(String node, String processInstanceId) { FlowTaskDTO flowTaskDTO = new FlowTaskDTO(); List<FlowTaskDTO> taskList = new ArrayList<>();//èç¹æé® flowTaskDTO.setToTasks(taskList); Task task = taskService.createTaskQuery().processInstanceId(processInstanceId).active().singleResult(); ExecutionEntity ee = (ExecutionEntity) runtimeService.createExecutionQuery() .executionId(task.getExecutionId()).singleResult(); // å½å审æ¹èç¹ String crruentActivityId = ee.getActivityId(); BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId()); FlowNode flowNode = (FlowNode) bpmnModel.getFlowElement(crruentActivityId); //è¿ä¸ªå®ä¾çææèç¹ ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processInstanceId).singleResult(); Map<String, Object> processVariables = processInstance.getProcessVariables();//ææåæ° flowTaskDTO.setVars(processVariables); String modelKey = processInstance.getProcessDefinitionKey(); List<FlowTaskDTO> mis = flowEngineService.getNodeByFlowableKey(modelKey); // è¾åºè¿çº¿ List<SequenceFlow> outFlows = flowNode.getOutgoingFlows(); for (SequenceFlow sequenceFlow : outFlows) { //å½å审æ¹èç¹ if ("now".equals(node)) { if (NODE_NOW.equals(node)) { FlowElement sourceFlowElement = sequenceFlow.getSourceFlowElement(); System.out.println("å½åèç¹: id=" + sourceFlowElement.getId() + ",name=" + sourceFlowElement.getName()); } else if ("next".equals(node)) { } else if (NODE_NEXT.equals(node)) { // ä¸ä¸ä¸ªå®¡æ¹èç¹ FlowElement targetFlow = sequenceFlow.getTargetFlowElement(); if (targetFlow instanceof UserTask) { System.out.println("ä¸ä¸èç¹: id=" + targetFlow.getId() + ",name=" + targetFlow.getName()); } // 妿ä¸ä¸ªå®¡æ¹èç¹ä¸ºç»æèç¹ if (targetFlow instanceof EndEvent) { System.out.println("ä¸ä¸èç¹ä¸ºç»æèç¹ï¼id=" + targetFlow.getId() + ",name=" + targetFlow.getName()); // 妿ä¸ä¸ªå®¡æ¹èç¹ä¸ºæä»ç½å ³ if (targetFlow instanceof ExclusiveGateway) { ExclusiveGateway exclusiveGateway = (ExclusiveGateway) targetFlow; List<SequenceFlow> exclusiveGatewayOutgoingFlows = exclusiveGateway.getOutgoingFlows(); for (SequenceFlow nexti:exclusiveGatewayOutgoingFlows){ String conditionExpression = nexti.getConditionExpression();//condition String taskId = nexti.getTargetRef();//taskId String name = nexti.getName();//toName,驳åãåæ for (FlowTaskDTO flowTaskUserCi:mis){ if(taskId.equals(flowTaskUserCi.getTaskId())){ flowTaskUserCi.setCondition(conditionExpression); if(conditionExpression.split("=").length>1) { flowTaskUserCi.setConditionKey(conditionExpression.split("=")[0]); flowTaskUserCi.setConditionValue(conditionExpression.split("=")[1]); } flowTaskUserCi.setToName(name); flowTaskUserCi.setToTaskId(taskId); flowTaskUserCi.setToTaskName(flowTaskUserCi.getTaskName()); taskList.add(flowTaskUserCi); } } } } } } return flowTaskDTO; } } Source/UBCS/ubcs-service-api/ubcs-util-api/src/main/java/com/vci/ubcs/starter/web/enumpck/ProcessTemplateTypeEnum.java
@@ -25,7 +25,12 @@ /** * å¯ç¨ */ DISABLE("DISABLE","åç¨"); DISABLE("DISABLE","åç¨"), /** * åæ¶ */ ROLLBACK("ROLLBACK","åæ¶"); /** * æä¸¾çå¼