`
zhangym195
  • 浏览: 121531 次
  • 性别: Icon_minigender_1
  • 来自: 黑龙江
社区版块
存档分类
最新评论

jBPM jPDL 用户开发手册 - 第5章

阅读更多

5章部署

jPDL是可嵌入式的BPM引擎,意味着你可以使用并嵌入jPDL库到你的java项目中,而不用再安装一个独立的产品然后再同它进行集成。它最关键的一个方面就是尽可能的最小化依赖性。本章将讨论jbpm库和他们的依赖关系。

5.1 jBPM

jbpm-jpdl.jar 是jpdl功能的核心库。

jbpm-identity.jar是一个包含了身份组件的可选库,身份组件将在12.11 身份组件节中描述。

5.2 Java运行时环境

jBPM 3 要求运行在 J2SE 1.4.2版本以上。

5.3第三方库

所有库都可以在lib目录中找到,这些库也许是依赖性的。

在一个最小的部署中,你可以创建并运行只放commons-logging 和 dom4j库到你的classpath路径中就可以用jBPM。注意那些需要持久化到一个数据库中的流程是不能被支持的。如果你不使用流程xml解析的话dom4j库可以被移除,但取而代之的是要用程序来构建对象图。(译者注:将流程的xml文件以字符串的方式写在程序中)

 
使用
描述
commons-logging.jar
Jbpm日志和hibernate

jBPM代码通用日志记录。通用日志库可以被配置来调度日志(如java 1.4的logging、login4j等等),参考apache commons 用户手册 来查找更多的关于如何配置commons logging的信息。如果你使用log4j,最容易的方法是将log4j的lib库和log4j.properties放在你的类路径里。commons logging将自动检测并使用这些配置。

dom4j.jar
流程定义和持久hibernate化
解析XML
表5-1
典型的jBPM部署将包含流程定义的持久化存储和流程执行。那样的话,jBPM没有任何的hibernate以外的依赖和相关库文件。
当然,hibernate所要求的库相关环境和结属性你还是要用到的。详细的请参考hibernate的文档。下一个表显示了一个独立的纯POJO部署环境。
 
 
使用
描述
hibernate3.jar
Hibernate持久性
最好的O/R映射工具
antlr-2.7.6rc1.jar
Hibernate持久性查询解析所使用
解析器(parser)库
cglib.jar
Hibernate持久性

Hibernate代理( proxies)用的反射库

commons-collections.jar
Hibernate持久性
 
asm.jar
Hibernate持久性
Asm字节代码核心库
表5-2
beanshell库是可选的。如果你包含它,你就不能在jBPM流程语言中使用beanshell集成,而且你将得到一个日志消息说jbpm现在和以后都不能加载Script类,脚本元素将不再可用。
使用
描述
bsh.jar
beanshell 脚本分析器
只在脚本和决策中使用。当你不用这些流程元素时,beanshell库可以被移除,但是然后你不得不在hibernate.cfg.xml文件中写出Script.hbm.xml的映射行。
表5-3

5.4 Web应用

在下载包的deploy目录中,你能够找到jbpm-console.war文件。它就是包含了在JBoss上运行这个web应用的jPDL库、配置文件和所需的库。
这个war文件根本就没有包含hibernate库。那是因为JBoss已经包含了hibernate库。要是想在其他的服务器(像Tomcat)上运行这个web应用,你不得不将hibernate的库放在你的war文件的WEB-INF/lib目录中。最简单的方法是使用这个目录中的ant构建脚本。
此外,这个war文件可以给你一个好的指导,即如何在自己的web应用中部署jbpm库和配置文件。
在这个web应用的web.xml文件里,JobExecutorServlet被配置完了。这样当jbpm-console.war包被部署时将开始JobExecutor,它是标准java平台上执行定时器和异步消息的基础。

5.5企业包

在下载包的deploy目录中,你能够找到jbpm-enterprise.ear文件。它就是J2EE 1.4兼容企业包,它包括:jPDL库、jPDL配置文件、jPDL web控制台和几个EJB(enterprise bean)。在这个包里,jBPM被配置好了的使用在应用服务器(像JBoss)。异步消息服务一定是JMS和EJB定时服务的调度服务。

所以这个.ear文件没有开始JobExecutor,持久性服务是被配置到整个JTA事务中去了。
在企业包中是下列文件:

l  jbpm-console.war:web控制台应用,适用于J2EE集成

l  jbpm-enterprise.jar:企业bean支持

l  lib/jbpm-configs.jar:配置文件

l  lib/jbpm-identity.jar:身份组件类

l  lib/jbpm-jpdl.jar:标准jPDL类

l  meta-inf/application.xml:J2EE应用描述符

jbpm-enterprise.jar 包含下列 EJB 组件:

l  CommandServiceBean

l  CommandListenerBean

l  JobListenerBean

l  TimerEntityBean

这些bean是兼容于J2EE 1.4 / EJB 2.1,允许部署在各种应用服务器上。注意然而那个jBPM却只能提供JBoss应用服务器的部署描述符。所有的bean被部署都有事务属性的需求。EJB类的源代码和接口规范是在src/enterprise目录和javadoc所在的doc/javadoc-enterprise目录中。详细的描述可以在9.1 企业Bean 中找到。

jbpm-configs.jar 包含下列文件:

l  jbpm.cfg.xml:jBPM 配置

l  hibernate.cfg.xml:Hibernate 配置

l  jbpm.mail.templates.xml:e-mail 模板

9.2 jBPM企业配置9.3 Hibernate 企业配置节可以查看前两个文件中的企业特定设置。最后的文件在17.4 邮件模板节也被描述了。

5.6 jPDL运行时和套件

5.6.1运行时

jPDL运行时是你开始jPDL的一切:jpdl库、第三方库、示例和文档。它不包含图形设计器和web控制台工具,这两个被放在了套件包中了。
目录
内容
config

包含所有的配置文件。注意为了容易测试和开发,当前的hibernate 配置点是一个jbpm内存数据库

db
包含了在你的DB中创建jPDL表的脚本。它包括了成立于数据库兼容性的wiki页的副本
doc
包含了jpdl和身份(identity)组件源代码的用户开发指南和javadocs文档
examples
每个示例都是一个独立可以使用ant或eclipse来运行的项目
lib
所有第三方库和他们的协议
src
jpdl 和 身份组件的源代码目录.
表5-4 jPDL运行时目录

5.6.2套件

jPDL套件是一个带有两个工具的jPDL运行时的扩展:eclipse的图形设计器插件和带有预配置的部署了jPDL运行时和web控制台应用的JBoss服务器。包括的工具全都是预配置的可以恰好一起工作的缺省配置(out of the box)。

目录
内容
designer
这个设计器(designer)是允许以图形流程编辑jPDL流程文件的eclipse插件。查看designer目录下的readme.html文件以得到更多的安装设计器的指导
server
真正的JBoss 应用服务器,其上部署了jPDL 运行时和jPDL web控制台
表5-5 jPDL套件附加目录

5.6.3在套件服务器上配置日志

如果你想这套服务器上查看debug 日志,更新jpdl-suite-home/server/server/jbpm/config/log4j.xml 文件,请查找:
   <!-- ============================== -->
   <!-- Append messages to the console -->
   <!-- ============================== -->
 

   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">

      <errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>

      <param name="Target" value="System.out"/>

      <param name="Threshold" value="INFO"/>

并用参数param Threshold,改变INFO 为 DEBUG。

然后你就可以得到所有组件的debug日志。为限制debug日志的数量,进一步地看下面的文件直到你看到“Limit categories”,你也许想加一个tresholds为指定的包,如:

   <category name="org.hibernate">

      <priority value="INFO"/>

   </category>
 
   <category name="org.jboss">

      <priority value="INFO"/>

   </category>
 

5.6.4 在套件里调试流程

首先,假设你刚刚开始开发一个新的流程,是很容易的去使用纯JUnit测试并且在内存中运行流程,像第3章 教程中解释的那样。
但是如果你想在控制台中运行流程并调试(debug)它的话,这里有两步你需要做:
1) 在jpdl-suite-home/server/server/bin/run.bat文件中,结尾的某个地方,有一行像:
rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%
因为备份的原因,等把那行做个拷贝,然后移除第一个“rem”并改变suspend=y为suspend=n。然后得到下列这样的:
rem set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=y %JAVA_OPTS%
set JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n %JAVA_OPTS%
2) 用你的IDE连接到远端的java应用上,使用localhost端口是8787。然后你可以增加一个断点并在控制台中运行流程直到遇到断点。
 
真的很对不住大家,这篇文章的后半部分无论如何也发不上来了,所以没有办法了,我只能用附件的方式传上来吧,大家可以看附件
:< javaeye 的编辑器不知道咋的了 :~~~55555~~~
终于能传上来了  哈哈
分享到:
评论
1 楼 yuan1129 2008-08-16  
不知道如何将部署到database里的ProcessDefinition取出来保存为xml?

相关推荐

Global site tag (gtag.js) - Google Analytics