activiti 如何使用database前缀来区分activiti数据库和业务数据库
第一步是先集成好activiti,我使用的是5.22.0,使用springboot集成,pom文件如下:
<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.5.2.RELEASE</version>
	</parent>
<span class="hljs-tag"><<span class="hljs-name">properties</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">java.version</span>></span>1.8<span class="hljs-tag"></<span class="hljs-name">java.version</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">activiti.version</span>></span>5.22.0<span class="hljs-tag"></<span class="hljs-name">activiti.version</span>></span>
<span class="hljs-tag"></<span class="hljs-name">properties</span>></span>
<span class="hljs-tag"><<span class="hljs-name">dependencies</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-thymeleaf<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
	<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-web<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
	<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.activiti<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>activiti-spring-boot-starter-basic<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">version</span>></span>${activiti.version}<span class="hljs-tag"></<span class="hljs-name">version</span>></span>
	<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>mysql<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>mysql-connector-java<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>runtime<span class="hljs-tag"></<span class="hljs-name">scope</span>></span>
	<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
	<span class="hljs-tag"><<span class="hljs-name">dependency</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">groupId</span>></span>org.springframework.boot<span class="hljs-tag"></<span class="hljs-name">groupId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">artifactId</span>></span>spring-boot-starter-test<span class="hljs-tag"></<span class="hljs-name">artifactId</span>></span>
		<span class="hljs-tag"><<span class="hljs-name">scope</span>></span>test<span class="hljs-tag"></<span class="hljs-name">scope</span>></span>
	<span class="hljs-tag"></<span class="hljs-name">dependency</span>></span>
<span class="hljs-tag"></<span class="hljs-name">dependencies</span>></span>
配置springboot的启动配置文件中的数据库,我们指定一个独立的数据库来进行创建activiti的数据库
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/activiti?characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: false
debug: true运行启动类,
@SpringBootApplication
public class ActivitiApplication {
<span class="hljs-comment">/**
 * Description:
 * <span class="hljs-doctag">@author</span> Liu Wenjie
 * <span class="hljs-doctag">@date</span> 2018年2月11日 上午10:38:00
 * <span class="hljs-doctag">@param</span> args
 */</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">main</span><span class="hljs-params">(String[] args)</span> </span>{
	SpringApplication.run(ActivitiApplication.class, args);
}
}
我们打开数据库,可以看到已经动态生成了对应的数据库文件,而正常业务我们不想使用activiti的数据库作为数据源的链接源,那么我们就修改配置文件的链接到test 数据库上,修改后的配置如下:
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  jpa:
    show-sql: true
    hibernate:
      ddl-auto: false
debug: true如果我们现在启动,那么activiti会默认在test database上创建数据库表结构,这时候我们需要增加一个配置类,
@Component
public class ActivitiProcessEngineConfigurationConfigurer implements ProcessEngineConfigurationConfigurer {
<span class="hljs-comment">/**
 * <p>Description: </p>
 * <span class="hljs-doctag">@author</span> Liu Wenjie
 * <span class="hljs-doctag">@date</span> 2018年2月12日 上午11:09:19
 * <span class="hljs-doctag">@param</span> processEngineConfiguration
 * <span class="hljs-doctag">@see</span> org.activiti.spring.boot.ProcessEngineConfigurationConfigurer#configure(org.activiti.spring.SpringProcessEngineConfiguration)
 */</span>
<span class="hljs-meta">@Override</span>
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">configure</span><span class="hljs-params">(SpringProcessEngineConfiguration processEngineConfiguration)</span> </span>{
	processEngineConfiguration.setDatabaseTablePrefix(<span class="hljs-string">"activiti."</span>);
	processEngineConfiguration.setTablePrefixIsSchema(<span class="hljs-keyword">true</span>);
	processEngineConfiguration.setDatabaseSchemaUpdate(<span class="hljs-string">"no"</span>);
}
}
configure方法里的方法是为了让activiti开始时不创建也不校验activiti版本,然后在业务执行的时候都增加对应的数据库前缀,这样变相的解决了activiti的表与业务表不在同一个数据库的问题。
activiti的源码关键点在:
DbSqlSession.class中的以下方法:
public void performSchemaOperationsProcessEngineBuild() {
    String databaseSchemaUpdate = Context.getProcessEngineConfiguration().getDatabaseSchemaUpdate();
    if (ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_DROP_CREATE.equals(databaseSchemaUpdate)) {
      try {
        dbSchemaDrop();
      } catch (RuntimeException e) {
        // ignore
      }
    }
    if ( org.activiti.engine.ProcessEngineConfiguration.DB_SCHEMA_UPDATE_CREATE_DROP.equals(databaseSchemaUpdate)
         || ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_DROP_CREATE.equals(databaseSchemaUpdate)
         || ProcessEngineConfigurationImpl.DB_SCHEMA_UPDATE_CREATE.equals(databaseSchemaUpdate)
       ) {
      dbSchemaCreate();
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (org.activiti.engine.ProcessEngineConfiguration.DB_SCHEMA_UPDATE_FALSE.equals(databaseSchemaUpdate)) {
  dbSchemaCheckVersion();
} <span class="hljs-keyword">else</span> <span class="hljs-keyword">if</span> (ProcessEngineConfiguration.DB_SCHEMA_UPDATE_TRUE.equals(databaseSchemaUpdate)) {
  dbSchemaUpdate();
}
}
                                    </div>原文地址:https://my.oschina.net/6WiVT5YRI7U/blog/1621605
                                        </div>activiti 如何使用database前缀来区分activiti数据库和业务数据库的更多相关文章
- 删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)的问题
		删除数据库时提示数据库正在被使用,无法删除(Cannot drop database databasename because it is currently in use)的问题 删除数据库时提 ... 
