package com.sxito.jbpm; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.exe.ProcessInstance; public class Jbpm_04_SubmitDocument extends TestCase { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); /** * 将公文提交到第一个环节 * 根据公文编号得到该公文对象 * 根据该公文对象获得流程实例编号 * 根据流程实例编号获得流程实例对象 * 调用流程实例对象的signal()方法。 * */ public void testSubmitDocument(){ //创建jbpm上下文对象 JbpmContext context = jbpmConfiguration.createJbpmContext(); try{ //已知公文Id 获取公文 根据公文获取流程实例编号 根据流程实例编号获取流程实例 调用signal()方法提交 int docId = 1; Document doc = (Document) context.getSession().load(Document.class, docId); long processInstanceId = doc.getProcessInstanceId(); ProcessInstance instance = context.getProcessInstance(processInstanceId); //只能从开始节点第一次提交的时候调用一次,原因如下 // 例如流程为 甲到乙到丙 若用三次signal()方法 // 则 甲乙丙都会有该公文 不是我们想要点只有丙有,甲乙没有的状况 instance.signal(); }catch(Exception e){ e.printStackTrace(); // 如果部署不成功则回滚 context.setRollbackOnly(); }finally{ context.close(); } } }