1. 前言
JBPM,全称是Java Business Process Management(业务流程管理),它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。jBPM是公开源代码项目,它使用要遵循 Apache License。 jBPM在2004年10月18日,发布了2.0版本,并在同一天加入了JBoss,成为了JBoss企业中间件平台的一个组成部分,它的名称也改成JBoss jBPM。随着jBPM加入JBoss组织,jBPM也将进入一个全新的发展时代,它的前景是十分光明的。目前官方网站上最新的版本是JBPM5,不过它还尚未成熟,建议大家不要做实验室里面的小白鼠。
2. 配置JBPM4开发环境
JBPM4目前最稳定的版本是4.4。
从https://sourceforge.net/projects/jbpm/files/jBPM%204/jbpm-4.4/可以下载最新的开发包jbpm-4.4.zip。下载之后解压缩,将里面的一个jbpm.jar和lib下面所有的jar包拷贝到实际项目工程当中。下面我们安装JBPM的Eclipse插件,让我们的Eclipse具有JBPM的Feature。在已经下载的{%JBPM4_PATH%}/install/src/gpd下面就是插件包,利用eclipse的updateSite方式即可安装JBPM4插件,安装完成后。在Eclipse的New-》Other下面会这样的效果。
以上是建立一个工作流程,点击next后输入流程模板的名字,如下图
之后就可以利用可视化编辑器编辑(GEF)流程了,效果如下
加入JPDL4的schema效验,在{%JBPM4_PATH%}/src/文件夹下面有jpdl-4.0.xsd——jpdl-4.4.xsd的xml效验,将其引入到Eclipse中来,就可以使用快捷键编辑xml流程了。引入步骤如下:
Preferences->Myeclipse->files and editors->XML->XML schema-> XML schema Source即可添加新的schema验证了。
1. JBPM默认的配置文件说明
jbpm.cfg.xml:整个工作流引擎总配置文件,它描述了该引擎需要加载的其他配置文件,它相当于一个所有配置文件的核心管理配置。内容如下:
<?xml version="1.0" encoding="UTF-8"?> <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> |
当然我们可以按照自己定义的总配置文件来加载自定义配置,比如自己新建一个myjbpm.cfg.xml,而真正开始流程发布的时候就可以显示的在代码中明确加载myjbpm.cfg.xml配置文件,而不去加载默认的配置,此为后话以后再表。
jbpm.mail.properties:描述了邮件信息,当流程中引发了邮件处理的时候,会按照其中的配置信息发送相关邮件。
jbpm.hibernate.cfg.xml:工作流引擎是依靠自身的一些数据库的,这个就是数据库相关的配置信息,因为JBPM底层就是引用了Hibernate来做持久层维护的,所以此文件就是Hibernate配置文件。内容如下:
<?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration> <session-factory> <!-- 此处如果不是org.hibernate.dialect.MySQL5InnoDBDialect,会发生Could not synchronize database state with session --> <property name="hibernate.dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpm4demo?useUnicode=true&characterEncoding=UTF-8</property> <property name="hibernate.connection.username">liuyan</property> <property name="hibernate.connection.password">111111</property> <!-- <property name="hibernate.hbm2ddl.auto">create-drop</property> --> <property name="hibernate.hbm2ddl.auto">update</property> <property name="hibernate.format_sql">true</property> <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> |