jbpm4.4生成18张数据库表

时间:2021-11-20 04:52:08

                                            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方法生成数据库表,结果如下:


jbpm4.4生成18张数据库表


注:以上是配置生成在Mysql中的jbpm数据库表,如果要生成在Oracle则修改下数据库配置信息即可。

补充:在生成oracle数据库表示会存在问题,解决方案见:http://blog.csdn.net/yangwenxue_admin/article/details/50282741