flowable流程引擎6.x.x对接虚谷伟业数据库

本文分享将流程引擎数据库迁移至虚谷数据库的经验。包括使用虚谷官方工具迁移表结构及数据,引入jdbc的jar,修改flowable.common.engine和liqiubase核心配置,配置MyBatis - Plus,如添加依赖、配置数据源等,还提及数据库时间字段映射关系变化需参考官方文档。

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

1、迁移流程表结构及数据

通过虚谷官方提供的XuguMigrator-11.4.0.202301130943-RELEASE-win-x64迁移工具,把流程引擎的表全部迁移到虚谷数据库

2、引入jdbc的jar

在这里插入图片描述
引入虚谷伟业db依赖

<!-- 引入虚谷伟业db依赖 -->
<dependency>
    <groupId>XuGuDB</groupId>
    <artifactId>XuGuDB</artifactId>
    <version>12.0.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/src/main/resources/lib/xugu-jdbc-12.0.0.jar</systemPath>
</dependency>

注册虚谷JDBC驱动程序

 try {
     Class.forName("com.xugu.cloudjdbc.Driver");
 } catch (ClassNotFoundException e) {
     log.error("-========================== 注册虚谷JDBC驱动程序 [失败] =====================");
 }

3、flowable.common.engine核心配置修改

在项目中创建org.flowable.common.engine.impl.AbstractEngineConfiguration文件【java目录下】(package路径必须一致,打包时会覆盖源文件)
在这里插入图片描述

// 数据库标识为mysql(通用mysql)
// key 名称不能变,作为productName这是厂商规定的
databaseTypeMappings.setProperty("XuGU", DATABASE_TYPE_MYSQL);

在这里插入图片描述

4、liqiubase核心配置修改

在这里插入图片描述

 * [xugu的修改方式]
 * liquibase官网版本支持的数据库类型有:cockroachdb、db2、db2z、Derby、firebird、H2、hsqldb、informix,
 * ingres、MariaDB、mock、Microsoft SQL ServerMySQLOraclePostgresSqliteSybase* 对国产化数据库适配至少需要进行如下的修改
 * <p>
 * 1.创建DmDatabase,继承AbstractJdbcDatabase,具体的类实现从MySqlDatabase类中复制,然后进行如下修改
 * <p>
 * 删除setConnection方法;
 * 修改PRODUCT_NAME常量值为“XuGU* 修改getDefaultPort方法,返回5138
 * 修改getShortName方法,返回xugu
 * 修改getDefaultDriver方法,返回虚谷的Driver
  • 4.1、先在本地创建对应package下的class

    • package liquibase.database.core;
      在这里插入图片描述
  • 4.2、把对应源码先拷贝过来再修改

    • 删除setConnection方法;
    • 修改PRODUCT_NAME常量值为“XuGU”
    • 修改getDefaultPort方法,返回5138
    • 修改getShortName方法,返回xugu
    • 修改getDefaultDriver方法,返回虚谷的Driver
  • 4.3、源码替换

    • 4.3.1、把进行mvn clean package后的class文件拷贝出来
      在这里插入图片描述

    • 4.3.2、把源码所在的jar也拷贝出来
      在这里插入图片描述
      在这里插入图片描述

    • 4.3.3、具体替换源码操作

      • 源码解压后进入到对应的目录下进行class替换
      • 然后再重新压缩成zip
      • 把后缀zip替换成jar文件
      • 把jar文件再重新放回到原来的仓库中

4.4、修改package liquibase.database下AbstractJdbcDatabase

  • 操作和以上一样,修改为虚谷支持的语法
protected SqlStatement getConnectionSchemaNameCallStatement() throws DatabaseException {
      if ("XuGU".equalsIgnoreCase(connection.getDatabaseProductName())){
          return new RawCallStatement("select current_schema");
      }
      return new RawCallStatement("call current_schema");
}

改之后
改之前

4.5、修改resources/META-INF.services/liquibase.database.Database内容,增加XuGUDatabase支持

没有此文件的直接新增
在这里插入图片描述

liquibase.database.core.CockroachDatabase
liquibase.database.core.DB2Database
liquibase.database.core.Db2zDatabase
liquibase.database.core.DerbyDatabase
liquibase.database.core.Firebird3Database
liquibase.database.core.FirebirdDatabase
liquibase.database.core.H2Database
liquibase.database.core.HsqlDatabase
liquibase.database.core.InformixDatabase
liquibase.database.core.Ingres9Database
liquibase.database.core.MSSQLDatabase
liquibase.database.core.MariaDBDatabase
liquibase.database.core.MockDatabase
liquibase.database.core.MySQLDatabase
liquibase.database.core.OracleDatabase
liquibase.database.core.PostgresDatabase
liquibase.database.core.SQLiteDatabase
liquibase.database.core.SybaseASADatabase
liquibase.database.core.SybaseDatabase
liquibase.database.core.XuGUDatabase
liquibase.database.core.UnsupportedDatabase

5、配置MyBatis-Plus

  1. 添加依赖项:在pom.xml文件中添加MyBatis-Plus和虚古伟业数据库的依赖项。示例:
<dependencies>
    <!-- 其他依赖项 -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.0</version>
    </dependency>
    <dependency>
        <groupId>com.xugu.cloud</groupId>
        <artifactId>xugu</artifactId>
        <version>1.0.0</version>
    </dependency>
</dependencies>

  1. 配置数据源:在application.yml(或application.properties)文件中配置数据源和MyBatis-Plus相关的配置项。示例:
spring:
  datasource:
    url: jdbc:xugu://localhost:5138/database_name
    username: your_username
    password: your_password
  # 配置MyBatis-Plus
  mybatis-plus:
    mapper-locations: classpath*:mapper/**/*.xml
    type-aliases-package: com.example.entity

请确保将上述示例中的数据库连接URL、用户名和密码替换为实际的值。mapper-locations配置指定了MyBatis-Plus的XML映射文件所在的路径,type-aliases-package配置指定了实体类的包路径。

  1. 创建实体类:创建与数据库表对应的实体类。示例:
package com.example.entity;

import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user") // 表名映射
public class User {
    private Long id;
    private String name;
    private Integer age;
    // 其他属性...
}

请确保实体类上使用了@TableName注解,并指定了对应的表名。

  1. 创建Mapper接口:创建继承自BaseMapper的Mapper接口,用于执行数据库操作。示例:
package com.example.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.entity.User;

public interface UserMapper extends BaseMapper<User> {
    // 可以添加自定义的查询方法
}
  1. 创建Service层:创建对应的Service层,用于调用Mapper接口中的方法执行数据库操作。示例:
package com.example.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.entity.User;

public interface UserService extends IService<User> {
    // 可以添加自定义的业务方法
}
  1. 创建ServiceImpl实现类:创建Service层的实现类,继承自ServiceImpl,并实现自定义的业务方法。示例:
package com.example.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.entity.User;
import com.example.mapper.UserMapper;
import com.example.service.UserService;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
    // 可以实现自定义的业务方法
}

以上代码示例中,UserMapper是创建的Mapper接口,User是对应的实体类。

package com.example.controller;

import com.example.entity.User;
import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getById(id);
    }

	// 其他接口...
}

数据库时间字段

有些常用字段的映射关系变了,具体的参考官方文档
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值