- Activiti系列——如何在eclipse中安装 Activiti Designer插件
		这两天在评估jbpm和Activiti,需要安装一个Activiti Designer插件试用一下. 一.在线安装 从<Activiti实战>了解到可以通过如下方式安装 打开Eclipse ... 
- Activiti 5.18启动流程到完成所有任务之间的数据库变化(转)
		来写一下Activiti 5.18版本从启动流程到整个流程结束之间数据库表的变化 先给出流程图,很简单的流程,就是两个UserTask: 代码如下: DeploymentBuilder builder ... 
- 首先给大家介绍一下数据库project师,数据库project师(Database Engineer),是从事管理和维护数据库管理系统(DBMS)
		摘要 MySQL的最初的核心思想,主要是开源.简便易用.其开发可追溯至1985年,而第一个内部发行版本号诞生,已经是1995年. 到1998年,MySQL已经能够支持10中操作系统了.当中就包含win ... 
- Sql server 使用drop database 语句,无法删除正在使用的数据库的解决办法
		使用DROP DATABASE 删除数据库 显示“无法删除数据库 ,因为该数据库当前正在使用. 解决办法:在删除某一个数据库(下例中的“DB1”数据库)前,强制kill掉该数据库上的所有数据库连接. ... 
- Database基础(一):构建MySQL服务器、 数据库基本管理 、MySQL 数据类型、表结构的调整
		一.构建MySQL服务器 目标: 本案例要求熟悉MySQL官方安装包的使用,快速构建一台数据库服务器: 安装MySQL-server.MySQl-client软件包 修改数据库用户root的密码 确认 ... 
- windows10;  ERROR 1010 (HY000): Error dropping database (can't rmdir './test/', errno: 17);默认数据库位置查找
		1.想要导入数据到一个数据库中,但是,无法导入,同时也无法删除数据库重新建立-----------------------------备份当前数据库 2,分析:很多资料显示说数据库下有异常文件,于是就 ... 
- SQLServer配置镜像,无法将 ALTER DATABASE 命令发送到远程服务器实例,数据库镜像配置未更改。请确保该服务器已连接,然后重试。
		问题描述: 在做镜像的时候镜像已经连接成功,但是见证服务器却报错 然后tcping了端口啥都是通的,后面发现原来是主机名称一样导致的问题 发现host文件里面: C:\Windows\System32 ... 
- AbstractRoutingDataSource实现动态数据源切换  专题
		需求:系统中要实现切换数据库(业务数据库和his数据库) 网上很多资料上有提到AbstractRoutingDataSource,大致是这么说的 在Spring 2.0.1中引入了AbstractRo ... 
随机推荐
- Leetcode64.Minimum Path Sum最小路径和
			给定一个包含非负整数的 m x n 网格,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小. 说明:每次只能向下或者向右移动一步. 示例: 输入: [ [1,3,1], [1,5,1] ... 
- php收集表单数据-$GET和$POST的区别
			学习笔记: $_GET 变量 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. 从带有 GET 方法的表单发送的信息(例如:http://www.r ... 
- Android中使用ormlite实现持久化--HelloOrmLite
			Android中内置了sqlite,但是常用的开发语言java是面向对象的,而数据库是关系型的,二者之间的转化每次都很麻烦(主要是我对sql语言不熟悉).而Java Web开发中有很多orm框架,但是 ... 
- SQLSERVER 根据传入的参数拼接sql语句字符串,反馈结果集
			ALTER PROCEDURE [dbo].[usp_visit_detail](@siteid BIGINT, @Startime VARCHAR(15), @Endtime VARCHAR(15 ... 
- SDUT-3398_数据结构实验之排序一:一趟快排
			数据结构实验之排序一:一趟快排 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 给定N个长整型范围内的整数,要求输出以给 ... 
- 外贸电子商务网站之Prestashop 设置网站基本信息
			顶部banner图,首页各尺寸banner图.社交分享.物流支持.支付方式提醒等等设置 示例版本:1.6.1.11 
- 如何把一个普通的Eclipse项目改造成Eclipse Plugin项目
			New Project->Plug-in from existing JAR Archive 同时要记得不仅要将你要转换的项目的jar包选上,同时还要将项目依赖的jar包全部选上(要不然会找不到 ... 
- Directx11教程(17) D3D11管线(6)
			原文:Directx11教程(17) D3D11管线(6) VS shader输出clip空间的顶点位置及参数信息(比如颜色)到一个FIFO中,之后PA(primitive assembl ... 
- CDH5.13.1安装
			文件下载 Cloudera Manager 地址:http://archive.cloudera.com/cm5/cm/5/ 这里下载的是5.13.1的版本,https://archive.cloud ... 
- LeetCode191 Number of 1 Bits. LeetCode231 Power of Two. LeetCode342 Power of Four
			位运算相关 三道题 231. Power of Two Given an integer, write a function to determine if it is a power of two. ... 
 
			
		