本站首页    管理页面    写新日志    退出


«November 2025»
1
2345678
9101112131415
16171819202122
23242526272829
30


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7647020
建立时间:2006年5月29日




[JBoss]学习jbpm部署部分
软件技术,  电脑与网络

lhwork 发表于 2006/6/30 15:41:41

在经过了jbmp开始入门以及指南两章后,对JBPM有个大概的了解。下面我们来看看JBPM部署方面的知识。接下来介绍如何把JBPM部署到不同的环境中。JBPM可以在许多不同的环境进行部署,其中包括ant task(应该算是个附属脚本,不应该算做部署环境吧),swing client,web app,ejb,web services中。部署jbpm到j2se环境:这应该算是jbpm可以部署的几种方案中最简单的,把jbpm应用到一个简单java main程序中,一个单元测试中,一个swing应用中。作为最最基础的,jbpm能够被应用在简单的java程序中。你只要把jbpm.core.jar添至系统classpath中并且配置好数据库。在java程序中你就可以获得jbpm服务org.jbpm.JbpmServiceLocator下面给出几种部署:1、  在webapp中:如果一个servlet容器:tomcat、resin等。2、  在一个ant-task:jbpm包含一个ant-tasks,用来给process archive打包并且部署一个process archive。3、  JUnite test中:jbpm的默认配置是想开发测试process archives,应用于一个瞬时、内存数据库中,那也就意味着你不用建立一个独立数据库和初始化它。Jbpm检测到没有jbpm表,那么就会自动建好。这里应用的是hibernate框架来实现对象持久层。4、  在一个定制的app中:当你的应用需要整合一个工作流管理系统,你可以仅仅使用jbpm作为你们应用当中的一个组件,甚至于您系统的用户都没注意到使用jbpm这一点。部署jbpm到一个web app中:1、  安装jdbc驱动(一般就是下载相应的jar文件追加classpath或者copy到WEB-INF/lib目录下)2、  把jbpm.properties放到WEB-INF/classes中3、  这些jar文件放到WEB-INF/lib目录下a)       jbpm.core.jarb)       hibernate-2.1.1.jarc)        c3p0.jard)       dom4j.jare)        cglib2.jarf)         ehcache.jarg)       odmg.jarh)       commons-collections.jari)         commons-logging.jarj)         commons-beanutils.jark)       commons-lang.jar4、  jbpm.war到app下(原文没写,我猜也是应该如此的。)等我测试后在公布正确步骤,会在今后文章中完善。部署jbpm到一个J2EE服务器中:简单的部署在J2EE container中,jbpm已经写了一个ejb-wrapper来包裹jbpm api,接下来的大致意思就是:利用ant可以帮助您把jbpm部署到jboss中。这一点我测试过了。其他请参看原文。配置:适当的配置jbpm,请遵从下面4种配置机制:1、 把jbpm.properties放到classloader能够找到的位置,因为它加载的时候使用getResourceAsStream方法。不懂的可以查看jdk。大致就是放到classpath可以找到的位置,如web app中的WEB-INF/classes中,在tomcat启动后就会自动把此目录下文件加载到classpath中。2、  在调用getInstance方法之前加载配置文件(properties)。3、  在调用getInstance方法之前调用配置文件(classloader,string)。4、  对于创建复杂不同的jbpm配置实例在相同的jvm(classloader),你可以用jbpm配置和servicelocator的构造器并且不用做任何静态初始化和配置。配置参数如下: 属性值描述默认值hibernate.*@see the hibernate docs在jbpm配置文件中直接完成hibernate的配置默认是一个内存数据库hsqldb。主要是为测试而用的jbpm.create.tables{ only-if-not-present | never }方便应用,jbpm在最开始启动时候会检测是否存在表,如果没有则会自动创建。产生ddl语句开始drop表和约束然后创建表和约束only-if-not-presentjbpm.create.tables.log{ true | false }Ddl语句创建表是否被log输出.falsejbpm.create.tables.query{ a plain SQL query }简单的sql查询语句,这个属性会检测表是否存在,并且这个属性仅仅用在属性“'jbpm.create.tables'”被设置成’only-if-not-present'的情况。如果执行sql查询语句出现异常,那么jbpm会假定表不存在.SELECT ID FROM JBPM_DEFINITION WHERE ID = 1jbpm.apply.transactions{ yes | no }Jbpm如何处理transaction(事务)'yes'意思是对于执行每个更新方法把事务应用到jdbc连接上。其中排除定义在*readservices中的更新方法。'no'意味着将不会应用任何事务处理操作。’no’能够应用在一个容器或者用户自己提供的jdbc连解决中。 yesjbpm.file.mgr{ database | filesystem | the class-name of a class that implements org. jbpm. persistence. FileMgr }Jbpm如何存储文件(例如在process archive中的类文件)。此配置被添加是因为一些数据库驱动(例如oracle)不能很好的处理二进制文件。databasejbpm.file.mgr.directory   Jbpm存储文件的根目录的名字,设置成如:/usr/jbpm或者c:/data/jbpm-no default specified-jbpm.validate.xml{ true | false }如果这个属性设置为false的话,Process archive分析将不会有效验证processdefinition.xml文件。 truejbpm.id.generator{ default | the class-name of a class that implements org. jbpm. persistence. IdGenerator }产生ID方式。用于jbpm持久对象。 org. jbpm. persistence. hibernate. SequenceBlockIdGeneratorjbpm.id.generator.node.id{ an integer between 0 and 65535 }在cluster中这个节点(node)的唯一ID0jbpm.id.generator.bocksize{ an integer }(不知道怎么翻译好,下面是原文)大致意思是ID产生模式的区块大小。100jbpm.id.generator.configuration{ same | the resource of the id generator hibernate properties }ID产生器需要一个在分离事务中的session。因此session工厂用于产生ID,ID可以不从数据源管理的container中获得。所以如果你不使用datasource(数据源)在其中管理事务的话,你可以使用默认值。'same' 意思是和其他配置参数采用相同配置属性来为ID产生器的session工厂。否则,采用hibernate配置来产生使用ID产生器session工厂。(上面这段话可能翻译有误,大致意思如此。) samejbpm.log.stdout{on|off}配置公用(普通)log输出。当设置为off,jbpm不再配置公用(普通)log。onjbpm.log.default{ trace | debug | info | warn | error | fatal }默认的log级别。errorjbpm.log.package.* (whererepresents any package name){ trace | debug | info | warn | error | fatal }以给定的值覆写jbpm默认的log级别。jbpm. log. package. org. jbpm= debugjbpm.scheduler.wait.periodlong在schduler polls中等待的毫秒数。5000jbpm.execute.actions{ true | false }如果设置为true,jbpm将执行指定的action handler。可以设置为false,为了测试目的以免执行业务流程。trueJBPM数据库:概述:Jbpm存储所有信息在数据库中:1、  过程定义2、  流程执行的运行时信息3、  流程logSchema generation默认状态下,第一次访问数据库时候,jbpm将会检测表是否存在。如果不存在那么jbpm数据库表将会被自动创建。这可以在上面配置信息中找到’jbpm.create.tables’针对一个数据库的schema能够在一个文件中创建,按照下面的步骤:1、  更新文件:${jbpm.home}/core/schema.generation.properties来反射你选择的数据库。默认的数据库是Hypersonic DB。在这个文件里有样本生成。可以仿照生成自己需要的文件。2、 在文件夹${jbpm.home}/core用ant generate.dll产生schema。产生的文件在${jbpm.home}/target/sql/create-jbpm-database.sql更换数据库:1、  更新文件core/schema.generation.properties2、  把对应的jdbc驱动放到lib目录(classpath能够找得到)3、  在dos(命令提示符)下cd到打开core目录4、  执行ant generate.dll5、  现在,你已经产生dll脚本在${jbpm.home}/target/sql/create-jbpm-database.sql6、  当运行jbpm时候,确信你提供了正确的hibernate配置。在上面的配置中已经介绍。一些其他注意事项:1、  有一些数据库想firebird和oracle需要添加如下属性配置到jbpm.properties:Hibernate.query.substitutions=true 1,false 02、校验数据库中的text类型的长度,默认一个string类型是255长度。你可以以两种方式调整:通过增加长度参数,在hibernate mapping 文件中像这样:<property name="configuration" type="string" length="10000"/>, 或者通过手动更新刚才用ant产生的dll脚本。APPSERVER 兼容性:Scheduler:Jbpm有一个scheduler。ActionHandler实现器(和其他代理实现类)可以通过schedulerservices来schedule工作。SchedulerService可以在ExecutionContext中的getSchedulerService方法来进行访问。Jbpm的scheduler包括4部分:1、  scheduler service:允许schedule和取消一次作业。实际上scheduler service仅仅插入schedule和移除jbpm数据库中的一次作业记录。在某一个过程执行事件actions能被执行,在actions里面,你可以schedule和取消一次作业。2、  scheduler server:它是一个能够检查一次作业取消还是执行的组件。Scheduler server应该比较有规律(例如每隔5m)就被调用一次。为完成此功能,jbpm提供3和4功能。3、  scheduler servlet:响应request的servlet。通知2来检查工作。4、  scheduler client:一个非常简单的java程序,用来一个request给3。时间间隔一般比较小(几秒)。一个关于如何在过程定义中使用scheduler的例子,请参看scheduler test:1、  core/src/java/org/jbpm/delegation/action/ScheduleJobActionHandler.java是一个可配置的用来schedule一次作业的acition。2、  core/src/java/org/jbpm/delegation/action/CancelJobActionHandler.java是一个可配置的用来取消一个或者多个作业的action。3、  core/src/test/resources/process/schedulingprocess.xml查看上面两个文件如何使用在jboss cluster中的jbpm这里讲的是如何在jboss cluster部署jbpm 企业bean。前提:你需要有两个或者更多的计算机,并且预先装好jvm和ant。可选地,你能够在一个计算机上运行多个jboss实例,但是这种情况,这里并没有介绍。安装:+----------------+   | Node 1         | | +------------+ | | | Hypersonic |.|...................................... . . . | | Database   | |            :                    : | | for jBpm   | |  +---------:------+   +---------:------+ | +------------+ |  | Node 2  :      |   | Node 3  :      | |       :        |  |         :      |   |         :      | | +------------+ |  | +------------+ |   | +------------+ | | | jBpm ejb   | |  | | jBpm ejb   | |   | | jBpm ejb   | |  | | module     | |  | | module     | |   | | module     | | | +------------+ |  | +------------+ |   | +------------+ | |       !        |  |         !      |   |         !      | +-------!--------+  +---------!------+   +---------!------+         !                     !                    !               !                     !                    !             !!!!!!! remote application clients !!!!!!!!!!!!!!在每个node上做如下操作:   1. 安装jboss3.2.3或者更高版本   2. 更新 jbpm.home目录里的build.properties   3. 在${jbpm.home}里运行ant build   4. 在${jbpm.home}里运行'ant configure.jboss.3.2.3+'    5. 在文件 ${jboss.home}/server/jbpm/deploy/jbpm-ds.xml 更改 下面一行。 <connection-url>jdbc:hsqldb:hsql://localhost:1701</connection-url>请使用node1的ip,不要使用localhost(即使是在node1上也是不要使用localhost)。切记!在node1上执行下面操作:   6. 运行'{jboss.home}/bin/run.bat -c jbpm'   7. 在目录 ${jbpm.home}/ejb 'ant deploy' 将会创建 ${jbpm.home}/ejb/target/j2ee/jbpm.ejb.jar然后copy 它到 ${jboss.home}/server/jbpm/farm (这将稍后是部署ejb模块到所有node上)   8. 在目录${jbpm.home}/ejb中运行 'ant deploy.process.archives' 上载process archives到数据库中。在node2和其他没有数据库的节点(如3),做如下操作:On nodes 2 and higher (=the ones without a database), also do the following :   9. 删除文件 ${jboss.home}/server/jbpm/deploy/jbpm-db-service.xml  10. 从文件 ${jboss.home}/server/jbpm/deploy/jbpm-ds.xml 中移除下面这一行:'<depends>jboss:service=JbpmDatabase</depends>'开启所有node的服务: '{jboss.home}/bin/run.bat -c jbpm'这时,所有node 的准备工作就做好了。在目录${jbpm.home}/ejb 下运行 'ant test'


阅读全文(5555) | 回复(1) | 编辑 | 精华
 


回复:学习jbpm部署部分
软件技术,  电脑与网络

最爱喝可乐(游客)发表评论于2006/7/26 12:36:56

其中更改数据库中的 1、  更新文件core/schema.generation.properties    这个文件在哪里呀?    找不到! 


个人主页 | 引用回复 | 主人回复 | 返回 | 编辑 | 删除
 


» 1 »

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.078 second(s), page refreshed 144791394 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号