package helloworld;
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 ClientTest {
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);
System.out.println(ci.getVariable("name"));
System.out.println(ci.getVariable("note"));
System.out.println(ci.getVariable("day"));
// 请假申请结束,转到下一个流程结点
pi.signal();
return pi.getId();
}
/**
* 检查请假单的数据
*
* @param id
*/
private void checkNewRequest(long id) {
// 从数据库提取原流程
ProcessInstance pi = ctx.loadProcessInstance(id);
// 取得流程的数据环境
ContextInstance ci = pi.getContextInstance();
// 创建一张请假单
System.out.println(ci.getVariable("name"));
System.out.println(ci.getVariable("day"));
System.out.println(ci.getVariable("note"));
// 当前是结点为 confirm
System.out.println(pi.getRootToken().getNode().getName());
// 流程还没结束
System.out.println(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 后执行,所以覆盖了经理的审批意见
System.out.println( ci.getVariable("note"));
// 当前是结点为 end
//assertEquals(pi.getRootToken().getNode().getName(), "end");
System.out.println(pi.getRootToken().getNode().getName());
// 流程结束了
//assertTrue(pi.hasEnded());
System.out.println(pi.hasEnded());
}
public static void main(String args[]) {
ClientTest client = new ClientTest();
long id=client.newRequest();
client.checkNewRequest(id);
client.confirmRequest(id);
client.checkConfirmRequest(id);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
jbpm3.1.4经典教程.rar (27个子文件)
jbpm3.1.4学习笔记.doc 157KB
JBPM工作流开发指南v10-20070706.rar 2MB
jbpmtest2
src
main
jpdl
simple
processdefinition.xml 892B
processimage.jpg 13KB
gpd.xml 487B
java
com
sample
action
MessageActionHandler.java 702B
config
log4j.properties 1KB
hibernate.cfg.xml 8KB
jbpm.cfg.xml 299B
test
helloworld
DeployProcessTest.java 1KB
RequestAction.java 554B
ConfirmAction.java 364B
ClientTest.java 3KB
test
bin
com
sample
action
MessageActionHandler.class 935B
helloworld
RequestAction.class 1KB
ClientTest.class 3KB
DeployProcessTest.class 1KB
ConfirmAction.class 872B
log4j.properties 1KB
simple
processdefinition.xml 892B
processimage.jpg 13KB
gpd.xml 487B
hibernate.cfg.xml 8KB
jbpm.cfg.xml 299B
.classpath 595B
.settings
org.eclipse.core.resources.prefs 153B
.project 385B
共 27 条
- 1
资源评论
- yupengcc2014-05-06东西很全,挺有用
- luojianjian53013142012-07-10教程化的东西,不太具体,比较抽象。
anla520
- 粉丝: 1
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功