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