开发者社区> skyme张> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

JBPM4.4(1)-简单工程的搭建

简介: 源码下载 https://anonsvn.jboss.org/repos/jbpm/jbpm4/ JBPM是什么? jBPM是一个可扩展、灵活的流程引擎, 它可以运行在独立的服务器上或者嵌入任何Java应用中。
+关注继续查看

源码下载

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

img_25d1ad154d0249610a043bd92a2e6187.jpg

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

修改jbpm.hibernate.cfg.xml

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

img_1c53668bcee393edac0d7b3b3daff1ae.gifView Code

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

新建流程定义文件如下:

img_6f4aa51f4b1bdc8b403b07f92ff770a4.jpg

是一个最简单的流程

新建TestHello.java并且继承JbpmTestCase

测试程序如下:

img_1c53668bcee393edac0d7b3b3daff1ae.gifView Code

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

问题就可以解决了。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
搭建项目环境(创建工程) | 学习笔记
快速学习搭建项目环境(创建工程)
0 0
《配置管理最佳实践》——第2章 构建工程 2.1为什么构建工程如此重要
构建工程有时候是项很令人头疼的工作。比如,有的公司开发团队甚至经常长时间无法获得一个可靠的可执行文件。原因可能有以下几个:第一个原因是没有实行可靠的源代码管理实践。这导致了我们不知道怎么能得到一份版本相同的源代码。第二个原因是构建过程太复杂且不可靠。第三个原因是不支持新的构建需求。
1145 0
PWH 项目奇人之SUNDAR
PWH 项目奇人之SUNDAR   SUNDAR,原名Koduvayur Sundar, 是PWH项目客户在美国总部的SAP内部顾问。
1140 0
BGWN项目总结之盘点
  BGWN项目总结之盘点 BGWN项目的客户,对于盘点,其仓库部门很有技巧的避免在SAP系统上操作的工作量:  ?  导出系统上库存清单,然后在系统外对所有物料执行盘点,看看实盘结果和账面库存是否有差异。
699 0
如何搭建sshpermissions工程
从svn上下载源码 原来缺少的tgBase, tgTemplateEngine, tgTree三个包的源码,也已经上传到服务器上,接下来看如何配置工程。 打开eclipse,然后选择导入,从SVN导入源码:         图:从svn导入系统源码 添入svn中的sshpermissions的地址         图:svn远端路径 选择工程         图:sshpermission工程选择           图:指定工程名 然后点击完成,就可以完成导入了。
566 0
jBPM工作流 之JBPM4
接续上篇http://www.cnblogs.com/2018/archive/2011/11/08/2240258.html,把jbpm4使用整理一下 安装 http://sourceforge.
814 0
jBPM工作流 之jBPM3
前一段时间的项目涉及jBPM3的项目升级,把其中学习到的一些内容整理一下, 首先看看jBPM3的使用,了解了这个,对于升级到4有一定的绑定。  下载和安装 http://sourceforge.net/projects/jbpm/files/jBPM%203/jbpm-jpdl-3.
1126 0
+关注
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载