【Camunda 三】Camunda模型文件部署

参考:【Camunda 三】Camunda部署流程定义

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();//完成部署
    }
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风情客家__

原创不易,觉得好的话给个打赏哈

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值