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,全称Java Business Process Management,是一个开源的工作流管理系统,用于管理和执行业务流程。它提供了强大的流程建模、执行、监控和优化功能,使得开发者可以灵活地构建和管理复杂的...
3. **jbpm开发指南** - **使用Eclipse集成开发**:jbpm提供了Eclipse插件,便于流程模型的图形化设计。 - **编写业务逻辑**:在流程中嵌入Java代码或使用MVEL表达式实现任务的逻辑处理。 - **监听器和事件**:...
【jbpm开发入门指南例子】 jbpm,全称是Java Business Process Management,是一个开源的工作流管理系统,用于构建业务流程应用。它提供了强大的流程定义、执行、监控和管理能力,广泛应用于企业的业务流程自动化中...
【jBPM开发入门指南】 jBPM(Java Business Process Management)是一个开源的工作流管理系统,用于构建和执行业务流程。它最初是一个独立的项目,后来被JBoss组织接纳,成为其产品线的一部分。jBPM旨在提供灵活、...
在开始jBPM开发之前,我们需要安装和配置jBPM环境。这通常包括下载jBPM工具套件,比如jBPM Workbench,它提供了一个可视化的流程设计器。同时,我们还需要配置相关的开发环境,如设置JDK版本、集成IDE(如Eclipse或...
### jBPM开发入门指南知识点概述 #### 一、jBPM简介与市场需求 - **jBPM**:jBPM是一种广泛应用于企业级应用程序的工作流管理系统的开源框架。随着业务流程复杂性的增加以及对自动化需求的增长,jBPM成为了众多...
标题所指的知识点为“jBPM开发入门指南”,这是一本指导用户如何入门学习和开发jBPM的指南手册。jBPM是一个企业级业务流程管理(BPM)解决方案,它允许用户定义、执行、监控和优化业务流程。jBPM与Hibernate的整合、...
### jBPM4.4开发指南关键知识点解析 #### 一、工作流基础与概念 **1. 工作流定义** 工作流是指业务过程的部分或整体在计算机应用环境下的自动化,其目的是为了使在多个参与者之间按照某种预定义的规则传递文档、...
前篇说起要讲在JBPM中实现用户权限,但这段时间比较忙,一直拖着。这里先把jbpm自带的websale例子放上来,大伙先将就看看。这个例子我已经把它抽取了出去,网页部份丢弃了。在看的时候主要看WebsaleTest.java,看看...
在开始jBPM开发之前,需要进行数据库初始化。这是因为jBPM需要一个数据库来存储其内部的初始化数据以及运行时的工作流数据。由于jBPM依赖Hibernate,所以只要Hibernate支持的数据库,jBPM都能够使用。在本指南中,...
JBPM开发指南 ,很好的入门指南