mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	1、集成Activiti7版本,yudao-dependencies模块新增activiti依赖包;
2、流程文件上传部署API后端逻辑实现;
This commit is contained in:
		@@ -0,0 +1,18 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.adminserver.modules.activiti.service.process;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 流程基础管理
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author ZJQ
 | 
				
			||||||
 | 
					 * @date 2021/9/5 21:00
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public interface ProcessService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 上传流程文件,进行流程部署
 | 
				
			||||||
 | 
					     * @param multipartFile 上传文件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    void deployProcess(MultipartFile multipartFile);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1,85 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.adminserver.modules.activiti.service.process.impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.yudao.adminserver.modules.activiti.service.process.ProcessService;
 | 
				
			||||||
 | 
					import lombok.extern.slf4j.Slf4j;
 | 
				
			||||||
 | 
					import org.activiti.engine.RepositoryService;
 | 
				
			||||||
 | 
					import org.activiti.engine.repository.Deployment;
 | 
				
			||||||
 | 
					import org.activiti.engine.repository.ProcessDefinition;
 | 
				
			||||||
 | 
					import org.apache.commons.io.FilenameUtils;
 | 
				
			||||||
 | 
					import org.springframework.stereotype.Service;
 | 
				
			||||||
 | 
					import org.springframework.web.multipart.MultipartFile;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.io.InputStream;
 | 
				
			||||||
 | 
					import java.util.List;
 | 
				
			||||||
 | 
					import java.util.zip.ZipInputStream;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_UPLOAD_FAILED;
 | 
				
			||||||
 | 
					import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 流程基础管理
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author ZJQ
 | 
				
			||||||
 | 
					 * @date 2021/9/5 21:04
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					@Service
 | 
				
			||||||
 | 
					@Slf4j
 | 
				
			||||||
 | 
					public class ProcessServiceImpl implements ProcessService {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final String BPMN20_XML = "bpmn20.xml";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Resource
 | 
				
			||||||
 | 
					    private RepositoryService repositoryService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 上传流程文件,进行流程部署
 | 
				
			||||||
 | 
					     * @param multipartFile 上传文件
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    @Override
 | 
				
			||||||
 | 
					    public void deployProcess(MultipartFile multipartFile) {
 | 
				
			||||||
 | 
					        String fileName = multipartFile.getOriginalFilename();
 | 
				
			||||||
 | 
					        try (InputStream inputStream = multipartFile.getInputStream()){
 | 
				
			||||||
 | 
					            Deployment deployment = getDeplymentByType(inputStream,fileName);
 | 
				
			||||||
 | 
					            //获取部署成功的流程模型
 | 
				
			||||||
 | 
					            List<ProcessDefinition> processDefinitions = repositoryService.createProcessDefinitionQuery().deploymentId(deployment.getId()).list();
 | 
				
			||||||
 | 
					            processDefinitions.forEach((processDefinition)->{
 | 
				
			||||||
 | 
					                //设置线上部署流程模型名字
 | 
				
			||||||
 | 
					                String proDefId= processDefinition.getId();
 | 
				
			||||||
 | 
					                repositoryService.setProcessDefinitionCategory(proDefId,fileName);
 | 
				
			||||||
 | 
					                log.info("流程文件部署成功,流程ID="+proDefId);
 | 
				
			||||||
 | 
					            });
 | 
				
			||||||
 | 
					        } catch (IOException e) {
 | 
				
			||||||
 | 
					           log.error("流程部署出现异常"+e);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * 根据上传文件类型对应实现不同方式的流程部署
 | 
				
			||||||
 | 
					     * @param inputStream 文件输入流
 | 
				
			||||||
 | 
					     * @param fileName 文件名
 | 
				
			||||||
 | 
					     * @return 文件部署流程
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public Deployment getDeplymentByType(InputStream inputStream,String fileName){
 | 
				
			||||||
 | 
					        Deployment deployment;
 | 
				
			||||||
 | 
					        String type = FilenameUtils.getExtension(fileName);
 | 
				
			||||||
 | 
					        switch (type){
 | 
				
			||||||
 | 
					            case "bpmn":
 | 
				
			||||||
 | 
					                String baseName = FilenameUtils.getBaseName(fileName);
 | 
				
			||||||
 | 
					                deployment = repositoryService.createDeployment().addInputStream(baseName+"."+BPMN20_XML,inputStream).deploy();
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "png":
 | 
				
			||||||
 | 
					                deployment = repositoryService.createDeployment().addInputStream(fileName,inputStream).deploy();
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            case "zip":
 | 
				
			||||||
 | 
					            case "bar":
 | 
				
			||||||
 | 
					                ZipInputStream zipInputStream = new ZipInputStream(inputStream);
 | 
				
			||||||
 | 
					                deployment = repositoryService.createDeployment().addZipInputStream(zipInputStream).deploy();
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                throw exception(FILE_UPLOAD_FAILED);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return deployment;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -43,17 +43,30 @@ spring:
 | 
				
			|||||||
      primary: master
 | 
					      primary: master
 | 
				
			||||||
      datasource:
 | 
					      datasource:
 | 
				
			||||||
        master:
 | 
					        master:
 | 
				
			||||||
          name: ruoyi-vue-pro
 | 
					          name: ruoyi_vue_pro
 | 
				
			||||||
          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
 | 
					          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.master.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
 | 
				
			||||||
          driver-class-name: com.mysql.jdbc.Driver
 | 
					          driver-class-name: com.mysql.jdbc.Driver
 | 
				
			||||||
          username: root
 | 
					          username: root
 | 
				
			||||||
          password: 123456
 | 
					          password: root
 | 
				
			||||||
        slave: # 模拟从库,可根据自己需要修改
 | 
					        slave: # 模拟从库,可根据自己需要修改
 | 
				
			||||||
          name: ruoyi-vue-pro
 | 
					          name: ruoyi_vue_pro
 | 
				
			||||||
          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
 | 
					          url: jdbc:mysql://127.0.0.1:3306/${spring.datasource.dynamic.datasource.slave.name}?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=CTT
 | 
				
			||||||
          driver-class-name: com.mysql.jdbc.Driver
 | 
					          driver-class-name: com.mysql.jdbc.Driver
 | 
				
			||||||
          username: root
 | 
					          username: root
 | 
				
			||||||
          password: 123456
 | 
					          password: root
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  activiti:
 | 
				
			||||||
 | 
					    #1.false:默认值,activiti启动时,对比数据库表中保存的版本,如果不匹配。将抛出异常
 | 
				
			||||||
 | 
					    #2.true:启动时会对数据库中所有表进行更新操作,如果表存在,不做处理,反之,自动创建表
 | 
				
			||||||
 | 
					    #3.create_drop:启动时自动创建表,关闭时自动删除表
 | 
				
			||||||
 | 
					    #4.drop_create:启动时,删除旧表,再创建新表
 | 
				
			||||||
 | 
					    database-schema-update: true
 | 
				
			||||||
 | 
					    #activiti7默认不生成历史信息表,需手动设置开启
 | 
				
			||||||
 | 
					    db-history-used: true
 | 
				
			||||||
 | 
					    check-process-definitions: true
 | 
				
			||||||
 | 
					    history-level: full
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
 | 
					  # Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
 | 
				
			||||||
  redis:
 | 
					  redis:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -396,6 +396,15 @@
 | 
				
			|||||||
                <version>${aliyun-java-sdk-dysmsapi.version}</version>
 | 
					                <version>${aliyun-java-sdk-dysmsapi.version}</version>
 | 
				
			||||||
            </dependency>
 | 
					            </dependency>
 | 
				
			||||||
            <!-- SMS SDK end -->
 | 
					            <!-- SMS SDK end -->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            <!-- activiti begin -->
 | 
				
			||||||
 | 
					            <dependency>
 | 
				
			||||||
 | 
					                <groupId>cn.iocoder.boot</groupId>
 | 
				
			||||||
 | 
					                <artifactId>yudao-spring-boot-starter-activiti</artifactId>
 | 
				
			||||||
 | 
					                <version>${revision}</version>
 | 
				
			||||||
 | 
					            </dependency>
 | 
				
			||||||
 | 
					            <!-- activiti end -->
 | 
				
			||||||
        </dependencies>
 | 
					        </dependencies>
 | 
				
			||||||
    </dependencyManagement>
 | 
					    </dependencyManagement>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -28,6 +28,7 @@
 | 
				
			|||||||
        <module>yudao-spring-boot-starter-biz-operatelog</module>
 | 
					        <module>yudao-spring-boot-starter-biz-operatelog</module>
 | 
				
			||||||
        <module>yudao-spring-boot-starter-biz-dict</module>
 | 
					        <module>yudao-spring-boot-starter-biz-dict</module>
 | 
				
			||||||
        <module>yudao-spring-boot-starter-biz-sms</module>
 | 
					        <module>yudao-spring-boot-starter-biz-sms</module>
 | 
				
			||||||
 | 
					        <module>yudao-spring-boot-starter-activiti</module>
 | 
				
			||||||
    </modules>
 | 
					    </modules>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <artifactId>yudao-framework</artifactId>
 | 
					    <artifactId>yudao-framework</artifactId>
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										58
									
								
								yudao-framework/yudao-spring-boot-starter-activiti/pom.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								yudao-framework/yudao-spring-boot-starter-activiti/pom.xml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
				
			|||||||
 | 
					<?xml version="1.0" encoding="UTF-8"?>
 | 
				
			||||||
 | 
					<project xmlns="http://maven.apache.org/POM/4.0.0"
 | 
				
			||||||
 | 
					         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 | 
				
			||||||
 | 
					         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 | 
				
			||||||
 | 
					    <parent>
 | 
				
			||||||
 | 
					        <groupId>cn.iocoder.boot</groupId>
 | 
				
			||||||
 | 
					        <artifactId>yudao-framework</artifactId>
 | 
				
			||||||
 | 
					        <version>${revision}</version>
 | 
				
			||||||
 | 
					    </parent>
 | 
				
			||||||
 | 
					    <modelVersion>4.0.0</modelVersion>
 | 
				
			||||||
 | 
					    <artifactId>yudao-spring-boot-starter-activiti</artifactId>
 | 
				
			||||||
 | 
					    <packaging>jar</packaging>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <name>${artifactId}</name>
 | 
				
			||||||
 | 
					    <description>Activiti 拓展</description>
 | 
				
			||||||
 | 
					    <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <properties>
 | 
				
			||||||
 | 
					        <activiti.version>7.1.0.M6</activiti.version>
 | 
				
			||||||
 | 
					    </properties>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    <dependencies>
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>cn.iocoder.boot</groupId>
 | 
				
			||||||
 | 
					            <artifactId>yudao-common</artifactId>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.activiti.dependencies</groupId>
 | 
				
			||||||
 | 
					            <artifactId>activiti-dependencies</artifactId>
 | 
				
			||||||
 | 
					            <version>${activiti.version}</version>
 | 
				
			||||||
 | 
					            <type>pom</type>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        <dependency>
 | 
				
			||||||
 | 
					            <groupId>org.activiti</groupId>
 | 
				
			||||||
 | 
					            <artifactId>activiti-spring-boot-starter</artifactId>
 | 
				
			||||||
 | 
					            <version>${activiti.version}</version>
 | 
				
			||||||
 | 
					            <exclusions>
 | 
				
			||||||
 | 
					                <exclusion>
 | 
				
			||||||
 | 
					                    <groupId>de.odysseus.juel</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>juel-api</artifactId>
 | 
				
			||||||
 | 
					                </exclusion>
 | 
				
			||||||
 | 
					                <exclusion>
 | 
				
			||||||
 | 
					                    <groupId>de.odysseus.juel</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>juel-spi</artifactId>
 | 
				
			||||||
 | 
					                </exclusion>
 | 
				
			||||||
 | 
					                <exclusion>
 | 
				
			||||||
 | 
					                    <groupId>org.mybatis</groupId>
 | 
				
			||||||
 | 
					                    <artifactId>mybatis</artifactId>
 | 
				
			||||||
 | 
					                </exclusion>
 | 
				
			||||||
 | 
					            </exclusions>
 | 
				
			||||||
 | 
					        </dependency>
 | 
				
			||||||
 | 
					    </dependencies>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					</project>
 | 
				
			||||||
@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.yudao.framework.activiti;
 | 
				
			||||||
		Reference in New Issue
	
	Block a user