即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

JBPM(一)—JBPM简要介绍及其实例开发环境搭建

编程语言 qq_36414013 17℃ 0评论

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%204/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文件


这里写图片描述


这里写图片描述

建后的工作面板如下:

这里写图片描述

然后就利用中间的组件在空白处设计业务流程。


demo:


这里写图片描述

保存之后会在Source Folder下生产两个文件。holiday.jpdl.xml 和holiday.png。然后调用JBPM相应的API就可以将流程发布。

holiday.jpdl.xml文件的内容如下:



<process name="holiday" xmlns="http://jbpm.org/4.4/jpdl">
   <start g="369,43,48,48" name="start1">
      <transition name="to 员工请假申请" to="员工请假申请" g="-93,-22"/>
   start>
   <task g="358,168,92,52" name="员工请假申请">
      <transition name="to 部门经理审批" to="部门经理审批" g="-93,-22"/>
   task>
   <end g="378,384,48,48" name="end1"/>
   <task name="部门经理审批" g="364,281,92,52">
      <transition name="to end1" to="end1" g="-50,-22"/>
   task>
process>

holiday.png文件:


这里写图片描述


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-configuration>

  <import resource="jbpm.default.cfg.xml" />
  <import resource="jbpm.businesscalendar.cfg.xml" />
  <import resource="jbpm.tx.hibernate.cfg.xml" />
  <import resource="jbpm.jpdl.cfg.xml" />
  <import resource="jbpm.bpmn.cfg.xml" />
  <import resource="jbpm.identity.cfg.xml" />

  
  
  

jbpm-configuration>

jbpm.hibernate.cfg.xml





<hibernate-configuration>
  <session-factory>

     <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialectproperty>
     <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driverproperty>
     <property name="hibernate.connection.url">jdbc:mysql:///jbpmproperty>
     <property name="hibernate.connection.username">rootproperty>
     <property name="hibernate.connection.password">1234property>
     <property name="hibernate.hbm2ddl.auto">updateproperty>
     <property name="hibernate.format_sql">trueproperty>
     <property name="hibernate.show_sql">trueproperty>

     <mapping resource="jbpm.repository.hbm.xml" />
     <mapping resource="jbpm.execution.hbm.xml" />
     <mapping resource="jbpm.history.hbm.xml" />
     <mapping resource="jbpm.task.hbm.xml" />
     <mapping resource="jbpm.identity.hbm.xml" />

  session-factory>
hibernate-configuration>

测试类:


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();

    }

}

运才完测试类之后会在数据库生成18张jbpm4打头的数据表,如下:


这里写图片描述

转载请注明:CodingBlog » JBPM(一)—JBPM简要介绍及其实例开发环境搭建

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情