JBPM,全称是Java Business Process Management(业务流程管理)
是一款开源的工作流产品,功能强大、小巧灵活
jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM
JBPM采用XML结构的流程描述语言JPDL来描述工作流程
JBPM使用Hibernate作为持久层工具,可以在各大主流数据库中使用
官网:http://www.jboss.org/jbpm/
JBPM3.x 和 JBPM4.x 使用 Hibernate 作为持久层技术
JBPM5 开始 (JBPM原开发团队,离开了JBOSS, 推出 Activity ), JBPM5 和 JBPM4.4 没有任何关系
工作流概述:
工作流(Workflow),就是“业务过程的部分或整体在计算机应用环境下的自动化”,它主要解决的是“使在多个参与者之间按照某种预定义的规则传递文档、信息或任务的过程自动进行,从而实现某个预期的业务目标,或者促使此目标的实现”
简单的说,就是将工作的流程通过程序管理起来,以表单审核和任务办理为主体,实现办公自动化
工作流框架,将业务流程管理起来, 所有业务流程操作,围绕工作流框架进行, 基于表单提交和任务办理, 实现工作业务流程 自动流转。
工作流框架有:Jbpm、OSWorkflow、ActiveBPEL、YAWL等
下载JBPM4.4 开发包
https://sourceforge.net/projects/jbpm/files/jBPM 4/jbpm-4.4/
搭建JBPM开发环境
为eclipse(myeclipse)安装gpd插件(gpd是一款设计 JBPM流程的插件)
要求:eclipse3.5以上 及对应版本myeclipse (JDK5 以上)
安装步骤:
(本人使用的为MyEcplise 2014)
Help --> Install from Site
点击add
然后点OK,然后全选
然后next–>next–>accept–>finsh。然后会进入安装,安装完成后重启。然后在window–>Show View–>other可以找到如下图所示,证明安装成功。
其他的MyEclipse版本下(如8.5, 10)等可以通过如下步骤添加:
help – MyEclipse Configuration Center
software – addsite
浏览jbpm目录\install\src\gpd\jbpm-gpd-site.zip
右击每一项Add to Profile
Apply 8 changes
gpd使用简介:
新建工程,然后new一个Source Folder,然后再new一个jpdl文件
建后的工作面板如下:
保存之后会在Source Folder下生产两个文件。holiday.jpdl.xml 和holiday.png。然后调用JBPM相应的API就可以将流程发布。
holiday.jpdl.xml文件的内容如下:
JBPM的入门demo.
1.项目jar包导入:
JBPM解压目录下的jbpm.jar(核心jar包),JBPM解压目录下的lib下所有的 .jar包,不添加以下jar包:servlet-api.jar, junit.jar。其中junit.jar一定不要添加,因为是3.8.2版本,与我们使用的junit4有冲突。由于slf4j-jdk14.jar、slf4j-log4j12.jar都具有处理日志的功能,会避免出现冲突,所以可去掉slf4j-jdk14.jar。所使用的数据库对应的驱动的jar包(JBPM 内置hibernate 版本3.3.1)。导入log4j的jar包。
jar包如下:
activation.jar
antlr-runtime.jar
antlr.jar
avalon-framework.jar
bsh.jar
cglib.jar
commons-collections.jar
commons-logging.jar
core.jar
dom4j.jar
drools-api.jar
drools-compiler.jar
drools-core.jar
errai-bus.jar
errai-common.jar
freemarker.jar
gson.jar
guice-aopalliance.jar
guice-servlet.jar
guice.jar
gwt-console-rpc.jar
gwt-console-server-integration.jar
hibernate-core.jar
hsqldb.jar
janino.jar
javassist.jar
jbpm-bpmn.jar
jbpm-console-form-plugin.jar
jbpm-console-graphView-plugin.jar
jbpm-console-integration.jar
jbpm-console-reports.jar
jbpm-db.jar
jbpm-examples-tests.jar
jbpm-jboss.jar
jbpm-test-db-tests.jar
jbpm-tomcat6.jar
jbpm.jar
joda-time.jar
jta.jar
juel-api.jar
juel-engine.jar
juel-impl.jar
livetribe-jsr223.jar
log4j.jar
logkit.jar
mail.jar
mockejb.jar
mockrunner.jar
mvel2.jar
mysql-connector-java.jar
oro.jar
postgresql.jar
slf4j-api-1.5.8.jar
slf4j-log4j12-1.5.8.jar
subethasmtp-smtp.jar
subethasmtp-wiser.jar
2.编写配置文件
在src下编写log4j.properties
将 JBPM_HOME/examples/src/ 下面文件复制到 src目录
jbpm.cfg.xml(jbpm的核心配置文件)
jbpm.hibernate.cfg.xml (修改数据库连接参数)
log4j.properties
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.err
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=d:/mylog.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=info, stdout
jbpm.cfg.xml
jbpm.hibernate.cfg.xml
org.hibernate.dialect.MySQL5InnoDBDialect
com.mysql.jdbc.Driver
jdbc:mysql:///jbpm
root
1234
update
true
true
测试类:
JbpmTest.java
package com.my.jbpm;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.junit.Test;
public class JbpmTest {
@Test
public void test() {
// 加载jbpm配置 文件
Configuration configureation = new Configuration();
// 通过Configuration对象,创建流程引擎对象(自动加载jbpm.cfg.xml)
ProcessEngine processEgine = configureation.buildProcessEngine();
}
}