與大家共同成長(zhǎng)
<?xml version="1.0" encoding="UTF-8"?> <process-definition xmlns="" name="test1"> <start-state name="start"> <transition name="" to="部門(mén)經(jīng)理審批"></transition> </start-state> <task-node name="部門(mén)經(jīng)理審批"> <task> <assigment actorId="部門(mén)經(jīng)理"></assigment> </task> <transition name="" to="總經(jīng)理審批"></transition> </task-node> <task-node name="總經(jīng)理審批"> <task> <assigment actorId="總經(jīng)理"></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(){ //創(chuàng)建jbpm數(shù)據(jù)庫(kù)表。他就像hibernate里面的哪個(gè)export一樣。實(shí)際上他就是hibernate里面的哪個(gè)export。 //應(yīng)為他映射了很多個(gè)表,所以我們就能創(chuàng)建那么多個(gè)表。 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對(duì)象的創(chuàng)建 static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(); public void testJbpm(){ //然后我們把processDefinition里面相關(guān)的對(duì)象持久化到數(shù)據(jù)庫(kù)里面去。 //流程定義文件里面有很多個(gè)概念,他有node,有transition,還有processDefinition,那么我們不需要一個(gè) //一個(gè)保存,jbpm把保存這么多對(duì)象的方法封裝成一個(gè)接口,叫做deployProcessDefinition。我們只要調(diào)用這個(gè) //方法,傳一個(gè)processDefinition對(duì)象,我們就能將他們存入到數(shù)據(jù)庫(kù)里面去。 //這個(gè)首先第一步我們要得到一個(gè)processDefinition對(duì)象,然后我們把他部署到流程中去。 ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("testJBPM/testJbpm.xml"); //我們要存就必須獲得一個(gè)session對(duì)象,而jbpm已經(jīng)把session對(duì)象封裝到一個(gè)JbpmContext對(duì)象里面了。 //那么這個(gè)jbpmContext對(duì)象是怎么得到的呢,我們要先有一個(gè)jbpmConfiguration對(duì)象,我們要對(duì)數(shù)據(jù)庫(kù)進(jìn)行 //操作的時(shí)候一定要有jbpmConfiguration這個(gè)對(duì)象,用他來(lái)創(chuàng)建一個(gè)類(lèi)似于hibernate當(dāng)中的session一樣的 //對(duì)象——jbpmContext。他是我們對(duì)數(shù)據(jù)庫(kù)所有的操作的一個(gè)接口。 JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext(); try{ //然后部署的操作已經(jīng)由jbpmContext給我們創(chuàng)建好了,我們只需要調(diào)一下他的一個(gè)方法就可以了。 jbpmContext.deployProcessDefinition(processDefinition); }finally{ //最后我們還要對(duì)他close一下,就像我們用hibernate的時(shí)候要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; /** /* /*將申請(qǐng)單和流程實(shí)例綁定 /* 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