准备工作:开启mysql数据库服务并已生成jbpm数据库。
1、建立工程并在工程中建立工作流程,流程图如下:
流程定义的代码如下:
<?xml version="1.0" encoding="UTF-8"?>
<process name="leaveHoliday" xmlns="http://jbpm.org/4.3/jpdl">
<start g="120,0,92,52" name="start1">
<transition name="to 申请" to="申请"/>
</start>
<task g="96,96,92,52" name="申请">
<transition g="-53,-17" name="to 经理审批" to="经理审批"/>
</task>
<decision expr="#{content}" g="120,324,92,52" name="exclusive1">
<transition g="-47,-17" name="to end1" to="end1"/>
<transition g="349,348:-53,-17" name="to 老板审批" to="老板审批"/>
</decision>
<end g="120,504,48,48" name="end1"/>
<task g="300,384,92,52" name="老板审批">
<transition g="351,528:-47,-17" name="to end1" to="end1"/>
</task>
<task g="96,216,92,52" name="经理审批">
<transition g="-83,-17" name="to exclusive1" to="exclusive1"/>
<transition g="313,243;314,120:-53,-17" name="to 申请" to="申请"/>
</task>
</process>
2、编写测试代码,如下:
package com.tc.test;
import java.util.Iterator;
import java.util.List;
import org.jbpm.api.Configuration;
import org.jbpm.api.ExecutionService;
import org.jbpm.api.HistoryService;
import org.jbpm.api.ProcessEngine;
import org.jbpm.api.ProcessInstance;
import org.jbpm.api.RepositoryService;
import org.jbpm.api.TaskService;
import org.jbpm.api.history.HistoryProcessInstance;
import org.jbpm.api.task.Task;
public class JbpmTest {
/**
* @param args
*/
public static void main(String[] args) {
//depaly();
//createExecute();
showHistory();
showExecution();
showTask();
}
/**
* 部署工作流程
*/
public static void depaly(){
ProcessEngine pe=new Configuration().buildProcessEngine();
RepositoryService rs=pe.getRepositoryService();
rs.createDeployment().addResourceFromClasspath("leaveHoliday.jpdl.xml").deploy();
}
/**
* 创建工作流程实例
*/
public static void createExecute(){
//leaveHoliday.170001 =null null
//leaveHoliday-1
ProcessEngine pe=new Configuration().buildProcessEngine();
ExecutionService es=pe.getExecutionService();
ProcessInstance pi=es.startProcessInstanceByKey("leaveHoliday");
System.out.println("pi id:"+pi.getId()+" =key:"+pi.getKey()+" name:"+pi.getName()+" =ProcessDefinitionId:"+pi.getProcessDefinitionId());
}
/**
* 展示历史流程信息
*/
public static void showHistory(){
ProcessEngine pe=new Configuration().buildProcessEngine();
HistoryService hs=pe.getHistoryService();
//获取所有流程历史记录信息并输出
System.out.println("****************history********************");
List<HistoryProcessInstance> hiss=hs.createHistoryProcessInstanceQuery().list();
for (Iterator iterator = hiss.iterator(); iterator.hasNext();) {
HistoryProcessInstance historyProcessInstance = (HistoryProcessInstance) iterator
.next();
//null =leaveHoliday-1 leaveHoliday.160001active
System.out.println("key:"+historyProcessInstance.getKey()+" ProcessDefinitionId:"+historyProcessInstance.getProcessDefinitionId()
+" ProcessInstanceId:"+historyProcessInstance.getProcessInstanceId()+" state:"+historyProcessInstance.getState());
}
}
/**
* 展示当前引擎中待处理流程
*/
public static void showExecution(){
ProcessEngine pe=new Configuration().buildProcessEngine();
ExecutionService es=pe.getExecutionService();
//获取某个特定的流程实例
ProcessInstance res=es.createProcessInstanceQuery().processInstanceId("leaveHoliday.170001").uniqueResult();
System.out.println("----------------------待执行的流程实例信息----------------------------");
List<ProcessInstance> pl=es.createProcessInstanceQuery().list();
for (Iterator iterator = pl.iterator(); iterator.hasNext();) {
ProcessInstance processInstance = (ProcessInstance) iterator.next();
System.out.println("id:"+processInstance.getId()+" key : "+processInstance.getKey()+" name :"+processInstance.getName()
+" ProcessDefinitionId:"+processInstance.getProcessDefinitionId()+" state:"+processInstance.getState());
}
}
/**
* 展示所有待处理任务信息
*/
public static void showTask(){
System.out.println("----------------------------task---------------------------------");
ProcessEngine pe=new Configuration().buildProcessEngine();
TaskService ts=pe.getTaskService();
//查找指定流程实例的任务
Task t=ts.createTaskQuery().processInstanceId("leaveHoliday.170001").uniqueResult();
System.out.println(t.getId()+":"+t.getName()+":"+t.getActivityName()+":"+t.getDescription()+":"+t.getExecutionId());
List<Task> ls=ts.createTaskQuery().list();
for (Iterator iterator = ls.iterator(); iterator.hasNext();) {
Task task = (Task) iterator.next();
System.out.println("id:"+task.getId()+" name:"+task.getName()+" getActivityName:"
+task.getActivityName()+" getDescription:"+task.getDescription()+" executionId:"+task.getExecutionId());
}
}
}
相关推荐
1. **jbpm-jpdl.jar**:这是jPDL的核心程序包,包含了流程定义和运行时流程实例管理的API。它可以将流程定义存储为XML文件并在内存中管理执行过程。 2. **jbpm-jpdl-designer-3.1.2.zip**:这是一个基于Eclipse的...
jBpm 提供了一种方式,使得开发者能够用简单而强大的语言来表达业务流程,并将这些流程打包到流程档案(BPMN)中,以便在jBpm运行时服务器上执行。 jBpm 是Java Business Process Management 的缩写,它不仅是一个...
jbpm-4.3-src.rar_bdf-jbpm4 src _jboss 4.3_jboss jbpm4.3_jbpm-4.3 这个压缩包文件包含的是JBOSS jBPM4.3的源代码,这是一个用于业务流程管理(BPM)的开源框架。jBPM是一个强大的工具,它提供了流程定义、执行和...
- jbPM和Activiti的API和概念:如流程定义、流程实例、任务管理、事件监听器等。 - 集成jbPM/Activiti与Spring、Hibernate等Java框架的方法。 - MEAN全栈开发:了解MongoDB的数据模型,Express的路由和中间件,...
6. **持久化**:jbpm使用Hibernate进行数据持久化,确保流程实例和相关数据在流程执行过程中得以保存。 7. **可扩展性**:jbpm的设计允许开发者通过插件和自定义组件来扩展其功能,适应不同业务需求。 在jbpm-4.3...
此外,jBPM还提供了命令行工具和API,方便开发者进行流程部署、实例管理和监控。 **四、jBPM集成** jBPM可以轻松地与其他Java应用集成,如Spring框架。它还支持与各种数据库系统的连接,以及通过JMS、EJB、Web服务...
核心程序包jbpm-jpdl.jar包含了流程定义和运行时环境的操作API。在实际应用中,流程信息需要持久化存储,jPDL利用Hibernate作为对象持久化工具。 为了简化流程设计,jBPM提供了一个名为Graphical Process Designer...
jPDL-identity.jar是jBPM的轻量级扩展,实现了基础的用户认证和权限管理功能,适用于需求简单的应用场景。另外,jBPM Console是一个基于JSF技术的Web应用程序,用于监控jPDL平台的执行情况,包括数据库监控、流程...
该CHM文件应该详细阐述了jbpm 4.4的API使用方法,包括各个服务接口的调用示例,以及如何进行流程定义的编排。开发者可以通过这个文档深入理解jbpm的编程模型,学习如何利用API实现业务逻辑。 ### 4. JBPM入门手册 ...
jbpm-7.18.0.Final-examples.zip 是一个包含 jBPM 7 最新版本示例的压缩包,旨在帮助开发者更好地理解和学习如何使用 jBPM 进行业务流程管理(Business Process Management)的开发。jBPM 是一个开源的工作流和业务...
本指南将深入探讨jBPM 4.0的各个方面,帮助开发者掌握如何在实际项目中有效地使用这个强大的工具。 ### 1. jBPM 4.0核心概念 - **流程定义**: 使用 BPMN(Business Process Model and Notation)标准进行流程建模...
7. **持久化**:jbPM使用JPA(Java Persistence API)进行数据持久化,确保流程实例和任务状态在系统重启后能够恢复。手册将阐述如何配置和使用这个功能。 8. **监控与调试**:jbPM提供了丰富的监控工具,如流程...
jBPM2 版本中,流程图和JBPM API 是核心组成部分,帮助开发者实现复杂的业务流程自动化。 ### 1. jBPM-jBDL 相关概念 jBPM-jBDL(jBPM Business Definition Language)是一种用来定义业务流程的语言,基于有向图...
JBPM核心库包含了执行引擎、API接口和数据持久化等关键组件,是整个系统运行的基础。 #### 1.6 身份组件 JBPM的身份组件负责处理用户认证和授权,确保流程执行的安全性。 #### 1.7 Job Executor Job Executor是一...
- **使用**:介绍了如何在Spring环境中使用jBPM。 - **测试**:提供了关于如何测试Spring集成的建议。 #### 十六、Signavio web建模器 - **安装**:描述了如何安装和配置Signavio web建模器。 - **配置**:提供了...
在深入研究jbpm4.4-demo时,你将学习到如何使用jbpm提供的API和工作流服务,如流程实例的启动、任务的领取和完成、流程变量的获取和修改等。同时,你还会接触到如何利用jbpm的工作流引擎进行流程的动态改变和扩展,...
`jbpm-rest` 是一个基于 jBPM(Java Business Process Management)的简单 REST(Representational State Transfer)接口实现。jBPM 是一个开源的工作流和业务流程管理框架,它提供了强大的 BPMN 2.0 支持,允许...
- jBPM BPMN2-6.5.0.Final.jar:这个文件包含了BPMN2的解析和执行引擎,允许开发者使用图形化的流程设计工具来定义复杂的业务流程。 2. **工作流执行**: - jbpm-flow-6.5.0.Final.jar:这是核心流程执行库,包含...
本教材通过一个简单的HelloWorld示例,介绍了JBPM的基本概念、JPDL语言的使用以及如何进行环境搭建和配置。通过这些基础知识的学习,初学者可以快速入门JBPM,并能够基于此进行更深入的研究和实践。