與大家共同成長
<?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