1
2
3
4
5
6
7
8
9
10
11 package org.mule.transport.jbpm;
12
13 import org.mule.api.MuleMessage;
14 import org.mule.module.bpm.BPMS;
15 import org.mule.module.client.MuleClient;
16 import org.mule.tck.FunctionalTestCase;
17 import org.mule.transport.bpm.ProcessConnector;
18
19 import org.jbpm.api.ProcessInstance;
20
21
22
23
24
25
26 public class ForkedProcessTestCase extends FunctionalTestCase
27 {
28 @Override
29 protected String getConfigResources()
30 {
31 return "jbpm-functional-test.xml";
32 }
33
34 public void testForkedProcess() throws Exception
35 {
36 ProcessConnector connector = (ProcessConnector) muleContext.getRegistry().lookupConnector("bpmConnector");
37 BPMS bpms = connector.getBpms();
38 assertNotNull(bpms);
39
40 MuleClient client = new MuleClient(muleContext);
41 try
42 {
43
44 MuleMessage response = client.send("bpm://fork", "data", null);
45 ProcessInstance process = (ProcessInstance) response.getPayload();
46
47
48 String state = (String) bpms.getState(process);
49 assertTrue(state.contains("waitForResponseA"));
50 assertTrue(state.contains("waitForResponseB"));
51
52 Thread.sleep(2000);
53
54
55 process = (ProcessInstance) bpms.lookupProcess(process.getId());
56 assertEquals("waitForResponseA", bpms.getState(process));
57
58
59 muleContext.getRegistry().lookupService("ServiceA").resume();
60 Thread.sleep(2000);
61
62
63 process = (ProcessInstance) bpms.lookupProcess(process.getId());
64 assertTrue("Process should have ended, but is in state " + bpms.getState(process),
65 bpms.hasEnded(process));
66 }
67 finally
68 {
69 client.dispose();
70 }
71 }
72 }