业务归档是一系列文件的集合 分发在一个jar格式的文件里。。 业务归档中的文件可以使jPDL流程文件,表单,类, 流程图和其他流程资源。
流程文件和流程资源必须 部署到流程资源库里 并保存到数据库中。
这儿有一个jBPM的ant任务来部署业务流程归档
(
org.jbpm.pvm.internal.ant.JbpmDeployTask
)。
JbpmDeployTask
可以部署
单独的流程文件和流程归档。
它们通过JDBC连接直接部署到数据库中。
所以在你部署流程之前
需要保证数据库正在运行。
创建和部署流程归档的例子 可以在发布包的examples目录下找到ant脚本(build.xml)。 让我们看一下相关部分。 首先,path用来声明包含jbpm.jar和它的所有依赖库。
<path id="jbpm.libs.incl.dependencies"> <pathelement location="${jbpm.home}/examples/target/classes" /> <fileset dir="${jbpm.home}"> <include name="jbpm.jar" /> </fileset> <fileset dir="${jbpm.home}/lib" /></path>
你使用的数据库的JDBC驱动jar应该也包含在path中。 MySQL, PostgreSQL和HSQLDB的驱动都包含在发布包中。 但是oracle的驱动你必须从oracle网站上单独下载, 因为我们没有被允许重新分发这个文件。
当一个业务归档被发布时,jBPM扫描
业务归档中所有以
.jpdl.xml
结尾的文件。
所以那些文件会被当做jPDL流程解析,然后可以用在运行引擎中。
业务归档中所有其他的资源也会作为资源
保存在部署过程中,然后可以通过
RepositoryService
类中的
InputStream getResourceAsStream(long deploymentDbid, String resourceName);
访问。
为了创建一个业务归档, 可以使用
jar
任务。
<jar destfile="${jbpm.home}/examples/target/examples.bar"> <fileset dir="${jbpm.home}/examples/src"> <include name="**/*.jpdl.xml" /> ... </fileset> </jar>
在jbpm-deploy被使用之前,它需要像这样进行声明:
<taskdef name="jbpm-deploy" classname="org.jbpm.pvm.internal.ant.JbpmDeployTask" classpathref="jbpm.libs.incl.dependencies" />
然后可以像这样使用ant任务
<jbpm-deploy file="${jbpm.home}/examples/target/examples.bar" />
表 4.1. jbpm-deploy
属性:
属性 | 类型 | 默认值 | 是否必填 | 描述 |
---|---|---|---|---|
file
|
文件 | 可选 |
被部署的文件。
.xml
结尾的文件会被当做流程文件部署。
ar
结尾,比如.bar或.jar,的文件
会被当做业务归档部署。
|
|
cfg
|
文件 | jbpm.cfg.xml | 可选 |
指向jbpm配置文件,它应该放在
jbpm-deploy
定义的classpath下。
|
表 4.2. jbpm-deploy
元素
元素 | 数目 | 描述 |
---|---|---|
fileset
|
0..* |
被部署的文件,表示成一个简单的ant的fileset。
.xml
结尾的文件会被当做流程文件部署。
ar
结尾,比如.bar或.jar,的文件
会被当做业务归档部署。
|
从4.2版本开始,jBPM拥有了一个像jBPM3一样的流程类加载器机制。
从流程中引用的类必须至少在下面三种方式之一是 有效的:
com.superdeluxsandwiches.Order
在流程文件中引用时,它会找到,当它在相同的业务归档中
的入门名称com/superdeluxsandwiches/Order.class
类会被缓存(key是结合了发布和上下文类加载器),
所以它应该比jBPM 3中执行的更好。
在实例中,一个包含了所有类的examples.jar被创建了,
并把它放在了JBoss服务器配置的
lib
目录下。 tomcat下操作相同。参考
install.examples.into.tomcat
和
install.examples.into.jboss
任务。在未来的一个发布版中
我们可能切换到业务存档自身包含的类。