在使用Jbpm时,我们通常的作法是把流程定义存储到数据库中,然后在程序中从数据库中加载流程定义,把流程定义存储到数据库中的过程就叫做流程定义的部署。
Jbpm为其流程定义使用了一种打包机制,即把流程定义及其相关文件打包到一个zip格式的压缩包中,称为流程档案,然后通过部署这个压缩包把流程定义存储到数据库。
注:以下内容基于数据库表已经存在的基础,数据库表的创建在其他文章中单独描述。
一、Ant任务完成打包和部署
Jbpm发行包中定义了ant任务来完成打包和部署任务。
1.打包流程档案
<target name="build.processes" depends="compile" description="builds the example processes">
<mkdir dir="build/websale/classes" />
<copy todir="build/websale">
<fileset dir="src/process.examples/websale.par" />
</copy>
<copy todir="build/websale/classes">
<fileset dir="build/classes.examples" includes="org/jbpm/websale/**" />
</copy>
<zip destfile="build/websale.process">
<fileset dir="build/websale" />
</zip>
</target>
这个任务是用来打包流程定义的,它依赖于compile任务,compile是用来编译Jbpm项目的,如果我们自己的项目已经有独立的编译机制,则无需依赖这个任务,只需要拷贝相关文件到指定的打包目录即可。通过这个任务我们可以看到,流程档案中不仅仅包括了流程定义文件,还可以包括其它相关文件,如流程定义的图片文件、流程定义中Action和Task等的实现类的Java ByteCode(即.class文件)等信息。在上面任务中把流程档案打包为websale.process文件,实际使用时流程档案文件的扩展名可以任意。
有以下几点需要注意:
每个流程档案只能打包一个流程定义,如果有多个流程定义则需要打包多个流程档案;
在每个流程档案包的第一层中必须包含流程定义的核心文件processdefinition.xml;
.class文件必须存在于classes目录中。
如下结构: