SpringBoot Mysql->达梦8 activiti6.0.0 项目迁移

 全部源码:公众号搜索资小库,回复dm获取源码

1.整合达梦

1.1 达梦驱动下载

MyBatis-Plus 框架 | 达梦技术文档 (dameng.com)

1.2 数据迁移

怎么安装数据库,很多大佬有帖子,搜一下达梦先建立用户,使用DM管理工具

链接数据库

输入用户名密码等,再创建用户,咱这边用户和数据库名称保持一致,这样就可以不加数据库头了我们的SQL,并赋予一定权限

使用DM数据迁移工具进行数据迁移,先新建迁移,然后下一步下一步,数据就迁移完了

1.2安装驱动

将DmJdbcDriver18.jar移动到你觉得合适的地方,我这边移动到了

${project.basedir}/src/lib/DmJdbcDriver18.jar 这个地方

1.3 pom准备

删除mysql驱动,全局搜索xml类型的文件内容"mysql-",删除mysql的相关依赖,怕出错不想删除也行,增加达梦驱动

        <dependency>
            <groupId>com.dm</groupId>
            <artifactId>Dm18JdbcDriver</artifactId>
            <version>1.8</version>
            <scope>system</scope>
            <systemPath>${project.basedir}/src/lib/DmJdbcDriver18.jar</systemPath>
        </dependency>

1.4 yml修改

        driverClassName: dm.jdbc.driver.DmDriver
        url: jdbc:dm://127.0.0.1:5236/BIMS_SAAS?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf-8&nullCatalogMeansCurrent=true
        username: BIMS_SAAS
        password: xxxxx

至此达梦就整合完了

2.activiti整合达梦

主要是4个文件,但是源码中和你在class中copy的代码不是很相同,我们使用源码中的代码,

以下文件,目录结构自己看图

ProcessEngineConfigurationImpl增加对DM的支持

  public static final String DATABASE_TYPE_DM = "dm";

  public static Properties getDefaultDatabaseTypeMappings() {
    Properties databaseTypeMappings = new Properties();
    databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_DM);
    }

这里修改成Oracle,因为达梦对oracle支持不错

        if (databaseType != null) {
            if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)){
                databaseType = ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE;
            }
            properties.load(getResourceAsStream("org/activiti/db/properties/"+databaseType+".properties"));
        }

DbSqlSession

这个地方要改一下,也是让他支持Oracle

  public String getResourceForDbOperation(String directory, String operation, String component) {
    String databaseType = dbSqlSessionFactory.getDatabaseType();
    if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)){
      databaseType = ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE;
    }
    return "org/activiti/db/" + directory + "/activiti." + databaseType + "." + operation + "." + component + ".sql";
  }

DbSqlSessionFactory 

也是选择Oracle

  protected void initBulkInsertEnabledMap(String databaseType) {
  	bulkInsertableMap = new HashMap<Class<? extends Entity>, Boolean>();

  	for (Class<? extends Entity> clazz : EntityDependencyOrder.INSERT_ORDER) {
  		bulkInsertableMap.put(clazz, Boolean.TRUE);
  	}

  	// Only Oracle is making a fuss in one specific case right now
		if ("oracle".equals(databaseType) || "dm".equals(databaseType)) {
			bulkInsertableMap.put(EventLogEntryEntityImpl.class, Boolean.FALSE);
		}
  }

AbstractQuery

增加对dm支持

if (nullHandlingOnOrder != null) {

      if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_FIRST)) {

        if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_HSQL.equals(databaseType)
            || ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)
                || ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)) {
          orderBy = orderBy + defaultOrderByClause + " NULLS FIRST";
        } else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL.equals(databaseType)) {
          orderBy = orderBy + "isnull(" + column + ") desc," + defaultOrderByClause;
        } else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DB2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_MSSQL.equals(databaseType)) {
          orderBy = orderBy + "case when " + column + " is null then 0 else 1 end," + defaultOrderByClause;
        } else {
          orderBy = orderBy + defaultOrderByClause;
        }

      } else if (nullHandlingOnOrder.equals(NullHandlingOnOrder.NULLS_LAST)) {

        if (ProcessEngineConfigurationImpl.DATABASE_TYPE_H2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_HSQL.equals(databaseType)
            || ProcessEngineConfigurationImpl.DATABASE_TYPE_POSTGRES.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_ORACLE.equals(databaseType)
          ||ProcessEngineConfigurationImpl.DATABASE_TYPE_DM.equals(databaseType)
        ) {
          orderBy = orderBy + column + " " + sortOrder + " NULLS LAST";
        } else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_MYSQL.equals(databaseType)) {
          orderBy = orderBy + "isnull(" + column + ") asc," + defaultOrderByClause;
        } else if (ProcessEngineConfigurationImpl.DATABASE_TYPE_DB2.equals(databaseType) || ProcessEngineConfigurationImpl.DATABASE_TYPE_MSSQL.equals(databaseType)) {
          orderBy = orderBy + "case when " + column + " is null then 1 else 0 end," + defaultOrderByClause;
        } else {
          orderBy = orderBy + defaultOrderByClause;
        }

      }

pom

        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>javax.persistence-api</artifactId>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.3.7.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>commons-collections</groupId>
                    <artifactId>commons-collections</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

yml

# 数据源配置
spring:
  jpa:
    properties:
      hibernate:
        dialect: org.hibernate.dialect.Oracle10gDialect
      show-sql: ture

这样第一次启动应该可以启动创建表了,启动不起来多半是一些SQL或者其他JAVA问题不兼容导致的

第一次执行完,关闭activiti更新表

spring:  
    activiti:
        check-process-definitions: false
        # 检测身份信息表是否存在
        db-identity-used: false
        database-schema-update: none

  关注公众号:资小库,问题快速答疑解惑

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!关于Spring Boot和数据库在Activiti中的使用,我可以为您提供一些指导。 首先,确保您已经在Spring Boot项目中引入了Activiti的依赖。您可以在项目的pom.xml文件中添加以下依赖: ```xml <dependency> <groupId>org.activiti</groupId> <artifactId>activiti-spring-boot-starter-basic</artifactId> <version>7.1.0</version> </dependency> ``` 接下来,您需要配置数据库的连接信息。在Spring Boot中,可以在application.properties或application.yml文件中添加以下配置: ``` spring.datasource.url=jdbc:dm://localhost:5236/your_database spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=dm.jdbc.driver.DmDriver ``` 请将上述配置中的`your_database`替换为您的数据库名称,`your_username`和`your_password`替换为您的数据库用户名和密码。 然后,您可以使用Activiti提供的API来创建、管理和执行工作流程。可以通过注入ProcessEngine来获取ProcessEngineServices对象,从而进行相关操作。以下是一个简单的示例: ```java import org.activiti.engine.ProcessEngine; import org.activiti.engine.RuntimeService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class MyService { @Autowired private ProcessEngine processEngine; public void startWorkflow() { RuntimeService runtimeService = processEngine.getRuntimeService(); runtimeService.startProcessInstanceByKey("myProcess"); } } ``` 在上面的示例中,我们注入了ProcessEngine对象,并使用RuntimeService来启动一个名为"myProcess"的工作流程实例。 以上是关于在Spring Boot中使用数据库和Activiti的基本指导。如果您有更具体的问题或需求,请随时告诉我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

不会写爬虫的程序员B

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

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

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

打赏作者

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

抵扣说明:

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

余额充值