与大家共同成长
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="" name="test1"> <start-state name="start"> <transition name="" to="部门经理审批"></transition> </start-state> <task-node name="部门经理审批"> <task> <assigment actorId="部门经理"></assigment> </task> <transition name="" to="总经理审批"></transition> </task-node> <task-node name="总经理审批"> <task> <assigment actorId="总经理"></assigment> </task> <transition name="" to="end1"></transition> </task-node> <end-state name="end1"></end-state> </process-definition>
package com.jbpm.test; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; public class TestJbpm_01 extends TestCase { public void testJbpm(){ //创建jbpm数据库表。他就像hibernate里面的哪个export一样。实际上他就是hibernate里面的哪个export。 //应为他映射了很多个表,所以我们就能创建那么多个表。 JbpmConfiguration.getInstance().createSchema(); } }
package com.jbpm.test; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.def.ProcessDefinition; public class TestJbpm_02 extends TestCase { //jbpmConfiguration对象的创建 static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ //然后我们把processDefinition里面相关的对象持久化到数据库里面去。 //流程定义文件里面有很多个概念,他有node,有transition,还有processDefinition,那么我们不需要一个 //一个保存,jbpm把保存这么多对象的方法封装成一个接口,叫做deployProcessDefinition。我们只要调用这个 //方法,传一个processDefinition对象,我们就能将他们存入到数据库里面去。 //这个首先第一步我们要得到一个processDefinition对象,然后我们把他部署到流程中去。 ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml"); //我们要存就必须获得一个session对象,而jbpm已经把session对象封装到一个JbpmContext对象里面了。 //那么这个jbpmContext对象是怎么得到的呢,我们要先有一个jbpmConfiguration对象,我们要对数据库进行 //操作的时候一定要有jbpmConfiguration这个对象,用他来创建一个类似于hibernate当中的session一样的 //对象——jbpmContext。他是我们对数据库所有的操作的一个接口。 JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); try{ //然后部署的操作已经由jbpmContext给我们创建好了,我们只需要调一下他的一个方法就可以了。 jbpmContext.deployProcessDefinition(processDefinition); }finally{ //最后我们还要对他close一下,就像我们用hibernate的时候要close session一样。 jbpmContext.close(); } } }
package com.jbpm.test; import junit.framework.TestCase; import org.hibernate.Session; public class TestJbpm_03 extends TestCase { public void testJbpm(){ Session session = null; try{ session = HibernateUtil.getSession(); session.beginTransaction(); Document doc = new Document(); doc.setTitle("title3"); doc.setContent("this is content3"); session.save(doc); session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); session.getTransaction().rollback(); }finally{ HibernateUtil.closeSession(session); } } }
package com.jbpm.test; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.def.ProcessDefinition; import org.jbpm.graph.exe.ProcessInstance; /** /* /*将申请单和流程实例绑定 /* public class TestJbpm_04 extends TestCase { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory()); try { ProcessDefinition processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("testJbpm"); ProcessInstance processInstance = new ProcessInstance(processDefinition); jbpmContext.save(processInstance); //将我们的document和instance绑定。 long processInstanceId = processInstance.getId(); Document document = (Document)jbpmContext.getSession().load(Document.class,1); document.setProcessInstanceId(processInstanceId); jbpmContext.getSession().update(document); processInstance.getContextInstance().setVariable("document", document.getId()); }catch(Exception e){ e.printStackTrace(); }finally{ jbpmContext.close(); } } }
package com.jbpm.test; import junit.framework.TestCase; import org.jbpm.JbpmConfiguration; import org.jbpm.JbpmContext; import org.jbpm.graph.exe.ProcessInstance; public class TestJbpm_05 extends TestCase { static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); jbpmContext.setSessionFactory(HibernateUtil.getSessionFactory()); try{ Document document = (Document)jbpmContext.getSession().load(Document.class, 3); long processInstanceId = document.getProcessInstanceId(); ProcessInstance processInstance = jbpmContext.getProcessInstance(processInstanceId); processInstance.signal(); }finally{ jbpmContext.close(); } } }
Copyright @ 小菜毛毛 Powered by: .Text and ASP.NET Theme by: .NET Monster