activiti 5.22整合springboot 2.1项目+ activit网页流程设计器  整合(一)

本文介绍了如何将Activiti 5.22与Spring Boot 2.1项目进行整合,包括数据库配置、前端设计器的部署与配置、后端接口的添加,以及在线设计器的使用,如模型定义、用户选择等功能。通过详细的步骤和代码示例,展示了如何在项目中实现工作流的管理和设计。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

activiti整合+ activit网页流程设计器 

 

1.需求

现在网上主流的是使用 thymeleaf + springboot的方式  ,   我也是参考这些案例实现了 springboot+vue的方式, 不适用 thymeleaf ,有所更改

项目中添加项目的activiti依赖 以及添加 activit网页流程设计器 

添加相关maven

 

        <!-- Activiti Start -->
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-basic</artifactId>
            <version>${activiti.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-rest-api</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-spring-boot-starter-actuator</artifactId>
            <version>${activiti.version}</version>
        </dependency>
        <dependency>
            <groupId>org.activiti</groupId>
            <artifactId>activiti-explorer</artifactId>
            <version>${activiti.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>com.vaadin</groupId>
                    <artifactId>vaadin</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.vaadin.addons</groupId>
                    <artifactId>dcharts-widget</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>activiti-simple-workflow</groupId>
                    <artifactId>org.activiti</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <!-- Activiti End -->

activiti版本

<activiti.version>5.22.0</activiti.version>

jackson版本

 

<jackson.version>2.9.7</jackson.version>

 

springboot的版本

<version>2.1.1.RELEASE</version>

 

yml 配置文件

配置 activiti

spring:
    activiti:
        check-process-definitions: false #检查定义
        job-executor-activate: false #定时到数据库扫描没有执行系统的任务 进行执行
        async-executor-enabled: false
        async-executor-activate: false #启动将代替job-executor-activate
        database-schema-update: true #自动更新数据库结构
        database-schema: database_name #数据库名

 

与数据库的结合

 

由于activiti 要连接数据库所以要配置 数据库参数,网上的都是xml来配置的 我选择采用 springboot 对象方式配置数据库连接

 

package com.zg.project.provide.flow.config;
import org.activiti.spring.SpringAsyncExecutor;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.activiti.spring.boot.AbstractProcessEngineAutoConfiguration;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.stereotype.Component;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
import java.io.IOException;
import java.util.ArrayList;

@Configuration//声名为配置类,继承Activiti抽象配置类
public class ActivitiConfig extends AbstractProcessEngineAutoConfiguration {
//这里的参数是直接从spring的数据库配置获取,应该会有更友好的方法
    @Value("${spring.datasource.dynamic.datasource.master.driver-class-name}")
    private String driverclassname;
    @Value("${spring.datasource.dynamic.datasource.master.jdbc}")
    private String url;
    @Value("${spring.datasource.dynamic.datasource.master.username}")
    private String username;
    @Value("${spring.datasource.dynamic.datasource.master.password}")
    private String password;
    @Bean
    @Primary
    @ConfigurationProperties(prefix = "datasource.activiti")
    public DataSource activitiDataSource() {
        return DataSourceBuilder.create()
                .url(url).username(username).driverClassName(driverclassname).password(password).build();
    }
    @Bean
    public SpringProcessEngineConfiguration springProcessEngineConfiguration(
            PlatformTransactionManager transactionManager,
            SpringAsyncExecutor springAsyncExecutor) throws IOException {
        return baseSpringProcessEngineConfiguration(
                activitiDataSource(),
                transactionManager,
                springAsyncExecutor);
    }
}

// spring 接管相关的  activiti 实体

package com.zg.project.provide.flow.config;
import org.activiti.engine.*;
import org.activiti.engine.impl.cfg.ProcessEngineConfigurationImpl;
import org.activiti.spring.ProcessEngineFactoryBean;
import org.activiti.spring.SpringProcessEngineConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.PlatformTransactionManager;
import javax.sql.DataSource;
/**
 * @Classname Cfg_Activiti
 * @Description activiti工作流配置
 * @Author xiedong
 * @Date 2019/10/21 11:31
 * @Version 1.0
 **/
@Configuration
public class Cfg_Activiti {
    //流程配置,与spring整合采用SpringProcessEngineConfiguration这个实现
// @Bean
// public ProcessEngineConfiguration processEngineConfiguration(DataSource dataSource, PlatformTransactionManager transactionManager){
// SpringProcessEngineConfiguration processEngineConfiguration = new SpringProcessEngineConfiguration();
// processEngineConfiguration.setDataSource(dataSource);
// processEngineConfiguration.setDatabaseSchemaUpdate("true");
// processEngineConfiguration.setDatabaseType("mysql");
//
// processEngineConfiguration.setTransactionManager(transactionManager);
//
// //流程图字体
// processEngineConfiguration.setActivityFontName("宋体");
// processEngineConfiguration.setAnnotationFontName("宋体");
// processEngineConfiguration.setLabelFontName("宋体");
//
// return processEngineConfiguration;
// }
//
// //流程引擎,与spring整合使用factoryBean
// @Bean
// public ProcessEngineFactoryBean processEngine(ProcessEngineConfiguration processEngineConfiguration){
// ProcessEngineFactoryBean processEngineFactoryBean = new ProcessEngineFactoryBean();
// processEngineFactoryBean.setProcessEngineConfiguration((ProcessEngineConfigurationImpl) processEngineConfiguration);
// return processEngineFactoryBean;
// }
//八大接口
    @Bean
    public RepositoryService repositoryService(ProcessEngine processEngine){
        return processEngine.getRepositoryService();
    }
    @Bean
    public RuntimeService runtimeService(ProcessEngine processEngine){
        return processEngine.getRuntimeService();
    }
    @Bean
    public TaskService taskService(ProcessEngine processEngine){
        return processEngine.getTaskService();
    }
    @Bean
    public HistoryService historyService(ProcessEngine processEngine){
        return processEngine.getHistoryService();
    }
    @Bean
    public FormService formService(ProcessEngine processEngine){
        return processEngine.getFormService();
    }
    @Bean
    public IdentityService identityService(ProcessEngine processEngine){
        return processEngine.getIdentityService();
    }
    @Bean
    public ManagementService managementService(ProcessEngine processEngine){
        return processEngine.getManagementService();
    }
    @Bean
    public DynamicBpmnService dynamicBpmnService(ProcessEngine processEngine){
        return processEngine.getDynamicBpmnService();
    }
}

 

最后springboot 启动器上添加 注解

排除 自带的安全验证权限功能,

@SpringBootApplication(
        exclude ={
                DataSourceAutoConfiguration.class,
                org.activiti.spring.boot.SecurityAutoConfiguration.class,
                org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration.class
        }
)

到这里 activiti 的配置参数就配置完了,可以启动了, 启动完成后,activiti就会创建相关的25张表

 

下面开始整合 activiti在线设计器

 

 

1.Activiti官网下载:https://www.activiti.org/get-started(我这里使用的是5.22.0版本)

  解压:activiti-5.22.0\wars\activiti-explorer,如下图

  

2.设计器前端部分

  仅保留一些静态资源就行了,将这些文件放入项目的web目录下。

  

  在editor-app/app-cfg.js中配置一下项目url。这个url是编辑器相关的后台服务的url。(当然你也可以根据你的需求改动)

  

   注:

    ①editor-app就是编辑器、modeler.html就是编辑器的入口页面

    ②diagram-viewer是流程跟踪插件

    ③界面组件:stencilset.json。本身是英文的,可以通过替换它来实现汉化的效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

学海无涯苦做java

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值