前面已经完成了HelloWorld(简单请假流程)的后台程序,在这里我们开始开发客户端,我们不是使用Swing、Web展示客户端,而是为了测试,这里使用JUnit 的形式,相信这个会了,其他的应该也容易了。
这里创建SimpleProcessTest .java文件,具体如下:
package com.worldunion.test; 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; import junit.framework.TestCase; public class SimpleProcessTest extends TestCase { private JbpmConfiguration config = JbpmConfiguration.getInstance(); private JbpmContext ctx = config.createJbpmContext(); //根据流程定义名称获取流程定义 private ProcessDefinition processDefinition = ctx.getGraphSession().findLatestProcessDefinition("JbpmHelloWorld"); public void testNewRequest(){ long id = newRequest(); checkNewRequest(id); confirmRequest(id); checkConfirmRequest(id); } /* * 创建一个请假单 */ private long newRequest(){ /** 创建一个流程 **/ ProcessInstance pi = (ProcessInstance) processDefinition.createInstance(); /** 取得流程的数据环境**/ ContextInstance ci = pi.getContextInstance(); /** 创建一张请假单 **/ ci.setVariable("name", "尚武,www.shangwu.com"); ci.setVariable("day", 2); assertEquals(null, ci.getVariable("note")); /** 请假申请结束,转到下一个流程节点**/ pi.signal(); return pi.getId(); } /** * 检查请假单的数据 */ private void checkNewRequest(long id){ //从数据库中提取原流程 ProcessInstance pi = ctx.loadProcessInstance(id); //取得流程的数据环境 ContextInstance ci = pi.getContextInstance(); //创建一张请假单 assertEquals("尚武,www.shangwu.com", ci.getVariable("name")); assertEquals(Integer.valueOf(2), ci.getVariable("day")); System.out.println("----------------------------------"); System.out.println(ci.getVariable("note")); System.out.println("----------------------------------"); assertEquals("我要请假", ci.getVariable("note")); //当前是节点为confirm assertEquals(pi.getRootToken().getNode().getName(), "confirm"); //流程还没有结束 assertFalse(pi.hasEnded()); } /** * 审批尚武的请假申请 * 同意 */ private void confirmRequest(long id){ ProcessInstance pi = ctx.getProcessInstance(id); ContextInstance ci = pi.getContextInstance(); ci.setVariable("note", "不准请假,继续加班"); pi.signal(); System.out.println("----------------------------------"); System.out.println(pi.getRootToken().getNode().getName()); System.out.println("----------------------------------"); } /** * 审批尚武请假申请 * 不同意 * @param id */ private void checkConfirmRequest(long id){ ProcessInstance pi = ctx.getProcessInstance(id); ContextInstance ci = pi.getContextInstance(); assertEquals("准假",ci.getVariable("note")); assertEquals(pi.getRootToken().getNode().getName(),"end"); assertTrue(pi.hasEnded()); } }
到这里hello World(简单的请假流程基本完成),有兴趣的可以试试。
