- 浏览: 144334 次
- 来自: ...
文章分类
最新评论
-
nocb:
太感谢了, 我调了2天,始终找不到原因,
DataOutputStream writeBytes(String s) 中文乱码--ZT -
jbeduhai:
发贴能成功吗,我执行的怎么是说没有登录呢,前面登录是正常的,发 ...
ZT---httpclient如何保持session会话模拟登录后的操作 -
chwanga:
很详细啊,廓然开朗,感谢楼主
filter servlet 区别--ZT -
JMS_Exception:
xvm03 写道promzaid 写道.net 还是 java ...
Java的字符流和字节流 -
xvm03:
promzaid 写道.net 还是 java java
Java的字符流和字节流
jbpm工作流入门教程
原帖:http://blog.csdn.net/huxin1/archive/2008/04/25/2329365.aspx
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
1.
jBPM的简单介绍
jBPM
是JBOSS下的一个开源java工作流项目,该项目提供eclipse插件,基于Hibernate实现数据持久化存储。
参考
2.
jBPM
和myeclipse的冲突
当eclipse安装了myeclipse和jBPM时候,可能有冲突,具体表现在jBPM的流程设计器不能在eclipse中使用。
3.
Hibernate连接mysql数据库的一般参数
下面的配置参数,根据需要可以修改:
jbpmtest
是mysql中的schema的名字;
GBK
是字符集,可以根据需要修改;
username=root
,mysql数据库的用户名是root
;
password=mysql
,mysql数据库的用户密码是mysql
;
hibernate.dialect
=
org.hibernate.dialect.MySQLDialect
hibernate.connection.driver_class
=
com.mysql.jdbc.Driver
hibernate.connection.url=
jdbc
:
mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK
hibernate.connection.username
=
root
hibernate.connection.password
=
mysql
hibernate.show_sql
=
true
hibernate.c3p0.min_size=
1
hibernate.c3p0.max_size=
3
4.
Hibernate连接Oracle数据库的一般参数
hibernate.dialect
=
org.hibernate.dialect.Oracle9Dialect
hibernate.connection.driver_class=
oracle.jdbc.driver.OracleDriver
hibernate.connection.url
=
jdbc:oracle:thin:@
localhost
:1521:orcl hibernate.connection.username
=
jbpm
hibernate.connection.password
=
jbpm
5.
为jBPM创建数据库表等内容
5.1.
为mysql创建数据库以及数据内容
JbpmSessionFactory.buildJbpmSessionFactory
().getJbpmSchema().dropSchema();
JbpmSessionFactory.buildJbpmSessionFactory
().getJbpmSchema().createSchema();
这2个语针对mysq有效.
5.2.
为oralce创建数据库以及数据内容
JbpmSessionFactory.buildJbpmSessionFactory
().getJbpmSchema().dropSchema();
JbpmSessionFactory.buildJbpmSessionFactory
().getJbpmSchema().createSchema();
上面的语句对oralce无效。
模型目录jBPM\jbpm_database\jBPM_oralce10g.pdm 是jBPM的Oralce模型,包含对应的Sequence的信息.
需要在数据库中创建 Sequence name=hibernate_sequence
5.3.
流程信息保存到数据库
JbpmSessionFactory
factory = JbpmSessionFactory.buildJbpmSessionFactory();
JbpmSession session = factory.openJbpmSession();
GraphSession graphSession = session.getGraphSession();
session.beginTransaction();
/// new ProcessDefinition 实例
ProcessDefinition myProcessDefinition = null;
ProcessInstance processInstance = new ProcessInstance(processDefinition);
processInstance.getContextInstance().setVariable("myvar","xxx");
///
graphSession.saveProcessDefinition(myProcessDefinition);
session.commitTransaction();
session.close
();
jBPM和Hibernate,MySQL的使用中会遇到字符集的问题.
需要注意几个地方。
5.4.
在Mysql安装过程指定字符集
在Mysql安装过程中指定相应的默认字符集是GBK
5.5.
Hibernate.properties文件中的字符集设置
hibernate.connection.url=jdbc:mysql://localhost/jbpmtest?useUnicode=true&characterEncoding=GBK
5.6.
hibernate.cfg.xml 文件中的字符集设置
<property name="hibernate.connection.url">jdbc:mysql://192.168.1.2/jbpmtest</property>
5.7.
MySQL的配置文件的修改:
my.ini中 default-character-set=GBK
注意有2处需要修改
6.
为流程定义变量
分成3种流程变量
全局变量(全局流程变量)
全局临时变量(全局流程临时变量)
局部变量(流程某个接点内有效的变量)
@see org.jbpm.context.exe.ContextInstance
目前还没有使用过局部变量(流程某个接点内有效的变量)
流程变量的定义
6.1.
流程变量的类型
·
java.lang.String
·
java.lang.Boolean
·
java.lang.Character
·
java.lang.Float
·
java.lang.Double
·
java.lang.Long
·
java.lang.Byte
·
java.lang.Short
·
java.lang.Integer
·
java.util.Date
·
byte[]
·
java.io.Serializable
·
classes that are persistable with hibernate
所有基本类型的包裹类型,以及实现了Serializable
的类型都可以作为流程参数变量使用,注意参数类不能是一个类的内部类或者属性类(除非包含参数类的类实现了Serializable接口)
参考 org.jbpm.context.exe.VariableInstance
6.2.
流程变量的使用
l
变量的定义和获取
void
ContextInstance.setVariable(String variableName, Object value);
void
ContextInstance.setVariable(String variableName, Object value, Token token);
Object ContextInstance.getVariable(String variableName);
Object ContextInstance.getVariable(String variableName, Token token);
l
Variables can be deleted with
ContextInstance.deleteVariable
(
String variableName);
ContextInstance.deleteVariable
(
String variableName, Token token);
6.3.
Variable lifetime
一个变量在被定义后,在变量从ContextInstance
删除前,都可以被访问。当变量被删除后,去获取该变量将返回为空。
6.4.
自定义类的实例作为流程变量
如果一个类的实例要作为流程变量使用,该类需要实现java.io.Serializable
接口,并且定义序列化版本.
//一个可以作为流程变量使用的类
class Wdz implements Serializable{
//为类指定序列化版本号
private static final long serialVersionUID = 1L;
private String name="wdz";
private int age=10;
public String toString(){
return "name="+name+",age="+age;
}
}
上面的例子中,如果把类Wdz作为类WdzParent内部类使用,然后当成流程变量使用,那类WdzParent必须 也实现Serializable接口,否则会有问题.
6.5.
Transient variables
流程的历史变量是不能持久化的,作用范围是对整个流程全局有效的。
在ContextInstance类内部,采用的是一个Map来存储TransientVariable
的信息
参考代码
org.jbpm.context.exe.ContextInstance 的源代码。
主要的相关方法
public
void deleteTransientVariable
(java.lang.String name)
public
void setTransientVariable
(java.lang.String name,
java.lang.Object value)
public
java.lang.Object getTransientVariable(
java.lang.String
name)
6.6.
Variables overloading
当一个变量和流实例关联(变量名字=”wdz”,value=”test”)
,如果在设置一个变量
(变量名字=”wdz”,value= new Integer(10)) ,
那最后变量(变量名字=”wdz)的值是Integer(10)。
这称之为overload.
6.7.
Variables overriding
如果父流程有变量A(值=”value1”),子流程又定义了变量A值=”value2”,那在子流程范围内,获取变量A的值,那结果是值=”value2”。这是遵循一般语言的局部变量在它的局部范围内override上级变量。
6.8.
流程变量的持久化
它依赖于流程实例的持久化,非TransientVariable
随
流程实例的持久化一起被保存。
保存在数据表jbpm_variableinstance
参考 org.jbpm.context.exe.VariableInstance
6.9.
Customizing variable persistence (可以进一步了解)
User java
object <---> converter <---> variable instance
也就是自定义类的持久化需要定义自己的
converter
和变量实例类
converter
和变量实例类需要继承
org.jbpm.context.exe.VariableInstance
converter
需要实现
org.jbpm.context.exe.Converter
接口
一
工作流虽然还在不成熟的发展阶段,甚至还没有一个公认的规范标准。但其应用却已经在快速展开,这说明市场对工作流框架的需求是急迫而巨大的。
我们公司的后台短信管理系统涉及短信编发、领导层层审核等操作,这是一个比较典型的工作流系统。过去我们用的工作流引擎是 shark
,然后在使用后发现其过于庞大,后台数据库操作频繁而未进行优化,直接导致的后果就是前台操作缓慢。于是经研究决定,将工作流引擎由 shark 换成
jBPM 。
jBPM
之前是一个开源软件,后加入 JBoss 组织。正好我们公司也是用 JBoss 的。不过 jBPM 并没有绑定在 JBOSS 上, Tomcat 等也可以使用它。
jBPM
的正处在不断发展中,做为开源软件的特点,其设计变化往往很大。所以一些过去的资料可能已经不适用了。于是作者根据自己的使用经验,重新整理出这份文档,以备学习参考。
注:本文使用的
jBPM
版本为
3.1.1
环境准备
1
、安装
JDK
所有 JAVA 开发第一个需要安装的,没什么好说的。记得把系统变量 JAVA_HOME 设上。
2
、安装
Ant
Ant
是使用 jBPM 必须的一个工具。 jBPM 中的很多操作都要用到 Ant 。
安装方法:
( 2 )解压到 D:\ant (当然其他目录也可以)。
( 3 )设置如下系统变量: ANT_HOME=d:\ant 。
( 4 )把 %ANT_HOME%\bin 加入到系统变量 PATH 中。
3
、安装
Eclipse
Eclipse
不是开发 jBPM 必须的工具,但它是对 jBPM 开发很有帮助的工具,特别是 jBPM 提供了一个 Eclipse 插件用来辅助开发 jBPM 。关于 Eclipse 的安装不赘述了,本文用的版本是: Eclipse3.2
安装
jBPM
jBPM
的下载地址: http://www.jboss.com/products/jbpm/downloads
l
JBoss jBPM
是
jBPM
的软件包
l
JBoss jBPM Starters Kit
是一个综合包,它包括了
jBPM
软件包、开发插件、一个配置好了的基于
JBoss
的
jBPM
示例、一些数据库配置文件示例。
l
JBoss jBPM Process Designer Plugin
是辅助开发
jBPM
的
Eclipse
插件。
l
JBoss jBPM BPEL Extension jBPM
关于
BPEL
的扩展包
本指南选择下载:
JBoss jBPM Starters Kit
。下载后解压到
D:\jbpm-starters-kit-3.1
,目录下含有五个子目录:
l
jbpm
jBPM
的软件包
l
jbpm-bpel
只含有一个网页
l
jbpm-db
各种数据库
hibernate
配置文件示例,有些还包含了相应的
jdbc
驱动程序。
l
jbpm-designer
辅助开发
jBPM
的
Eclipse
插件,具体在
jbpm-gpd-feature
子目录中
l
jbpm-server
一个已经配置好了的基于
JBoss
的
jBPM
示例
.
感觉下工作流
前面我们说了,在 JBoss jBPM Starters Kit 的 jbpm-server 目录是一个已经配置好的了 jBPM 示例,那么让我们来感觉一下 jBPM 做出的东西吧。
双
击 jbpm-server 目录下的 start.bat 文件,启动 JBoss 服务。这时会打开一个 DOS
窗口,启动完成后,日志会不断输出,其中最后一句是“ 13:55:39,937 DEBUG [StaticNotifier] going to
wait for (CMD_EXECUTOR, java.lang.Object@1df59bd) ”,这表示 jBPM
在开始工作了,它不断进行轮询。
发表评论
-
页面弹出登录框如何通过httpclient进行登录
2011-01-04 16:17 1365页面弹出登录框如何通过httpclient进行登录 h ... -
转贴--在Struts2的Action中取得请求参数值的几种方法
2010-10-27 18:33 1213在Struts2的Action中取得请求参数值的几 ... -
jdbc连接
2010-08-02 17:43 745Connection conn = null; ResultS ... -
几个需要仔细阅读的源码
2010-05-19 23:20 730OSGI spring jboss -
listener,filter区别--ZT
2010-04-28 16:05 1695web.xml里面可以配置Filter和Listen ... -
JDK 1.4中存在一个有关编--ZT
2010-04-23 21:30 1058在JDK 1.4中存在一个有关编码的问题。简要描述如下: ... -
Servlet不是单例的--ZT
2010-04-22 20:59 1903Servlet不是单例的.不过一般来说一个servlet只会有 ... -
java 多态的理解--ZT
2010-04-18 00:43 1089如何理解Java多态性?通过类型转换,把一个对 ... -
JAVA 深入学习
2010-04-17 14:37 821java 设计模式:策略模式(内部类的使用),装饰模式(IO) ... -
JAVA和JAVAC 命令行--ZZ
2009-09-27 15:45 881JAVA和JAVAC 命令行 ... -
工作流学习-JBPM(一)
2009-09-27 11:25 822展翅飞翔 致力于J2EE与中间件整合方面的研 ... -
详细解析Java中抽象类和接口的区别
2009-03-03 20:38 689详细解析Java中抽象类和 ... -
比较Vector和ArrayList的不同
2009-03-03 20:35 1219――比较Vector和ArrayLi ... -
string,stringbuffer,stringbuilder比较
2009-03-03 20:33 1238出于方便的考虑,我们在进行字符串的内容处理的时候往往会 ... -
java面向对象浅析系列2
2009-03-03 20:21 703java面向对象浅析系列2——抽象类、接口与多继承 有时 ... -
java面向对象浅析系列1
2009-03-03 20:21 740java面向对象浅析系列1 ... -
java1.5线程池简单介绍
2009-03-03 20:17 2272JDK1.5中的线程池使用简介 在多线程大师Doug L ... -
一个JDBC简单连接
2009-03-03 20:04 722一个最基本的JDBC连接: Conn ... -
为什么要使用泛型?
2009-03-03 19:59 1488类型安全的List Java的一 ... -
泛型的注意事项
2009-03-03 19:58 9681、不可以用一个本地类 ...
相关推荐
本教程将带你深入理解JBPM的核心概念,以及为何在IT行业中学习和应用工作流至关重要。 首先,让我们了解工作流的基本概念。工作流是指一系列相互关联的任务,这些任务按照一定的顺序执行,以完成一个业务过程。在...
工作流入门必经的四个简单例子。 vacate主要说明基本使用。 UserModel说明如何同用户模型相结合。 ForkJoin主要说明Fork结点和Join结点的使用。 countersignature主要说明如何持久化和实现较复杂的task node控制,...
- **jbpm工作流入门教程.pdf**:这可能是关于jbpm基础知识和实践操作的指南,包括流程设计、部署、执行等。 - **jb51.net.txt**:可能包含jb51网站上的相关文章链接或教程摘要,jb51.net是一个技术分享平台。 - *...
jbpm是一款开源的工作流管理系统,它提供了一整套解决方案,用于设计、执行和管理业务流程。jbpm3.2.2是jbpm的一个版本,它在当时提供了许多关键功能,如流程定义、流程实例管理、任务管理和事件处理等。本入门例子...
jbPM(Java Business Process Management)是一个开源的工作流管理系统,它提供了全面的业务流程管理和工作流解决方案。对于希望深入了解和应用工作流技术的初学者来说,jbPM是一个理想的学习平台。本指南将带你一...
### jbpm Java工作流 教程 #### 一、jbpm简介 JBPM(Java Business Process Model)是Red Hat提供的一款开源的工作流引擎,用于在Java应用程序中实现业务流程管理(BPM)。它基于规范化的BPMN 2.0标准,支持图形化...
jbpm工作流整合是一个关键的主题,它涉及到企业级业务流程管理(BPM)系统的实施与集成。jbpm是一个开源的工作流管理系统,它提供了一套全面的工具和框架,用于设计、执行、监控和优化业务流程。这个压缩包可能包含...
本教程将带你深入理解JBPM,并通过一个具体的请假实例来展示其基本操作和配置。 首先,要开始使用JBPM,你需要创建一个动态的Web项目。在项目结构中,你需要在`lib`目录下添加必要的JAR包。这些包包括jbpm的核心库`...
总的来说,这套jbpm工作流基础视频教程旨在帮助初学者快速上手,掌握jbpm的基本操作和应用。通过观看jbpm-overview.swf文件,学习者可以直观地了解jbpm的全貌,为进一步深入学习和实践打下坚实基础。在实际工作中,...
jbpm工作流引擎基于J2EE的轻量级,纯java,开源的工作流管理系统。
**jBPM工作流详解** jBPM,全称Java Business Process Management,是Red Hat公司开发的一款开源的工作流管理系统,它提供了对业务流程的建模、执行和监控能力。jBPM不仅支持传统的工作流标准,如BPMN 2.0,还集成...
【JBPM工作流全套学习资料】是一份详尽的学习资源,涵盖了JBPM工作流系统的基础到高级知识。JBPM(Java Business Process Management)是开源的企业级工作流管理系统,它允许开发者设计、部署和执行业务流程。这个...
"JBPM工作流开发指南v10-20070706.rar"这份文档可能是较新的指南,虽然版本号与标题不符,但依然能提供关于jbpm更广泛和深入的信息,包括最佳实践、优化技巧以及可能存在的问题和解决方案。 总的来说,通过这个教程...
jbpm4.4学习教程是一套专为初学者设计的教育资源,旨在帮助用户掌握jbpm这一业务流程管理(Business Process Management)框架的第4.4版本。jbpm是一款开源的Java平台工具,它允许开发者设计、执行和管理业务流程,...
jbpm工作流是一种开源的工作流管理系统,由JBoss组织开发,用于帮助企业自动化业务流程。jbpm提供了丰富的功能,包括流程定义、执行、监控和集成,适用于各种业务场景,如人力资源管理、采购流程、客户服务等。 在...
### JBPM工作流详解 #### 一、工作流基础与概念 **工作流**(Workflow)是指业务过程的部分或整体在计算机应用环境下的自动化。它主要用于实现文档、信息或任务在多个参与者之间的自动传递,以达成某个特定的业务...
jbpm4新手教程
- **jBPM 5**:jBPM是另一个流行的工作流引擎,它同样遵循BPMN 2.0标准。jBPM强调的是完整的企业级BPM解决方案,包括流程建模、执行、监控和规则集成等。 - **Activiti的优势**:相比于jBPM,Activiti的API更加...
JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。 此文档为JBPM4.4的中文教程。