https://www.jianshu.com/p/44f58002a618
一、构建流程图
使用Camunda Modeler构建流程图,Camunda Modeler下载地址:流程设计器
一个简单的流程图画好之后,点击面板左下角XML按钮,查看xml格式。
将上面的bpmn建模文件拷贝到项目的resources文件夹下,重命名如下图所示。
二、默认部署
Camunda SpringBoot工程启动时会自动扫描resource文件夹下的bpmn文件。
默认扫描resource文件夹下bpmn的application.yml配置如下:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: 用户名
password: 密码
application:
name: snail-view
camunda:
bpm:
webapp:
#禁止index跳转到Camunda自带的管理界面,默认true
index-redirect-enabled: true
admin-user:
id: demo
password: demo
filter:
create: All tasks
# 禁止自动部署resources下面的bpmn文件
auto-deployment-enabled: false
server:
port: 8900
直接启动项目访问
从界面上可以简单看出有一条定义,一次部署
三、自定义部署
Camunda SpringBoot工程启动时会自动扫描resource文件夹下的bpmn文件,也可以禁止扫描,并自定义部署扫描bpmn。
3.1 application.yml配置
禁止扫描resource文件夹下bpmn的application.yml配置如下:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/数据库名?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
driver-class-name: com.mysql.cj.jdbc.Driver
username: 用户名
password: 密码
application:
name: snail-view
camunda:
bpm:
webapp:
#禁止index跳转到Camunda自带的管理界面,默认true
index-redirect-enabled: true
admin-user:
id: demo
password: demo
filter:
create: All tasks
# 禁止自动部署resources下面的bpmn文件
auto-deployment-enabled: true
server:
port: 8900
3.2 部署流程定义
//这种就是加载项目resources目录下的one.bpmn文件
Deployment deploy = repositoryService.createDeployment()
.name(name)
.addClasspathResource("one.bpmn")
.deploy();
//这种就可以使用自己拼接的xml字符串
Deployment deploy = repositoryService.createDeployment()
.name(definitionName)
.addString(名称+".bpmn",resource)
.deploy();
3.3 流程部署的四种方法
package com.houpe.camunda.config;
import org.camunda.bpm.engine.RepositoryService;
import org.camunda.bpm.engine.repository.Deployment;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.io.ClassPathResource;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.ZipInputStream;
/**
* Camunda SpringBoot工程启动时会自动扫描resource文件夹下的bpmn,dmn等模型文件,这里可以进行自定义配置,加载指定目录的模型文件
* application.yml文件相应配置修改如下:
* camunda:
* bpm:
* auto-deployment-enabled: false
* @author 86133 2022-09-23 9:33:40
*/
@Component
public class DeployComp {
@Autowired
RepositoryService repositoryService;
/**
* 自定义部署方式一: 文件方式部署
* @throws IOException
*/
public void fileDeployment() throws IOException {
String filePath = "/opt";
String fileName = "test.bpmn";
Deployment deployment = repositoryService.createDeployment()
.name("部署名称")
.addClasspathResource(filePath + fileName + ".bpmn")
.addClasspathResource("processes/images/" + fileName + ".svg")
.deploy();
}
/**
* 自定义部署方式二: 文件流方式部署
* @throws IOException
*/
public void fileStreamDeployment() throws IOException {
String bpmnName = "collection_management_v1.bpmn";
ClassPathResource classPathResource = new ClassPathResource("processes/collection_management_v1.bpmn");
// 读取资源作为一个输入流
InputStream bpmnfileInputStream = classPathResource.getInputStream();
Deployment deployment = repositoryService.createDeployment()
.name("部署名称")
.addInputStream(bpmnName, bpmnfileInputStream)
.deploy();//完成部署
}
/**
* 自定义部署方式三: 字符串方式部署
* @throws IOException
*/
public void stringDeployment() {
//字符串
String text = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><definitions>...</definitions>";
Deployment deployment = repositoryService
.createDeployment()//创建部署对象
.addString("helloworld.bpmn", text)
.deploy();//完成部署
}
/**
* 自定义部署方式四: 压缩包方式部署
* @throws IOException
*/
public void zipFileDeployment() {
//从classpath路径下读取资源文件
InputStream in = this.getClass().getClassLoader().getResourceAsStream("diagrams/helloworld.zip");
ZipInputStream zipInputStream = new ZipInputStream(in);
Deployment deployment = repositoryService
.createDeployment()//创建部署对象
.addZipInputStream(zipInputStream) //使用zip方式部署,将helloworld.bpmn和helloworld.png压缩成zip格式的文件
.deploy();//完成部署
}
}