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为例来说明.
- 修改JBPM_HOME/jbpm-db下的build.properties文件中的jbpm.3.location,使其指向"../jbpm", 即jbpm.3.location=../jbpm
- 确
保在是jBPM(三)
中提到的那个MockConnection已经实现了Connection接口下的方法.否则运行ant命令时会报错.这个文件在
JBPM_HOME\jbpm\src\java.jbpm.test\org\jbpm\persistence\db下.
- 在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代码自动建表.