日期:2014-05-16  浏览次数:20447 次

jBPM(四): 部署jBPM所用表到数据库_1


jBPM用数据库来存放定义好的流程文件和执行过程中的所用信息, 没有什么可说的, 在正式运行jBPM前我们得把jBPM所用表部署到数据库中. 本系列博客中所用数据库为MySql, 由于jBPM采用hibernate来做持久层处理,别的数据库跟MySql类似.

当然我们得先create一个database,这里在MySQL中新建一个名为"jBPM"的database.

一般来说, 有三种方式来往数据库里部署所用表. 以下是相应总结:

1, 手工部署. 顾名思义, 手工部署是指,手动地把所需表的sql脚本通过source命令(在MySQL)生成到数据库中.

在说具体步骤之前, 先来看为什么要这么做. 应该说在正式工作中很少有必要这么建表. 不过考虑到这样的手工建表有以下几个好处, 于是在开始阶段最好还是能体会下手工建表的步骤:
  • 有助于帮助我们从表间关系层面来理解jBPM的重要组件. 不用多说, 这些表是我们研究jBPM的第一手资料. 这里顺便说下, 当时不知道jBPM里可以看到现成的表生成语句,我用了一种非常规手段"截"下来建表语句.
  • 以此为实例来看Hibernate是怎么来生成建表语句的.应该说, 工作中很少用到Hibernate生成建表语句的功能,但心里一直想看下, 这里倒是提供了一个机会.
  • 以此机会来体验研究下ant脚本. 由于jBPM大量地用到了ant,这里通过这么一相对简单的实例可以提前热热身.
  • 最后一个相对实际一点的原因, 当时费了不少事,搞明白了,若不记下来,过段时间后就忘了.

好了, 有了上面的思想准备, 我们下面来说手工建表的具体步骤:
  • 利用ant命令生成相应建表语句. 起始时, jBPM并没有给每一个常用数据库生成建表语句, 我们得用ant命令自己生成. 这里以MySQL为例来说明.
  1. 修改JBPM_HOME/jbpm-db下的build.properties文件中的jbpm.3.location,使其指向"../jbpm", 即jbpm.3.location=../jbpm
  2. 确 保在是jBPM(三) 中提到的那个MockConnection已经实现了Connection接口下的方法.否则运行ant命令时会报错.这个文件在 JBPM_HOME\jbpm\src\java.jbpm.test\org\jbpm\persistence\db下.
  3. 在JBPM_HOME/jbpm-db目录下运行"ant mysql.scripts"命令. 这时还会报错. 报错大意为"请使用 -source 5或更高版本以启用泛型", 原来是ant默认是运行JDK1.4来运行. 而MockConnection里加了泛型. 但怎么来让ant以JDK1.5来运行呢? 直接在"ant mysql.scripts"命令后加" -source 5"不行. 先不管这个了, 把那个泛型<T>去掉.这样再执行ant mysql.scripts就成功了.

这样我们去JBPM_HOME\jbpm-db\build\mysql\scripts目录下,就能看到刚刚生成的建表语句.

  • 启 动MySQL,利用"use database jBPM"命令进入上面新建的database中, 执行source JBPM_HOME\jbpm-db\build\mysql\scripts\mysql.create.sql. 唰唰唰一段时间后, 通过"show tables"我们看到一共有33个表生成了. 大功告成!


这篇中写了不少了, 下篇将介绍后两种: 如何利用ant命令来自动建表,通过Java代码自动建表.