jbpm 4.4 mysql方言_JBPM4.4(1)-简单工程的搭建

源码下载

https://anonsvn.jboss.org/repos/jbpm/jbpm4/

JBPM是什么?

jBPM是一个可扩展、灵活的流程引擎, 它可以运行在独立的服务器上或者嵌入任何Java应用中。

使用的解析语言:JPDL

发布

只需要把jBPM (jbpm-4.X.zip) 下载下来,然后解压到你的硬盘上的什么地方。 你将看到下面的子目录:

doc: 用户手册,javadoc和开发指南

examples: 用户手册中用到的示例流程

install: 用于不同环境的安装脚本

lib: 第三方库和一些特定的jBPM依赖库

src: 源代码文件

jbpm.jar: jBPM主库归档

migration: 参考开发指南

必须安装的软件

jBPM需要JDK (标准java)5或更高版本。

http://java.sun.com/javase/downloads/index.jsp

为了执行ant脚本,你需要1.7.0或更高版本的apache ant:

http://ant.apache.org/bindownload.cgi

安装数据库

C:\jbpm-4.4\jbpm-4.4\install\src\db\create

数据库的sql文件在这个路径下可以直接导入,也可以通过ant进行更新数据库的配置。

安装插件

网上n多教程了,不截图了,按照网上其它的配置一下吧,挺全的都。

工程创建

打开eclipse新建eclipse工程

ad866e6638c7792a6d2113539f63a9f3.png

完成后将examples中的几个配置文件导进来

修改jbpm.hibernate.cfg.xml

我使用的是mysql,文件中内容如下:

5f94c2fecb4ccb2f76f50c965d122407.gif

50828477840f9be8f01bb82af691c7d1.gifView Code

<?xml version="1.0" encoding="utf-8"?>/p>

"-//Hibernate/Hibernate Configuration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">org.hibernate.dialect.MySQLInnoDBDialectcom.mysql.jdbc.Driverjdbc:mysql://localhost:3306/jbpmdbjbpmjbpm

新建流程定义文件如下:

59ff419339577f95c5804658ddedde0d.png

是一个最简单的流程

新建TestHello.java并且继承JbpmTestCase

测试程序如下:

5f94c2fecb4ccb2f76f50c965d122407.gif

50828477840f9be8f01bb82af691c7d1.gifView Code

publicclassTestHelloextendsJbpmTestCase {

String deploymentId;protectedvoidsetUp()throwsException {super.setUp();

deploymentId=repositoryService.createDeployment()

.addResourceFromClasspath("com/jbpm/hellojbpm.jpdl.xml")

.deploy();

}protectedvoidtearDown()throwsException {

repositoryService.deleteDeploymentCascade(deploymentId);super.tearDown();

}publicvoidtestHello() {

ProcessInstance processInstance=executionService

.startProcessInstanceByKey("hellojbpm");

System.out.println("流程实例Id:"+processInstance.getId());

System.out

.println("流程定义Id:"+processInstance.getProcessDefinitionId());//判断当前是否位于start节点System.out.println("是否位于start节点:"+processInstance.isActive("start"));//判断当前是否位于state节点System.out.println("是否位于zhangsan节点:"+processInstance.isActive("zhangsan"));

System.out.println("------------------------>使流程继续向下执行");

Execution executionInA=processInstance

.findActiveExecutionIn("zhangsan");

assertNotNull(executionInA);//判断当前是否位于state节点processInstance=executionService.signalExecutionById(executionInA

.getId());

Execution executionInB=processInstance.findActiveExecutionIn("lishi");

assertNotNull(executionInB);

System.out.println("是否位于lishi节点:"+executionInB.isActive("lishi"));

processInstance=executionService.signalExecutionById(executionInB

.getId());

Execution executionInC=processInstance

.findActiveExecutionIn("wangwu");

assertNotNull(executionInC);

System.out.println("是否位于wangwu节点:"+executionInC.isActive("wangwu"));

}

}

运行测试junit文件

结果如下:

流程实例Id:hellojbpm.220007

流程定义Id:hellojbpm-1

是否位于start节点:false

是否位于zhangsan节点:true

------------------------>使流程继续向下执行

是否位于lishi节点:true

是否位于wangwu节点:true

流程一步一步的向下执行了,在这个示例中使用了start和state结点,在后面的示例中,会逐步深入到其它的示例中。

在运行的过程中曾经遇到过一个错误

16:53:39,280 SEV | [AbstractFlushingEventListener] Could not synchronize database state with session

org.hibernate.exception.ConstraintViolationException: could not delete: [org.jbpm.pvm.internal.model.ExecutionImpl#7]

经过查找之后是hibernate的方言指定的有问题,将

org.hibernate.dialect.MySQLDialect

修改成

org.hibernate.dialect.MySQLInnoDBDialect

问题就可以解决了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值