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工程


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

修改jbpm.hibernate.cfg.xml

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

<?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>

 <property name="hibernate.dialect">org.hibernate.dialect.MySQLInnoDBDialect</property>
 <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
 <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/jbpmdb</property>
 <property name="hibernate.connection.username">jbpm</property>
 <property name="hibernate.connection.password">jbpm</property>
<!-- <property name="hibernate.hbm2ddl.auto">create-drop</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>

新建流程定义文件如下:


是一个最简单的流程

新建TestHello.java并且继承JbpmTestCase

测试程序如下:

public class TestHello extends JbpmTestCase {
 String deploymentId;

 protected void setUp() throws Exception {
 super.setUp();

 deploymentId = repositoryService.createDeployment()
 .addResourceFromClasspath("com/jbpm/hellojbpm.jpdl.xml")
 .deploy();
 }

 protected void tearDown() throws Exception {
 repositoryService.deleteDeploymentCascade(deploymentId);

 super.tearDown();
 }

 public void testHello() {
 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

问题就可以解决了。

时间: 2024-09-10 06:14:23

JBPM4.4(1)-简单工程的搭建的相关文章

工程搭建-java工程如何搭建总工程和子工程的方法

问题描述 java工程如何搭建总工程和子工程的方法 我想搭建一个主工程下面多个子工程的工程怎么搭建啊 例如 工程A 工程B 工程C 解决方案 多个项目依赖一个主项目的,,用maven就行,, 解决方案二: 问错话题了 你应该发用什么工具搭具主工程和子工程.

Selenium2.0测试工程的搭建

早前针对Selenium1.0搭建过一次测试环境,时至多日,有点忘却了,正好出了新版本,闲来无事,基于Selenium2.0版本重新搭建一次,顺便记录下,给日后的我或者你做个参考. 1. 安装jdk并配置环境变量: jdk需要安装1.6版本或以上的,安装目录为默认路径 环境变量配置如下: JAVA_HOME=C:\Program Files\Java\jdk... 本人安装的是1.7.0版本,所以JAVA_HOME=C:\Program Files\Java\jdk1.7.0,此外, CLASS

ATL/COM简单工程

介绍 本教程的目的是告诉你如何使用ATL创建一个COM服务器,并使用Visual C++ 和Visual Basic程序来分别调用这个服务器.我并不想深入探讨COM的细节,也不想让你深陷 于IDL之中.这一教程只是为VC++的新手程序员设计的,告诉他们利用ATL来创建一个COM对象 有多么简单,并让他们能对ATL产生更多的兴趣. 第1步:启动ATL COM Wizard 你所需要做的第一件事情就是启动Visual C++并创建一个新的工程,选择 "ATL COM Wizard",工程名

linux下简单快速的搭建ftp服务器环境

  不管是linux还是windows主机都是需要配置才会有ftp服务器了,下文为各位介绍在linux系统搭建ftp服务器环境细节,有需要了解的可以和小编来学学. 1.SSH登陆服务器 2.yum安装vsftpd 安装命令:yum install vsftpd 3.修改配置.增加开机启动 修改配置:vi /etc/vsftpd/vsftpd.conf 将anonymous_enable=YES的值设置为NO,增加开机启动,命令: chkconfig –level 35 vsftpd on 4.增

在树莓派 3 上运行 openSUSE:简单几步搭建一个实用系统

首先,你将会有一些版本可供选择.如果你打算使用树莓派 3 作为一个普通主机,那么带有图形界面的 openSUSE 将是你最好的选择.有几种不同的图形环境可供选择:X11.Enlightenment.Xfce 或是LXQT.openSUSE 还有一个 JeOS 版本能够提供最基础的系统,可以把树莓派 3 作为一个无显示器的服务器使用.更好的选择还有 openSUSE 的 Leap 或 Tumbleweed 版本. 首先你需要从 https://en.opensuse.org/HCL:Raspber

在树莓派3上运行openSUSE:简单几步搭建一个实用系统

在树莓派 3上部署 openSUSE 系统不是很复杂,不过这儿有一些小技巧教你更好地完成这个过程.首先,你将会有一些版本可供选择.如果你打算使用树莓派 3 作为一个普通主机,那么带有图形界面的 openSUSE 将是你最好的选择.有几种不同的图形环境可供选择:X11.Enlightenment.Xfce 或是 LXQT.openSUSE 还有一个 JeOS 版本能够提供最基础的系统,可以把树莓派 3 作为一个无显示器的服务器使用.更好的选择还有 openSUSE 的 Leap 或 Tumblew

简单快速ZooKeeper搭建配置

一.单机模式 1.配置JDK环境,略过. 2.获取及下载zookeeper 下载地址:http://mirror.bit.edu.cn/apache/zookeeper/stable/ ,  代码如下 复制代码 #wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz #tar zxvf zookeeper-3.4.6.tar.gz -C /usr/local #cd /usr/l

从最基本的Java工程搭建SpringMVC+SpringDataJPA+Hibernate_java

   本文会介绍从一个最基本的java工程,到Web工程,到集成Spring.SpringMVC.SpringDataJPA+Hibernate.     平时我们可能是通过一个模板搭建一个工程,或者是直接导入一个项目,而本文选择从最基本的java工程开始,目的是为了展示更多原理.     当然,我们还是从一个最基本的Maven工程开始,其实普通的非Maven工程,搭建过程几乎是一模一样的,只是Jar包需要我们手动的添加到工程中,而Maven工程就只是修改配置文件即可.   下面就正式开始. 1

搭建Dynamic Web Project(动态web项目)的springmvc工程2

此篇为"创建Dynamic Web Projec工程,"搭建Dynamic Web Project(动态web项目)的springmvc工程1的续篇,"搭建springmvc框架web项目": 注:开发工具,以及jar包下载,404访问处理,请到上篇或下链接!!! 下载分享%springmvc开发分享****,(提取码:2c4a)也可网上下载,适合自己的或最新版本使用. 404错误解决可以查看:springmvc下404解决 搭建完的目录: 注:此处,如果,只有sp