jbpm

2026/4/29 20:12:26

这个 JUnit 客户端,我们就借用创建项目时自动生成的 SimpleProcessTest.java 了,改写后如下: 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(\orld\);

public void testNewRequest() {

long id = newRequest();

System.out.println(\ + id); checkNewRequest(id);

}

confirmRequest(id); checkconfirmRequest(id); ctx.close();// 关闭 jbpm 容器

/**

* 创建一个请假单 *

* @return */

private long newRequest() {

// 创建一个新流程 ProcessInstance pi =

processDefinition.createProcessInstance();

/**

* 检查请假单的数据 }

// 取得流程的数据环境

ContextInstance ci = pi.getContextInstance(); // 创建一张请假单

ci.setVariable(\, \ 陈刚 www.chengang.com.cn\ ); ci.setVariable(\, 2);

assertEquals(null, ci.getVariable(\)); // 请假申请结束,转到下一个流程结点 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(\));

assertEquals(Integer.valueOf(2),

ci.getVariable(\));

// 当前是结点为 confirm

assertEquals(pi.getRootToken().getNode().getName(),

assertEquals(\ 我要请假 \ , ci.getVariable(\));

\);

/**

* 审批陈刚的请假申请 *

* @param id */ }

// 流程还没结束

assertFalse(pi.hasEnded());

private void confirmRequest(long id) { }

ProcessInstance pi = ctx.loadProcessInstance(id); ContextInstance ci = pi.getContextInstance(); // 不通过

ci.setVariable(\, \ 不准请假,继续加班 \ ); // 审批结束,到下一个流程结点 pi.signal();

private void checkConfirmRequest(long id) {

ProcessInstance pi = ctx.loadProcessInstance(id); ContextInstance ci = pi.getContextInstance(); // ConfirmAction 类在 signal 后执行,所以覆盖了经理的审批

意见

// 当前是结点为 end

assertEquals(pi.getRootToken().getNode().getName(),

assertEquals(\ 准假 \ , ci.getVariable(\));

\); }

这个例子还是很简单,而且关键是缺少用户、组、权限等工作流系统必须的东西,不过没关系。下面的内容我将完成一个更完整的实例。

}

// 流程结束了

assertTrue(pi.hasEnded());


jbpm.doc 将本文的Word文档下载到电脑
搜索更多关于: jbpm 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219