diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfDefinitionController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfDefinitionController.java deleted file mode 100644 index 43844784..00000000 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfDefinitionController.java +++ /dev/null @@ -1,149 +0,0 @@ -package com.ruoyi.web.controller.workflow; - -import cn.dev33.satoken.annotation.SaCheckLogin; -import cn.dev33.satoken.annotation.SaCheckPermission; -import com.ruoyi.common.core.controller.BaseController; -import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.domain.R; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.workflow.domain.bo.WfDesignerBo; -import com.ruoyi.workflow.domain.vo.WfDefinitionVo; -import com.ruoyi.workflow.service.IWfDefinitionService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.multipart.MultipartFile; - -import javax.imageio.ImageIO; -import javax.servlet.http.HttpServletResponse; -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.nio.charset.StandardCharsets; - -/** - * 工作流程定义 - * - * @author KonBAI - * @date 2022-01-17 - */ -@Slf4j -@RequiredArgsConstructor -@RestController -@RequestMapping("/workflow/definition") -@Deprecated -public class WfDefinitionController extends BaseController { - - private final IWfDefinitionService flowDefinitionService; - - /** - * 流程定义列表 - * - * @param pageQuery 分页参数 - */ - @GetMapping(value = "/list") - @SaCheckPermission("workflow:definition:list") - public TableDataInfo list(PageQuery pageQuery) { - return flowDefinitionService.list(pageQuery); - } - - /** - * 列出指定流程的发布版本列表 - * - * @param processKey 流程定义Key - * @return - */ - @GetMapping(value = "/publishList") - @SaCheckPermission("workflow:definition:list") - public TableDataInfo publishList(@RequestParam String processKey, PageQuery pageQuery) { - return flowDefinitionService.publishList(processKey, pageQuery); - } - - /** - * 导入流程文件 - */ - @SaCheckPermission("workflow:definition:designer") - @PostMapping("/import") - public R importFile(@RequestParam(required = false) String name, - @RequestParam(required = false) String category, - MultipartFile file) { - try (InputStream in = file.getInputStream()) { - flowDefinitionService.importFile(name, category, in); - } catch (Exception e) { - log.error("导入失败:", e); - return R.fail(e.getMessage()); - } - - return R.ok("导入成功"); - } - - /** - * 读取xml文件 - */ - @SaCheckLogin - @GetMapping("/readXml/{definitionId}") - public R readXml(@PathVariable(value = "definitionId") String definitionId) { - try { - return R.ok(null, flowDefinitionService.readXml(definitionId)); - } catch (Exception e) { - return R.fail("加载xml文件异常"); - } - - } - - /** - * 读取图片文件 - */ - @SaCheckPermission("workflow:definition:view") - @GetMapping("/readImage/{definitionId}") - public void readImage(@PathVariable(value = "definitionId") String definitionId, - HttpServletResponse response) { - try (OutputStream os = response.getOutputStream()) { - BufferedImage image = ImageIO.read(flowDefinitionService.readImage(definitionId)); - response.setContentType("image/png"); - if (image != null) { - ImageIO.write(image, "png", os); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * 保存流程设计器内的xml文件 - */ - @SaCheckPermission("workflow:definition:designer") - @PostMapping("/save") - public R save(@RequestBody WfDesignerBo bo) { - try (InputStream in = new ByteArrayInputStream(bo.getXml().getBytes(StandardCharsets.UTF_8))) { - flowDefinitionService.importFile(bo.getName(), bo.getCategory(), in); - } catch (Exception e) { - log.error("导入失败:", e); - return R.ok(e.getMessage()); - } - - return R.ok("导入成功"); - } - - /** - * 激活或挂起流程定义 - */ - @SaCheckPermission("workflow:definition:update") - @PutMapping(value = "/updateState") - public R updateState(@RequestParam Boolean suspended, @RequestParam String definitionId) { - flowDefinitionService.updateState(suspended, definitionId); - return R.ok(); - } - - /** - * 删除流程 - */ - @SaCheckPermission("workflow:definition:remove") - @DeleteMapping(value = "/delete") - public R delete(@RequestParam String deployId) { - flowDefinitionService.delete(deployId); - return R.ok(); - } - -} diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfDefinitionService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfDefinitionService.java deleted file mode 100644 index efd98257..00000000 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfDefinitionService.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.ruoyi.workflow.service; - -import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.workflow.domain.vo.WfDefinitionVo; - -import java.io.IOException; -import java.io.InputStream; - -/** - * @author KonBAI - * @createTime 2022/3/10 00:12 - */ -@Deprecated -public interface IWfDefinitionService { - - boolean exist(String processDefinitionKey); - - - /** - * 流程定义列表 - * - * @param pageQuery 分页参数 - * @return 流程定义分页列表数据 - */ - TableDataInfo list(PageQuery pageQuery); - - /** - * - * @param processKey - * @return - */ - TableDataInfo publishList(String processKey, PageQuery pageQuery); - - /** - * 导入流程文件 - * - * @param name - * @param category - * @param in - */ - void importFile(String name, String category, InputStream in); - - /** - * 读取xml - * @param definitionId 流程定义ID - * @return - */ - String readXml(String definitionId) throws IOException; - - - /** - * 激活或挂起流程定义 - * - * @param suspended 状态 - * @param definitionId 流程定义ID - */ - void updateState(Boolean suspended, String definitionId); - - - /** - * 删除流程定义 - * - * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值 - */ - void delete(String deployId); - - - /** - * 读取图片文件 - * @param definitionId 流程定义ID - * @return - */ - InputStream readImage(String definitionId); -} diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfDefinitionServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfDefinitionServiceImpl.java deleted file mode 100644 index ffc20290..00000000 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfDefinitionServiceImpl.java +++ /dev/null @@ -1,226 +0,0 @@ -package com.ruoyi.workflow.service.impl; - -import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.ruoyi.common.core.domain.PageQuery; -import com.ruoyi.common.core.page.TableDataInfo; -import com.ruoyi.flowable.factory.FlowServiceFactory; -import com.ruoyi.workflow.domain.vo.WfDefinitionVo; -import com.ruoyi.workflow.domain.vo.WfFormVo; -import com.ruoyi.workflow.service.IWfDefinitionService; -import com.ruoyi.workflow.service.IWfDeployFormService; -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.io.IOUtils; -import org.flowable.bpmn.model.BpmnModel; -import org.flowable.engine.repository.Deployment; -import org.flowable.engine.repository.DeploymentBuilder; -import org.flowable.engine.repository.ProcessDefinition; -import org.flowable.engine.repository.ProcessDefinitionQuery; -import org.flowable.image.impl.DefaultProcessDiagramGenerator; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.IOException; -import java.io.InputStream; -import java.nio.charset.StandardCharsets; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Objects; -import java.util.stream.Collectors; - -/** - * 流程定义 - * - * @author KonBAI - * @date 2022-01-17 - */ -@RequiredArgsConstructor -@Service -@Slf4j -public class WfDefinitionServiceImpl extends FlowServiceFactory implements IWfDefinitionService { - - private final IWfDeployFormService deployFormService; - - private static final String BPMN_FILE_SUFFIX = ".bpmn"; - - @Override - public boolean exist(String processDefinitionKey) { - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .processDefinitionKey(processDefinitionKey); - long count = processDefinitionQuery.count(); - return count > 0; - } - - - /** - * 流程定义列表 - * - * @param pageQuery 分页参数 - * @return 流程定义分页列表数据 - */ - @Override - public TableDataInfo list(PageQuery pageQuery) { - Page page = new Page<>(); - // 流程定义列表数据查询 - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .latestVersion() - .orderByProcessDefinitionKey().asc(); - long pageTotal = processDefinitionQuery.count(); - if (pageTotal <= 0) { - return TableDataInfo.build(); - } - int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); - List definitionList = processDefinitionQuery.listPage(offset, pageQuery.getPageSize()); - - List definitionVoList = new ArrayList<>(); - for (ProcessDefinition processDefinition : definitionList) { - String deploymentId = processDefinition.getDeploymentId(); - Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult(); - WfDefinitionVo vo = new WfDefinitionVo(); - vo.setDefinitionId(processDefinition.getId()); - vo.setProcessKey(processDefinition.getKey()); - vo.setProcessName(processDefinition.getName()); - vo.setVersion(processDefinition.getVersion()); - vo.setCategory(processDefinition.getCategory()); - vo.setDeploymentId(processDefinition.getDeploymentId()); - vo.setSuspended(processDefinition.isSuspended()); - WfFormVo formVo = deployFormService.selectDeployFormByDeployId(deploymentId); - if (Objects.nonNull(formVo)) { - vo.setFormId(formVo.getFormId()); - vo.setFormName(formVo.getFormName()); - } - // 流程定义时间 - vo.setCategory(deployment.getCategory()); - vo.setDeploymentTime(deployment.getDeploymentTime()); - definitionVoList.add(vo); - } - page.setRecords(definitionVoList); - page.setTotal(pageTotal); - return TableDataInfo.build(page); - } - - @Override - public TableDataInfo publishList(String processKey, PageQuery pageQuery) { - Page page = new Page<>(); - // 创建查询条件 - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery() - .processDefinitionKey(processKey) - .orderByProcessDefinitionVersion().asc(); - long pageTotal = processDefinitionQuery.count(); - if (pageTotal <= 0) { - return TableDataInfo.build(); - } - // 根据查询条件,查询所有版本 - int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1); - List processDefinitionList = processDefinitionQuery - .listPage(offset, pageQuery.getPageSize()); - List definitionVoList = processDefinitionList.stream().map(item -> { - WfDefinitionVo vo = new WfDefinitionVo(); - vo.setDefinitionId(item.getId()); - vo.setProcessKey(item.getKey()); - vo.setProcessName(item.getName()); - vo.setVersion(item.getVersion()); - vo.setCategory(item.getCategory()); - vo.setDeploymentId(item.getDeploymentId()); - vo.setSuspended(item.isSuspended()); - // BeanUtil.copyProperties(item, vo); - return vo; - }).collect(Collectors.toList()); - page.setRecords(definitionVoList); - page.setTotal(pageTotal); - return TableDataInfo.build(page); - } - - - /** - * 导入流程文件 - * - * @param name - * @param category - * @param in - */ - @Override - @Transactional(rollbackFor = Exception.class) - public void importFile(String name, String category, InputStream in) { - String processName = name + BPMN_FILE_SUFFIX; - // 创建流程部署 - DeploymentBuilder deploymentBuilder = repositoryService.createDeployment() - .name(processName) - .key(name) - .category(category) - .addInputStream(processName, in); - // 部署 - deploymentBuilder.deploy(); - } - - /** - * 读取xml - * - * @param definitionId 流程定义ID - * @return - */ - @Override - public String readXml(String definitionId) throws IOException { - InputStream inputStream = repositoryService.getProcessModel(definitionId); - return IOUtils.toString(inputStream, StandardCharsets.UTF_8.name()); - } - - /** - * 读取xml - * - * @param definitionId 流程定义ID - * @return - */ - @Override - public InputStream readImage(String definitionId) { - //获得图片流 - DefaultProcessDiagramGenerator diagramGenerator = new DefaultProcessDiagramGenerator(); - BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId); - //输出为图片 - return diagramGenerator.generateDiagram( - bpmnModel, - "png", - Collections.emptyList(), - Collections.emptyList(), - "宋体", - "宋体", - "宋体", - null, - 1.0, - false); - - } - - - /** - * 激活或挂起流程定义 - * - * @param suspended 是否暂停状态 - * @param definitionId 流程定义ID - */ - @Override - public void updateState(Boolean suspended, String definitionId) { - if (!suspended) { - // 激活 - repositoryService.activateProcessDefinitionById(definitionId, true, null); - } else { - // 挂起 - repositoryService.suspendProcessDefinitionById(definitionId, true, null); - } - } - - - /** - * 删除流程定义 - * - * @param deployId 流程部署ID act_ge_bytearray 表中 deployment_id值 - */ - @Override - public void delete(String deployId) { - // true 允许级联删除 ,不设置会导致数据库外键关联异常 - repositoryService.deleteDeployment(deployId, true); - } - - -} diff --git a/ruoyi-ui/src/api/workflow/definition.js b/ruoyi-ui/src/api/workflow/definition.js deleted file mode 100644 index b6277f58..00000000 --- a/ruoyi-ui/src/api/workflow/definition.js +++ /dev/null @@ -1,96 +0,0 @@ -import request from '@/utils/request' - -// 查询流程定义列表 -export function listDefinition(query) { - return request({ - url: '/workflow/definition/list', - method: 'get', - params: query - }) -} - -// 查询指定流程发布的版本列表 -export function publishList(query) { - return request({ - url: '/workflow/definition/publishList', - method: 'get', - params: query - }) -} - - -// 部署流程实例 -export function definitionStart(procDefId,data) { - return request({ - url: '/workflow/definition/start/' + procDefId, - method: 'post', - data: data - }) -} - -// 获取流程变量 -export function getProcessVariables(taskId) { - return request({ - url: '/workflow/task/processVariables/' + taskId, - method: 'get' - }) -} - -// 激活/挂起流程 -export function updateState(params) { - return request({ - url: '/workflow/definition/updateState', - method: 'put', - params: params - }) -} - -// 读取xml文件 -export function readXml(definitionId) { - return request({ - url: '/workflow/definition/readXml/' + definitionId, - method: 'get' - }) -} -// 读取image文件 -export function readImage(deployId) { - return request({ - url: '/workflow/definition/readImage/' + deployId, - method: 'get' - }) -} - -// 读取image文件 -export function getFlowViewer(procInsId) { - return request({ - url: '/workflow/task/flowViewer/' + procInsId, - method: 'get' - }) -} - -// 读取xml文件 -export function saveXml(data) { - return request({ - url: '/workflow/definition/save', - method: 'post', - data: data - }) -} - -// 删除流程定义 -export function delDeployment(query) { - return request({ - url: '/workflow/definition/delete/', - method: 'delete', - params: query - }) -} - -// 导出流程定义 -export function exportDeployment(query) { - return request({ - url: '/system/deployment/export', - method: 'get', - params: query - }) -} diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 47c0dc09..20431a4e 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -74,19 +74,6 @@ export const constantRoutes = [ } ] }, - { - path: '/definition', - component: Layout, - hidden: true, - children: [ - { - path: 'designer', - component: () => import('@/views/workflow/definition/designer'), - name: 'Designer', - meta: { title: '流程设计', icon: '' } - } - ] - }, { path: '/work', component: Layout, diff --git a/ruoyi-ui/src/views/workflow/definition/designer.vue b/ruoyi-ui/src/views/workflow/definition/designer.vue deleted file mode 100644 index 7c905d89..00000000 --- a/ruoyi-ui/src/views/workflow/definition/designer.vue +++ /dev/null @@ -1,192 +0,0 @@ - - - - - diff --git a/ruoyi-ui/src/views/workflow/definition/index.vue b/ruoyi-ui/src/views/workflow/definition/index.vue deleted file mode 100644 index 20110286..00000000 --- a/ruoyi-ui/src/views/workflow/definition/index.vue +++ /dev/null @@ -1,646 +0,0 @@ - - - diff --git a/ruoyi-ui/src/views/workflow/model/index.vue b/ruoyi-ui/src/views/workflow/model/index.vue index f1083f28..a7cdad6b 100644 --- a/ruoyi-ui/src/views/workflow/model/index.vue +++ b/ruoyi-ui/src/views/workflow/model/index.vue @@ -289,7 +289,6 @@