package com.sample;
import junit.framework.TestCase;
import org.jbpm.JbpmConfiguration;
import org.jbpm.JbpmContext;
import org.jbpm.context.exe.ContextInstance;
import org.jbpm.graph.def.ProcessDefinition;
import org.jbpm.graph.exe.ProcessInstance;
public class SimpleProcessTest extends TestCase {
private JbpmConfiguration config = JbpmConfiguration.getInstance();
private JbpmContext ctx = config.createJbpmContext();
// helloworld 对应于 jbpm_processdefinition 表的 name 字段值,也即 processdefinition.xml 的 name
// 这个值得取比较耗时,实际项目里最好和“数据库的 JDBC 连接”一样,让它共享,不要频繁打开关闭。
private ProcessDefinition processDefinition = ctx.getGraphSession().findLatestProcessDefinition("helloworld");
public void testNewRequest() {
long id = newRequest();
System.out.println("id=" + id);
checkNewRequest(id);
confirmRequest(id);
checkconfirmRequest(id);
ctx.close();// 关闭 jbpm 容器
}
/**
* 创建一个请假单
*
* @return
*/
private long newRequest() {
// 创建一个新流程
ProcessInstance pi = processDefinition.createProcessInstance();
// 取得流程的数据环境
ContextInstance ci = pi.getContextInstance();
// 创建一张请假单
ci.setVariable("name", " 陈刚 www.chengang.com.cn" );
ci.setVariable("day", 2);
assertEquals(null, ci.getVariable("note"));
// 请假申请结束,转到下一个流程结点
pi.signal();
return pi.getId();
}
/**
* 检查请假单的数据
*
* @param id
*/
private void checkNewRequest(long id) {
// 从数据库提取原流程
ProcessInstance pi = ctx.loadProcessInstance(id);
// 取得流程的数据环境
ContextInstance ci = pi.getContextInstance();
// 创建一张请假单
assertEquals(" 陈刚 www.chengang.com.cn" , ci.getVariable("name"));
assertEquals(Integer.valueOf(2), ci.getVariable("day"));
assertEquals(" 我要请假 " , ci.getVariable("note"));
// 当前是结点为 confirm
assertEquals(pi.getRootToken().getNode().getName(), "confirm");
// 流程还没结束
assertFalse(pi.hasEnded());
}
/**
* 审批陈刚的请假申请
*
* @param id
*/
private void confirmRequest(long id) {
ProcessInstance pi = ctx.loadProcessInstance(id);
ContextInstance ci = pi.getContextInstance();
// 不通过
ci.setVariable("note", " 不准请假,继续加班 " );
// 审批结束,到下一个流程结点
pi.signal();
}
private void checkConfirmRequest(long id) {
ProcessInstance pi = ctx.loadProcessInstance(id);
ContextInstance ci = pi.getContextInstance();
// ConfirmAction 类在 signal 后执行,所以覆盖了经理的审批意见
assertEquals(" 准假 " , ci.getVariable("note"));
// 当前是结点为 end
assertEquals(pi.getRootToken().getNode().getName(), "end");
// 流程结束了
assertTrue(pi.hasEnded());
}
}
分享到:
相关推荐
这个"我自己写的jbpm小例子"旨在帮助用户快速理解jbpm的核心概念和基本操作,以轻松上手这个强大的工具。 首先,让我们深入理解jbpm的主要组件和功能: 1. **流程定义**:jbpm使用BPMN 2.0(Business Process ...
**JBPM4.4入门详解** JBPM,全称Java Business Process Management...通过实践这个简单的jsp+servlet例子,你将能够初步掌握如何在实际应用中使用JBPM。在学习过程中,不断探索和实践,逐步提升你的业务流程管理能力。
【JBPM例子】是关于Java Business Process Management System (JBPM) 的一系列示例代码,用于展示如何在实际项目中使用这个工作流引擎。JBPM是一个开源的企业级平台,主要用于管理和执行业务流程。它提供了全面的...
【JBPM web(SSH+JBPM)例子】是一个基于Java技术栈实现的工作流管理系统示例,其中SSH代表Spring、Struts和Hibernate这三个流行的Java企业级开发框架的组合,而JBPM则是Business Process Management(业务流程管理...
【jbpm5完整的例子】是针对企业业务流程管理(Business Process Management, BPM)的一个实践教程,其中涵盖了jbpm5框架的多个核心功能和用法。jbPM是一个开源的工作流管理系统,它提供了强大的流程定义、执行和监控...
这个“jbpm的小例子”是一个实际应用的案例,展示了如何利用jbpm构建请假审批流程,涵盖了流程定义、任务交互和审批流程的完整生命周期。对于学习和理解jbpm的工作原理和使用方法,这样的例子具有很高的参考价值。
这是本人学习jbpm以来看过的写的最有条理的一个例子,基于现在网上jbpm的例子比较的少,所以上传上来和大家一起分享
这是一个完整的jbpm借款例子 调试环境tomcat6 +jbpm 3.2 + jdk5 tomcat6 lib里边要有 commons-collections.jar mysql-connector-java.jar jta.jar commons-digester.jar 然后创建数据名称 testjbpm 编码为gbk ...
3. **数据库支持**: 按照描述,这个例子程序使用了MYSQL数据库来存储流程实例、任务、变量等信息。JBPM支持多种数据库,包括MySQL,这使得它能在各种环境中灵活部署。 4. **任务服务**: JBPM提供了任务服务,使得...
这个“jbpm练习小例子”是针对jbpm 3.2版本的一系列教程,主要针对初学者,旨在帮助他们快速理解和掌握jbpm的基本概念和操作。 在这些压缩包中的文件名,我们可以推测出它们包含了多个不同主题的流程管理实践,如...
jbpm演示demo例子
【jbpm3.2.3例子】是一个基于特定技术环境的流程管理实例,它涵盖了jbpm(Java Business Process Management)3.2.3版本的使用,该版本是jbpm流程引擎的一个早期迭代,用于实现业务流程自动化。在这个例子中,我们将...
【jbpm4.4请假例子】是一个基于jbpm4.4流程引擎的示例项目,它展示了一个在Eclipse环境中开发的请假流程。jbPM(Java Business Process Management)是一个开源的工作流和业务流程管理框架,它允许开发者设计、执行...
jbpm入门例子收藏 jBPM(Java Business Process Management)是一个开源的工作流管理系统,由JBoss组织开发。它主要用于管理业务流程,支持流程定义、执行、监控和优化。jBPM提供了一整套工具,包括Eclipse插件,...
**jbpm请假例子完整源代码**是一套基于jbpm流程引擎的示例应用,它用于演示如何在实际项目中利用jbpm实现一个简单的请假流程。jbpm是一个开源的工作流管理系统,它提供了强大的业务流程建模、执行和管理能力。本示例...
【jbpm5 web整合例子】是一个关于如何将JBPM5工作流引擎与Web应用程序整合的实践项目,适合那些想要在Web环境中使用业务流程管理(BPM)功能的开发者。JBPM5是一个开源的工作流和业务规则管理系统,它提供了一整套...
【jbpm借款例子的JSP代码】是一个基于Java技术栈的业务流程管理(Business Process Management,简称BPM)示例,主要使用了jbpm 3.2版本,它是一个开源的工作流管理系统,能够帮助开发者设计、执行和管理工作流。...
本例子网上也有,只是有点问题,本人经过修改后想留给第一次学习jbpm的人,希望不让他们为一个问题而花费很长时间. 由于所有的jar包已上传,所以不在用QQ发jar包给各位下载的朋友, 请在以下页面下载本项目的jar包: ...
**jBPM4完整例子详解** jBPM4是一个企业级的工作流管理系统,它提供了强大的业务流程管理和工作流实现能力。这个"jBPM4完整例子"是一个基于SSH(Struts2、Spring、Hibernate)框架集成jBPM4.4的请假流程应用,非常...
这个"ssh+jbpm流程例子jar包2"是一个包含SSH和jbpm集成的示例项目,可能包括了以下关键知识点: 1. **SSH框架集成**:项目中会展示如何将Struts2、Spring和Hibernate整合在一起,实现从视图到模型再到数据访问的...