虽然基于jBPM4延续的Activiti5已经推出很长时间了,但是jBPM4在项目中还是有很广泛的使用。
1、使用的相关开发工具软件。
1)Eclipse IDE for Java EE Developers(Eclipse 4.2)
2)jBPM4.4
3)MySQL5.5
2、配置在Eclipse中设计流程的gpd插件。
1)gpd插件所在目录:jbpm-4.4\install\src\gpd\jbpm-gpd-site.zip
2)安装插件:Eclipse菜单 Help-->Install New Softwore...打开Install窗口;在Install窗口点击 Add...打开Add Repository窗口;在Add Repository窗口点击Archive...在插件所在目录选择jbpm-gpd-site.zip。
3)安装完成会提示是否重启Eclipse,选择重启。
3、配置jBPM的Runtime Locations。
1)Eclipse菜单 Window-->Preferences-->JBoss jBPM-->Runtime Locations
2)在Runtime Locations窗口点击Add...打开Add Location窗口,Name:起个名字,如jBPM4.4;Location:选择jBPM4.4的解压安装目录。
4、使用单元测试实现First jBPM4。
1)新建一个Java Project,取名FirstJBPM4。
2)把jbpm-4.4\jbpm.jar和jbpm-4.4\lib下的所有jar文件添加到项目的classpath路径下。(或者把jBPM4.4的所有jar配置成一个User Library,然后在项目中直接引用)
3)把jbpm-4.4\examples\src目录下的jbpm.cfg.xml、jbpm.hibernate.cfg.xml和logging.properties加入到项目的src目录下。
4)FirstJBPM4项目结构如下。
5)修改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> <!-- 数据库信息 --> <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://localhost:3306/jbpm4</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password">root</property> <!-- 其他配置 --> <property name="hibernate.show_sql">false</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>
6)在MySQL中建立一个数据库叫jbpm4。
create database jbpm4 default character set utf8;
7)在项目名称上点击右键New-->Source Folder,取名process。process和src是同级的,在process下存放流程定义文件。
8)设计请假流程定义文件。在process下建立一个Package叫leave,然后leave上点击右键New-->jBPM Process Definition,取名Leave。
9)画流程图,用assignee分配相应的任务处理人员。
Leave.jpdl.xml文件如下
<?xml version="1.0" encoding="UTF-8"?> <process name="Leave" xmlns="http://jbpm.org/4.4/jpdl"> <start name="start1" g="303,8,48,48"> <transition name="to 提出申请" to="提出申请" g="-67,-20"/> </start> <end name="end1" g="303,340,48,48"/> <task name="提出申请" g="281,88,92,52" assignee="[员工]小李"> <transition name="to 部门经理审批" to="部门经理审批" g="-91,-20"/> </task> <task name="部门经理审批" g="281,172,92,52" assignee="[部门经理]李总"> <transition name="to 总经理审批" to="总经理审批" g="-79,-20"/> </task> <task name="总经理审批" g="281,256,92,52" assignee="[总经理]张总"> <transition name="to end1" to="end1" g="-45,-20"/> </task> </process>
整个流程就是:[员工]小李提出申请--》[部门经理]李总审批--》[总经理]张总审批。
10)单元测试代码。
package cn.luxh.jbpm4; import java.util.List; import org.jbpm.api.Configuration; import org.jbpm.api.ProcessEngine; import org.jbpm.api.ProcessInstance; import org.jbpm.api.task.Task; import org.junit.Test; public class JBPM4Test { //建立jBPM4.4的数据库表 @Test public void testCreateSchema() { new org.hibernate.cfg.Configuration().configure("jbpm.hibernate.cfg.xml").buildSessionFactory(); } //流程引擎,通过流程引擎获取各种服务接口 private ProcessEngine processEngine = Configuration.getProcessEngine(); //部署流程定义 @Test public void testDeployProcessDefinition() { processEngine.getRepositoryService() .createDeployment() .addResourceFromClasspath("leave/Leave.jpdl.xml") .addResourceFromClasspath("leave/Leave.png").deploy(); } //启动流程实例 @Test public void testStartProcessInstance() { ProcessInstance processInstance = processEngine.getExecutionService().startProcessInstanceByKey("Leave"); System.out.println("processInstance id is:"+processInstance.getId()); System.out.println("processInstance key is:"+processInstance.getKey()); System.out.println("processInstance name is:"+processInstance.getName()); } //查找用户待办任务 @Test public void testFindTasksByUserId() { String userId = "[员工]小李"; //String userId = "[部门经理]李总"; //String userId = "[总经理]张总"; List<Task> tasks = processEngine.getTaskService().findPersonalTasks(userId); for(Task task : tasks) { System.out.println("当前处理人:"+task.getAssignee()+" 当前任务:"+task.getName()); } } //处理待办 @Test public void testCompleteTask() { String userId = "[员工]小李"; //String userId = "[部门经理]李总"; //String userId = "[总经理]张总"; List<Task> tasks = processEngine.getTaskService().findPersonalTasks(userId); for(Task task : tasks) { processEngine.getTaskService().completeTask(task.getId()); } } }
一、准备数据库
- 1.1首先安装ant >>>> baidu or google
- 1.2修改jbpm4.4的mysql.properties,主要是创建数据库的时候能对应你在mysql里面建立的schema,因为jbpm默认是用hibernate实现数据库的持久化 >>>>>D:\jbpm-4.4\install\jdbc中
-
1.3 cmd到>>>>>D:\jbpm-4.4\install 运行ant -Ddatabase=mysql create.jbpm.schema
当看到 Successful字样的时候,去数据库检查一下看看表是否都建好了
二、创建Project
- 2.1首先要创建一个Dynamic Web Project项目,并将jbpm配置文件放在指定位置,最后引入D:\jbpm-4.4\lib 下的jar
- 我的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>
- <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://192.168.0.100:3307/mtf_jbpm</property>
- <property name="hibernate.connection.username">MTF</property>
- <property name="hibernate.connection.password">a123b456</property>
- <property name="hibernate.hbm2ddl.auto">update</property>
- <!-- <property name="show_sql">false</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>
需要注意的是hibernate.hbm2ddl.auto create-drop是默认,有点遗忘……
- 2.3引入jbpm的jar >>D:\jbpm-4.4\lib 下,注意包的冲突,不要引入重复的
-
1. ${JBPM_HOME}/jbpm.jar(核心包)
2. JBPM_HOME/lib/*.jar,不添加以下jar包:servlet-api.jar, junit.jar。其中junit.jar一定不要添加,因为是3.8.2版本,与我们使用的junit4有冲突。
3. 所使用的数据库对应的驱动的jar包(第2步所添加的jar包中已包含mysql的jdbc驱动jar包)。
三、部署流程到Mysql数据库
- 3.1需要写一个Junit testCase
- public class LeaveDeploy {
- private String deploymentId;
- private ProcessEngine processEngine;
- private TaskService taskService;
- private RepositoryService repositoryService;
- private ExecutionService executionService;
- private HistoryService historyService;
- @Test
- public void testDeploy() {
- processEngine = new Configuration().getProcessEngine();
- repositoryService = processEngine.getRepositoryService();
- executionService = processEngine.getExecutionService();
- taskService = processEngine.getTaskService();
- historyService = processEngine.getHistoryService();
- deploymentId = processEngine.getRepositoryService().createDeployment()
- .addResourceFromClasspath("com/mtf/jbpm/process/leaveProcess.jpdl.xml")
- //指定jpdl.xml的路径
- // .addResourceFromClasspath("test/leaveProcess.png")
- .deploy();
- System.out.println("发布成功!");
- System.out.println(deploymentId);
- }
- }
运行junit,成功后发现数据库中有相应的记录就成功啦,其间可能遇到运行成功但是数据库没有字段增加的情况,忘了怎么解决了,我记的是粗心大意所致
相关推荐
**Jbpm4.4整合Spring Hibernate4详解** Jbpm4.4是一个流程管理系统,它结合了业务流程管理(BPM)和工作流服务,提供了强大的流程定义、执行和监控能力。在这个版本中,Jbpm与Spring框架和Hibernate ORM工具进行了...
【JBPM4.4+Hibernate3.5.4+Spring3.0.4+Struts2.1.8整合】的整个过程涉及到多个关键组件的集成,这些组件都是Java企业级开发中的重要部分。首先,JBPM(Business Process Management)是一个开源的工作流引擎,它...
【jbpm4.4+SSH】是一个集成的Java企业级应用框架,主要涉及的是工作流管理系统jbpm4.4与Spring、Struts2(SSH)三大框架的整合。jbpm4是一个开源的工作流程管理系统,它提供了流程定义、执行、监控和优化等一系列...
【JBPM4.4+Spring+EXT 整合详解】 JBPM(Java Business Process Management)是一个开源的工作流管理系统,主要用于处理业务流程自动化。版本4.4是JBPM的一个重要里程碑,它提供了强大的工作流设计、执行和监控能力...
3. **持久化**:jbpm4.4使用JPA(Java Persistence API)来保存流程实例和相关数据到数据库中,确保数据的持久性和可恢复性。 4. **任务服务**:提供了一套API来处理任务的分配、接收、完成和查询,使得业务用户...
【jbpm4.4+ssh配置】涉及到的是Java业务流程管理(Business Process Management,简称BPM)中的jbpm4.4版本与SSH(Struts2、Spring、Hibernate)框架的集成配置。jbpm是一个开源的BPM框架,利用Java语言实现,提供了...
【jbpm4.4+s2sh请假流程例子】是一个典型的结合了jbpm4.4工作流引擎和Struts2、Spring、Hibernate(S2SH)框架的实战项目,旨在演示如何在企业级应用中实现一个完整的请假流程。在这个例子中,jbpm4.4作为流程管理的...
jbpm4.4+ssh整合还需要安装插件进入到myeclipse中 将相应的jar文件放进去 就能够运行 ...ssh(strut2,hibernate3,spring3)三大框架整合的jar包 例子是 请假流程 代码中有很好的注释 便于初学者学习
这个集成项目是基于特定版本的这些技术,包括jbpm4.4(业务流程管理),spring2.5.6(依赖注入和事务管理),hibernate 3.6(对象关系映射),以及struts2.2.1(MVC框架)。下面将详细介绍这些组件以及它们如何协同...
【jbpm4.4】是业务流程管理(Business Process Management)框架的一个版本,它是一个开源的BPM系统,主要用于设计、执行和管理业务流程。jbpm4.4提供了图形化的流程设计工具,支持工作流定义语言(WSDL),并且与...
【JBPM4.4+SSH2完整整合jar包】是一个包含了一系列Java库的压缩包,主要用于帮助开发者在Java环境中实现业务流程管理(BPM)与Spring(SSH中的S)、Struts(SSH中的H)和Hibernate(SSH中的H)的深度集成。...
这个系统利用了jbpm4.4(Java Business Process Management)作为工作流引擎,SSH(Struts2、Spring、Hibernate)作为后端开发框架,Oracle数据库存储数据,以及jQuery EasyUI作为前端界面库。下面将详细介绍这些...
【jbpm4.4+SSH2 完整请假流程】是一个结合了业务流程管理(BPM)工具jbpm4.4与Spring、Struts、Hibernate(SSH2)框架的示例应用,用于演示如何在企业级Java应用中实现一个完整的请假流程。这个项目的核心是jbpm,一...
【jbpm4.4+tomcat+s2sh】是一个基于Java EE的完整开发流程,它结合了jBPM 4.4(一个轻量级的工作流管理系统),Tomcat(一个流行的Java应用服务器),以及SSH(Struts2、Spring和Hibernate三大Java Web开发框架的...
jbpm4.4版本在前一代的基础上进行了诸多改进和增强,包括更强大的工作流引擎、优化的性能以及对Java EE和Spring框架更好的支持。 二、jbpm4.4的主要特性 1. 工作流引擎:jbpm4.4的核心是其工作流引擎,它负责执行...
【JBPM4.4+SSH2 业务流 绑定表单Demo】是一个结合了Java企业级框架Spring(SSH2中的S和H)与工作流引擎JBPМ4.4的实战示例,用于演示如何在业务流程中集成自定义表单。这个Demo主要涵盖了以下几个关键知识点: 1. *...
【JBPM4.4工作流引擎】 JBPM(Java Business Process Management)是开源的工作流管理系统,版本4.4在这里用于处理业务流程的定义和执行。通过JBPM,可以定义复杂的业务流程,如审批流程,并实现流程的动态管理和...
**jBPM4.4与SSH整合配置及完整实例详解** jBPM(Java Business Process Management)是一款开源的工作流管理系统,主要用于处理业务流程自动化。在本实例中,我们将讨论如何将jBPM 4.4版本与SSH(Spring、Struts、...
3. **流程执行**:jBPM4.4提供了一个流程引擎,用于解析流程定义并执行流程实例。引擎支持流程的启动、挂起、恢复、终止等操作,并能处理并发和分支逻辑。 4. **任务管理**:jBPM中的任务服务允许用户交互地处理...