1 package org.smartcomps.twister.worklist; 2 3 import junit.framework.TestCase; 4 import net.sf.hibernate.tool.hbm2ddl.SchemaExport; 5 import net.sf.hibernate.cfg.Configuration; 6 7 import org.smartcomps.twister.common.transaction.TransactionManager; 8 import org.smartcomps.twister.common.lifecycle.LifecycleManager; 9 import org.smartcomps.twister.engine.priv.core.definition.*; 10 import org.smartcomps.twister.engine.priv.core.dynamic.ProcessInstance; 11 import org.smartcomps.twister.engine.priv.core.dynamic.ProcessInstanceFactory; 12 import org.smartcomps.twister.engine.TwisterEngineFactory; 13 14 import org.dom4j.Document; 15 import org.dom4j.DocumentHelper; 16 import org.dom4j.Element; 17 18 import java.util.Collection; 19 import java.util.Map; 20 import java.util.HashMap; 21 22 public class TestEngineWorkItemCreation extends TestCase { 23 24 private TwisterProcess process; 25 private Sequence sequence; 26 private Receive receive1; 27 private Invoke invoke; 28 private Receive receive2; 29 30 protected void setUp() throws Exception { 31 LifecycleManager.getLifecycleManager().createResources(); 32 LifecycleManager.getLifecycleManager().startResources(); 33 34 SchemaExport schemaExport = new SchemaExport(new Configuration().configure()); 35 schemaExport.create(true, true); 36 } 37 38 protected void tearDown() throws Exception { 39 LifecycleManager.getLifecycleManager().stopResources(); 40 LifecycleManager.getLifecycleManager().destroyResources(); 41 } 42 43 public void testCreateWorkItemThroughEngine() throws Exception { 44 TransactionManager.beginTransaction(); 45 createProcess(); 46 TransactionManager.commitTransaction(); 47 48 Document message = DocumentHelper.createDocument(); 49 Element mainPart = message.addElement("message").addElement("wipart"); 50 mainPart.addElement("user").setText("johndoe"); 51 mainPart.addElement("description").setText("Go find a better name"); 52 TwisterEngineFactory.getEngine().acknowledge("WorkItemCreator", "WorkItemCreatorPT", "InitWork", message); 53 54 // Waiting a little bit to make sure everything's done. 55 Thread.sleep(5000); 56 57 Collection johnWorkList = TwisterWorkListFactory.getWorkList().getWorkList("johndoe"); 58 assertEquals("The worklist should contain exactly one work item", 1, johnWorkList.size()); 59 60 TwisterWorkListFactory.getWorkList().completeWorkItem(((WorkItem)johnWorkList.iterator().next()).getId()); 61 62 // Waiting a little bit to make sure everything's done. 63 Thread.sleep(5000); 64 65 TransactionManager.beginTransaction(); 66 Map corrProp = new HashMap(); 67 corrProp.put("workitemid", ((WorkItem)johnWorkList.iterator().next()).getId().toString()); 68 ProcessInstance createdInstance = ProcessInstanceFactory.findInstanceByCorrelation("workItemCorr", corrProp); 69 assertEquals("The prcess instance is not completed", ProcessInstance.COMPLETED, createdInstance.getStatus()); 70 TransactionManager.commitTransaction(); 71 } 72 73 private void createProcess() throws Exception { 74 process = ProcessFactory.createProcess("TestProcess"); 75 ProcessFactory.addProperty(process, "workitemid", "xs:long", "tns:wimsg", "wipart", "/workitemid"); 76 ProcessFactory.addCorrelation(process, "workItemCorr", "workitemid"); 77 78 sequence = (Sequence) ActivityFactory.createActivity(Sequence.class, process); 79 80 receive1 = (Receive) ActivityFactory.createActivity(Receive.class, sequence); 81 receive1.setCreateInstance(true); 82 receive1.setPartner("WorkItemCreator"); 83 receive1.setPortType("WorkItemCreatorPT"); 84 receive1.setOperation("InitWork"); 85 receive1.setVariable("WIParams"); 86 87 invoke = (Invoke) ActivityFactory.createActivity(Invoke.class, sequence); 88 invoke.setPartner("WorkListPartner"); 89 invoke.setPortType("WorkListPT"); 90 invoke.setOperation("CreateWork"); 91 invoke.setInputVariable("WIParams"); 92 invoke.setOutputVariable("WLMgrAnswer"); 93 ActivityFactory.addCorrelationRef(invoke, "workItemCorr", true, CorrelationRef.IN); 94 95 receive2 = (Receive) ActivityFactory.createActivity(Receive.class, sequence); 96 receive2.setPartner("WorkListMgr"); 97 receive2.setPortType("WorkListAnswerPT"); 98 receive2.setOperation("receiveAnswer"); 99 ActivityFactory.addCorrelationRef(receive2, "workItemCorr", false, CorrelationRef.IN); 100 } 101 }

This page was automatically generated by Maven