- 浏览: 94734 次
- 性别:
- 来自: 火星
最新评论
-
a372048518:
讲的很好!!
简介,LDAP是什么 -
toshibasony:
此处的XX 代表什么意思啊 哥们能说明白点么 ?
用JAVA实现LDAP的访问 -
phoenix_sun:
讲的很好,多谢
简介,LDAP是什么 -
protel.robin:
数据库分区表一般用在大数据量的系统,拜读了!
谈谈怎么实现Oracle数据库分区表 -
youjianbo_han_87:
不错,学习。。。。。。。。。。
简介,LDAP是什么
1.
jBPM
的简单介绍
JBOSS jBPM是一个灵活的、可扩展的工作流管理系统。JBOSS jBPM拥有直观的流程语言,用任务、异步的等待状态、定时器、自动化动作…等来表示业务流程图,把这些操作绑定在一起,JBOSS jBPM就拥有了非常强大和可扩展的控制流机制。
JBOSS jBPM只有最小的依赖,可以象使用java库一样非常容易的使用它。另外,也可以通过把它部署在J2EE集群应用服务器中,用在吞吐量极为关键的环境中。
JBOSS jBPM可被配置为任何数据库,并且可以部署到任何应用服务器。
参考
1.1
概述
核心工作流和BPM功能被打包为一个简单的java库,这个库包括一个存储到数据库、从数据库更新和获取流程信息的服务。
图 1
.1
JBOSS jBPM组件概观
1.2
JBOSS jBPM入门套件
入门套件是一个包含了所有jBPM组件的下载包,包括:
l
Jbpm-server
,一个预配置好的jboss应用服务器。
l
Jbpm-designer
,图形化设计jBPM流程的eclipse插件。
l
Jbpm-db
,jBPM数据库兼容包(见下文)。
l
Jbpm
,核心jbpm组件,包括库和本指南。
l
Jbpm-bpel
,JBOSS jBPM BPEL扩展参考。
预配置好的JBOSS应用服务器安装了下列组件:
l
核心的jBPM
组件
,被打包为了一个服务档案。
l
一个包括jBPM
库表的集成数据库
:默认的hypersonic数据库包含了jBPM表,另外还包含一个流程。
l
jBPM
控制台web
应用程序
,可以由流程参与者使用,也可以由jBPM管理员使用。
l
jBPM
调度程序
,用于定时器执行。调度程序在入门套件中被配置为一个servlet,这个servlet将产生一个线程来监视和执行定时器。
l
jBPM
命令执行器
,用于命令的异步执行。命令执行器也被配置为一个servlet,这个servlet将产生一个线程来监视和执行命令。
l
一个流程实例
,已经被部署到了jBPM数据库中。
1.3
JBOSS jBPM图形化流程设计器
JBOSS jBPM还包括一个图形化设计工具,这个设计器是一个创作业务流程的图形化工具。
JBOSS jBPM图形化流程设计器是一个eclipse插件,可以独立安装的设计器已经在开发目标中。
图形化设计器非常重要的特性是它同时支持业务分析者和技术开发者,这使的业务流程建模可以平滑的转换到实际实现。
插件可以被用作本地更新设置(普通的zip文件),通过标准的eclipse软件更新机制安装。另外还有一个包,你可以直接把它解压到eclipse主目录里。
1.4
JBOSS jBPM核心组件
JBOSS jBPM核心组件是普通java(J2SE)软件,用来管理流程定义和流程实例执行的运行时环境。
JBOSS
jBPM是一个java库,因此,它可以被用在任何java环境,例如web应用、swing应用、EJB、webservice…等,jBPM库还可以
被打包为无状态会话EJB,这允许被作为集群部署,并且适用于极高的吞吐量。无状态会话EJB按照J2EE1.3规范编写,因此它可以部署到任何应用服务
器。
JBOSS jBPM核心组件被打包为一个简单的java库文件,依赖于你所使用的功能,jbpm-3.0.jar库对第三方库有些依赖,如hibernate、dom4j和其他,这些在“第5章 部署”TODO中有清晰的说明。
为了持久化,jBPM内部使用hibernate,除了传统的O/R影射之外,hibernate还解决了不同数据库之间的SQL方言(dialect)问题,使jBPM可以方便的在当前所有数据库上移植。
JBOSS jPBM API可以从你的项目中任何定制的java软件中访问,例如你的web应用、你的EJB、你的webservice组件、你的消息驱动bean,或者其他java组件。
1.5
JBOSS jBPM控制台web应用程序
jBPM控制台web应用程序服务于两个目的。首先,它作为与由流程执行所产生的运行时任务相交互的一个重要的用户接口;其次,它是一个管理和监控控制台,允许检查和操纵运行时实例。
1.6
JBOSS jBPM身份组件
JBOSS
jBPM可以与任何包含用户或其他组织信息目录的公司集成,但是对于没有组织信息组件可用的项目,JBOSS
jBPM包含了它自己的组件。身份组件所使用的模型比传统的servlet、ejb和portlet(译者注:portlet是portal中最重要的组
件,与servlet类似,portlet是部署在容器中用来生成动态内容的web组件。)模型更丰富。
更多信息,请看“11.11 身份组件”。TODO
1.7
JBOSS jBPM调度程序
JBOSS jBPM调度程序是一个用来监视和执行定时器的组件,它在流程执行期间被调度。
定时器组件软件被打包进核心的jbpm库,但是它需要被部署进下列环境之一:要么配置调度程序servlet去产生监视线程,要么用调度程序的main方法启动一个独立的JVM。
1.8
JBOSS jBPM数据库兼容包
JBOSS jBPM数据库兼容包是一个包含能使jBPM在你所选择的数据库上运行的所有信息、驱动程序和脚本的下载包。
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
接口
发表评论
-
eclipse常用快捷键
2011-03-29 10:24 747Ctrl+D: 删除当前行 Ctrl+Al ... -
WEB安全之SQL注入
2010-01-20 11:40 1010SQL注入攻击是 ... -
struts2拦截器的使用方法
2009-04-22 16:39 3352Struts2的拦截器和Servlet过滤器类似。在执 ... -
java 线程概述
2009-04-02 14:57 963编写具有多线程能力的程序经常会用到的方法有: ru ... -
Java中四种XML解析技术
2009-04-02 11:54 927在平时工作中,难免会 ... -
网站用户单点登录系统解决方案
2008-12-22 16:11 1903网站用户单点登录系统解决方案 1 背景 在 ... -
简介,LDAP是什么
2008-12-08 18:14 68251. LDAP介绍 41.1. LDAP是什么 41.2. L ... -
用JAVA实现LDAP的访问
2008-12-08 12:48 3673<一> LDAP现在用的越来越多,所谓LD ... -
一些表格的特效代码
2008-09-08 10:15 955表格特效代码全集中 - - 1. 两种细线表格做法 ... -
JBPM入门例子
2008-07-18 16:22 2421jBPM 之前是一个开源软 ... -
使用 Spring + iBATIS 框架详解
2008-04-26 09:30 38051: spring框架介绍 Spring框架是一个分层架构 ... -
妙用U盘轻松绕过Win XP登录密码
2008-04-24 15:26 1286有许多朋友还在为忘记XP登陆密码不能进入系统而烦恼,现在我就来 ... -
三个有用的过滤器
2008-04-21 17:27 1111一、使浏览器不缓存页面的过滤器 import javax.s ... -
[IE技巧] IE 除了用来上网之外,还可以用来做计算器
2008-04-18 09:15 1024IE 除了用来上网之外,还可以用来做计算器 ! (如下图) ... -
国际:4月语言排行榜出炉 ColdFusion “死而复生”
2008-04-17 11:37 1468TIOBE开发语言排行榜日前宣布了2008年4月流行开发语言的 ...
相关推荐
### jBPM 知识点详解 #### 一、jBPM 概述 jBPM 是一款开源的、纯 Java 的、轻量级的工作流引擎,它支持多种可执行流程语言,为商业流程管理(BPM)提供了一个强大的平台。jBPM 可以在任何 JavaEE 应用服务器或配置...
在《jbpm介绍》中,你可能会学习到以下关键知识点: 1. **流程建模**:jbpm支持BPMN 2.0标准,这是一种广泛接受的业务流程建模语言,允许开发者通过图形化方式设计复杂的业务流程。你可以了解到如何使用工具如...
### jBoss --JBPM介绍及应用 #### 一、引言与概述 JBoss jBPM(Job Business Process Management)是JBoss提供的一个强大的工作流引擎,它支持业务流程管理和自动化,尤其适用于Java环境中开发WS(Web Services)...
01_JBPM介绍.exe
【JBPM介绍】 JBPM(JBoss Business Process Management)是一个开源的工作流管理系统,由Red Hat公司维护,主要用于实现业务流程的自动化和管理。它提供了一种直观的流程语言,允许用户通过任务、异步等待状态、...
本文将详细介绍jbpm以及工作流的基本概念、特点和管理系统。 工作流的起源可以追溯到生产组织和办公自动化领域,其初衷是为了提高工作效率、降低成本,通过将工作分解、按规则和流程执行并进行监控。随着并行工程和...
1. **Jbpm介绍**:介绍Jbpm的起源、目标和在业务流程管理(BPM)领域的地位,解释为何选择Jbpm4.3作为开发工具。 2. **安装与配置**:详述如何在开发环境中安装Jbpm4.3,包括所需的Java环境、数据库设置以及Eclipse ...
### jBPM 白皮书:介绍 jBPM 入门 #### 一、引言与背景 在当今数字化转型的时代背景下,业务流程管理(Business Process Management,简称 BPM)成为了企业提升效率、优化流程的关键技术之一。BPM 提供了一种程序...
jbpm 数据库表介绍 jbpm 是一个基于 Java 的 workflow 引擎,用于管理和执行业务流程。jbpm 需要持久化流程部署、流程实例、任务、用户认证等信息,于是 jbpm 设计了一系列的数据库表来存储这些信息。在 jbpm 4.4 ...
通过查看JBPM的表,我们知道要实现流程监控功能就是把JBPM当中的JBPM_PROCESSDEFINITION(已发布的流程表),JBPM_PROCESSINSTANCE(流程实例表),JBPM_TASKINSTANCE(流程产生的任务实例表)这三张表串联起来就可以...
1. **jbpm介绍**:首先,手册会介绍jbpm的核心概念和架构,包括工作流引擎、任务服务、规则引擎(可能基于Drools)以及持久化机制。此外,还会解释jbpm如何支持BPMN 2.0标准,使得流程定义更符合业界规范。 2. **...
1. **jBPM介绍**:讲解jBPM的基本概念,包括它的功能、架构以及在企业级应用中的作用。 2. **流程建模**:教授如何使用jBPM的图形化工具来设计业务流程模型,包括活动、任务、决策节点等元素的使用。 3. **流程部署*...
**JBPM介绍** JBPM是一款非常成熟且灵活的BPM(Business Process Management)解决方案,它允许开发者通过定义工作流模型来实现复杂的业务流程。JBPM的核心特性包括流程定义、流程实例管理、任务管理、规则集成、...
jbpm4.3表结构和表字段说明文档通常会详细介绍jbpm4中涉及的数据库表,包括实体如任务实例(TaskInstance)、流程实例(ProcessInstance)、工作项(WorkItem)等的表结构和字段。这些信息对于开发者来说至关重要,...
手册内容涵盖了许可证、下载、源码获取、jBPM介绍、文档内容、升级指南以及问题报告等基础知识。 **1. jBPM简介** jBPM是一个可扩展且灵活的流程引擎,能够独立运行或嵌入Java应用程序中。它支持持久执行模式,即...
#### 三、JBoss jBPM介绍 JBoss jBPM是JBoss中间件套件中的一个开源业务流程管理系统,它提供了强大的功能来支持整个BPM生命周期,包括设计、执行和监控业务流程。jBPM的主要特点包括: - **流程建模**:提供图形...
1. **jBPM介绍**:首先,手册会介绍jBPM的核心概念,包括工作流引擎、任务服务、事件处理、规则集成等,帮助读者理解jBPM的架构和工作原理。 2. **jPDL语法**:手册详细讲解了jPDL的语法规则,包括流程定义的基本...
1. **jbPM介绍**:jbPM的基本概念、架构和设计原理,以及它在业务流程管理中的作用。理解jbPM如何通过BPMN(Business Process Modeling Notation)模型来表达复杂的业务流程。 2. **安装与配置**:jbPM的下载、安装...
在`jbpm工作流引擎介绍.ppt`文件中,可能包含了对这些步骤的详细图解,展示了每个步骤如何在jbpm中建模,以及流程实例在不同阶段的变化。此外,还可能涵盖了如何配置工作流规则、如何定义和分配任务,以及如何使用...