mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-23 07:41:53 +08:00
1、集成Activiti7版本,yudao-dependencies模块新增activiti依赖包;
2、流程文件上传部署API后端逻辑实现;
This commit is contained in:
parent
1a17e5ecb8
commit
00e15a5c2c
@ -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;
|
Loading…
Reference in New Issue
Block a user