jbpm入门

来源:互联网 发布:苏琛网络歌手资料 编辑:程序博客网 时间:2024/05/01 23:52

eclipse插件安装
jbpm提供了在eclipse下的一个可视化插件,通过它我们可以方便的定义工作流,打开jbpm-starters-kit-3.1.4/jbpm-designer/jbpm-gpd-feature目录,我们可以看到下面有一个eclipse文件夹,这里我们通过link的方式为eclipse添加该插件。
在{eclipse_home}/link文件夹下新建jbpm-designer.link文件,用记事本打开该文件加入如下一行:
path=D://jbpm-starters-kit-3.1.4//jbpm-designer//jbpm-gpd-feature
后面的路径即为该插件的存放路径,根据个后面的路径即为该插件的存放路径,根据个人情况修改。注意,这里的分隔符使用双斜杠//。 

 
 

6.1 新建jBPM项目

主菜单“文件->新建->项目”,在弹出的对话框里,有“ Process Project ”项,如下图所示:

 

 

 

选上好,单击“下一步”,起个名“ myjbpm ”,然后就可以单击“完成”了。然后就生成了如下图所示的一个项目结构:
 

这个项目和通常 Eclipse 的项目结构有点不同,不过这是一个现在非常流行的项目结构, src/java 存放源文件, test/java 存放相应的 JUnit 单元测试代码。如果你用 Maven 来编译构建项目,对这种目录结构一定不陌生。

 

项目创建起了,介绍一下里面的文件吧:

l           MessageActionHandler ,自动生成的一个 ActionHandler 。不想要可以删掉。

l           ehcache.xml cache 的配置文件,里面有很详解的英文说明。没有必要可以不用改它。

l           hibernate.cfg.xml   jBPM 是用 Hibernate 进行工作流的数据存储的,这个就是 Hibernate 的配置文件。后面我们将讲到如何配置这个文件。

l           jbpm.cfg.xml   jbpm 本身的配置文件。现在是空的,它用的是缺省配置,你想知道有哪些配置就去看这个文件 D:/jbpm-starters-kit-3.1.1/jbpm.3/src/java.jbpm/org/jbpm/default.jbpm.cfg.xml

l           log4j.properties  这个是日志 API 包 log4j 的配置文件,用过 log4j 的都知道。

l           SimpleProcessTest.java  这个是对最重要的流程配置文件的 processdefinition.xml 单元测试代码。这里表扬一点, jBPM 的优良设计使得它的可测试性非常之高,喜欢写 t 单元测试的人有福了。

l           gpd.xml  用于生成流程图的定义文件。都是一些方框的坐标和长宽

l           processdefinition.xml  这个是对最重要的流程配置文件,以后写流程要经常和它打交道。

l           processimage.jpg  一个流程图

 


从项目结构来看,我们没有看到 JSP 网页程序,也没有看到 GUI 客户端程序,这些代码都是要我们以后开发中来写的。但本文不准备用 JSP 、 GUI ( Swing 、 SWT )来做示例,而是用 JUnit 代码来做使用 jBPM 客户端来演示。因为 jBPM 实际上是一个后台框架,至于前台是 JSP 还是 Swing 还是无界面的 java.class 都是无关紧要的。在教程里用无界面的 java.class 来做客户端则更方便一些,如果进一步采用 JUnit ,则这样的 java.class 同时还具备了单元测试的功能。以后就是用 JSP 写了 WEB 页面,我们还是可以用这些 JUnit 程序来做单元测试,避免了频繁的鼠标点按 WEB 页面这样的力气活。所以在 jBPM 自带的英文教程里都是一个 JUnit 程序,不仔佃看还真摸不着头脑。

 

6.2 修改hibernate.cfg.xml
       hibernate.cfg.xml 的默认设置是用 HSQL ,这是一个内存数据库,这种内存数据库用来代替项目实际所用的数据库来做单元测试挺不错的。不过我们这里是要试试用 MySQL 、 Oracle ,那就改一下设置吧。

注:配置值可参考 D:/jbpm-starters-kit-3.1.1/jbpm-db 对应子目录下的 hibernate.properties 文件。

1 、 MySQL 的更改如下:

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm</property>

<property name="hibernate.connection.username">root</property>

<property name="hibernate.connection.password">123456</property>

 

2 、 Oracle 的更改如下:

<property name="hibernate.dialect">org.hibernate.dialect.OracleDialect</property>

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>

<property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.123.10:1521:wxxrDB</property>

<property name="hibernate.connection.username">chengang</property>

<property name="hibernate.connection.password">chengang</property>

 

如果你装了 Oracle 的客户端,并且 D:/oracle/ora92/network/ADMIN/tnsnames.ora 里做了如下的设置

WXXRDB_192.168.123.10 =

(DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.123.10)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SID = wxxrDB)

      (SERVER = DEDICATED)

    )

)


则 Oracle 的 hibernate.connection.url 项也可以设为: jdbc:oracle:oci:@WXXRDB_192.168.123.10

 

6.3 完善库引用
       虽然 jBPM 在创建项目之初给我们设置好了库引用,如下图

 

 


但后面运行时还是报一些 NoClassDefFoundError 异常,如没有对 hibernate3.jar 的引用导致下面的错误

java.lang.NoClassDefFoundError: org/hibernate/Session

    at org.jbpm.persistence.db.DbPersistenceServiceFactory.openService(DbPersistenceServiceFactory.java:55)

    at org.jbpm.svc.Services.getService(Services.java:136)

    .......

 

所以我们要为本文的实例完善库引用。主要是把 MySQL 和 Oracle 的 JDBC 库、以及 Hibernate 的 hibernate3.jar 加入到项目的库引用中。

(1)       找到缺少的 jar 包

l           mysql 的 jdbc 包,在 D:/jbpm-starters-kit-3.1.1/jbpm-db/mysql/lib 目录里

l           oracle 的 jdbc 包, jbmp 中没有包含(可能是没拿到 oracle 授权),我们可以自已去 oracle 网站上下载,或者去 oracle 安装目录 D:/oracle/ora92/jdbc/lib 找 ojdbc14.jar (我们公司用的是 Oracle9i )

l           Hibernate3.jar 在目录 D:/jbpm-starters-kit-3.1.1/jbpm.3/lib/hibernate 里。

(2)       在项目里创建一个 lib 目录,将这三个 jar 复制到 lib 目录。

(3)       如下图设置三 jar 包的库引用

 

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/cnham/archive/2009/01/18/3826214.aspx