jbpm4.4生成18张数据库表
作者:Vashon
时间:20151213
一. 准备jBPM4.4的开发环境
1.1. 添加jBPM4.4的jar包
1.1.1. ${JBPM_HOME}/jbpm.jar(核心包)
1.1.2. JBPM_HOME/lib/*.jar,不添加以下jar包:servlet-api.jar, junit.jar。其中junit.jar一定不要添加,因为是3.8.2版本,与我们使用的junit4有冲突。
1.1.3. 所使用的数据库对应的驱动的jar包(第2步所添加的jar包中已包含mysql的jdbc驱动jar包)。
二、 添加并定制配置文件
2.1、jbpm.cfg.xml、
2.2、logging.properties、//要注意版本的问题,接口和实现类要相同版本
2.3、jbpm.hibernate.cfg.xml。
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" />
<!-- Job executor is excluded for running the example test cases. -->
<!-- To enable timers and messages in production use, this should be included. -->
<!--
<import resource="jbpm.jobexecutor.cfg.xml" />
-->
</jbpm-configuration>
jbpm.hibernate.cfg.xml配置信息如下:
<?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>
<!-- Oracle11g数据库信息org.hibernate.dialect.Oracle10gDialect -->
<!--
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
-->
<!-- mysql数据库信息 -->
<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:///jbpm4</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<!-- 其他配置 -->
<property name="hibernate.hbm2ddl.auto">update</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>
三、HelloWorld后台测试:
package jbpm.test;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.task.Task;
import org.junit.Test;
public class Helloworld {
// 建表
@Test
public void createSchema() throws Exception { // hbm2ddl.auto=update
new org.hibernate.cfg.Configuration()//
.configure("jbpm.hibernate.cfg.xml")//
.buildSessionFactory();
}
private static ProcessEngine processEngine = new Configuration()//
.setResource("jbpm.cfg.xml")//
.buildProcessEngine();
// 1,部署流程定义
@Test
public void deployProcessDefintion() throws Exception {
processEngine.getRepositoryService()//
.createDeployment()//
.addResourceFromClasspath("helloworld/helloworld.jpdl.xml")//
.addResourceFromClasspath("helloworld/helloworld.png")//
.deploy();
}
// 2,启动流程实例
@Test
public void startProcessInstance() throws Exception {
processEngine.getExecutionService().startProcessInstanceByKey(
"helloworld");
}
// 3,查询我的个人任务列表
@Test
public void findMyPersonalTaskList() throws Exception {
//String userId = "员工";
// String userId = "部门经理";
String userId = "总经理";
// 查询
List<Task> taskList = processEngine.getTaskService().findPersonalTasks( userId);
// 显示
System.out.println("============= 【" + userId + "】的个人任务列表 ============");
for (Task task : taskList) {
System.out.println("id=" + task.getId()//
+ ", name=" + task.getName()// 任务名称
+ ", assignee=" + task.getAssignee()); // 办理人
}
}
// 4,办理任务
@Test
public void completeTask() throws Exception {
String taskId = "30001";
processEngine.getTaskService().completeTask(taskId);
}
}
四、先运行createSchema()的Junit方法生成数据库表,结果如下:
注:以上是配置生成在Mysql中的jbpm数据库表,如果要生成在Oracle则修改下数据库配置信息即可。
补充:在生成oracle数据库表示会存在问题,解决方案见:http://blog.csdn.net/yangwenxue_admin/article/details/50282741