package jbpm.java;
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 HelloworldProcessTest 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"));
System.out.println("流程结束!");
// 当前是结点为 end
assertEquals(pi.getRootToken().getNode().getName(), "end");
// 流程结束了
assertTrue(pi.hasEnded());
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
webJBPM.rar (29个子文件)
webJBPM
.project 1KB
.settings
org.eclipse.jdt.core.prefs 629B
.mymetadata 294B
WebRoot
WEB-INF
web.xml 375B
lib
classes
jbpm.cfg.xml 299B
jbpm
action
ConfirmAction.class 870B
RequestAction.class 1KB
jpdl
helloworld
gpd.xml 422B
processdefinition.xml 801B
processimage.jpg 15KB
java
DeployProcessJunit.class 1KB
DeployProcess.class 1KB
HelloworldProcessTest.class 3KB
jbpm.mail.templates.xml 759B
hibernate.cfg.xml 10KB
index.jsp 834B
META-INF
MANIFEST.MF 39B
.myeclipse
src
jbpm.cfg.xml 299B
jbpm
action
ConfirmAction.java 370B
RequestAction.java 529B
jpdl
helloworld
gpd.xml 422B
processdefinition.xml 801B
processimage.jpg 15KB
java
HelloworldProcessTest.java 3KB
DeployProcess.java 964B
DeployProcessJunit.java 1KB
jbpm.mail.templates.xml 759B
hibernate.cfg.xml 10KB
.classpath 2KB
共 29 条
- 1
资源评论
- 小小金2013-09-03没什么用的!!
- tangmin8232014-08-21谢谢分享,测试过了,可以用来参考
- ff383073912011-10-31别下了,什么都没有!既看不到流程的跳转,也看不到跟jbpm有关的配置,就JAR包都没有。就是一空壳子。
ll1985
- 粉丝: 1
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功