KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jbpm > bpel > exe > flow > FlowGraphExampleTest


1 package org.jbpm.bpel.exe.flow;
2
3 import org.jbpm.graph.exe.Token;
4
5 import org.jbpm.bpel.def.Flow;
6 import org.jbpm.bpel.def.Receive;
7 import org.jbpm.bpel.exe.AbstractExeTestCase;
8
9 /**
10  * @author Juan Cantú
11  * @version $Revision: 1.2 $ $Date: 2005/04/27 20:52:27 $
12  */

13 public class FlowGraphExampleTest extends AbstractExeTestCase {
14   /*Based on the graph structure defined by the flow, the activities getBuyerInformation
15    *and getSellerInformation can run concurrently. The settleTrade activity is not
16    *performed before both of these activities are completed. After settleTrade
17    *completes the two activities, confirmBuyer and confirmSeller are performed
18    *concurrently again.*/

19   
20   private Flow flow;
21   private Receive firstGetActivity;
22   private Receive secondGetActivity;
23   private Receive settleTradeActivity;
24   private Receive firstConfirmActivity;
25   private Receive secondConfirmActivity;
26   private String JavaDoc fileName = "flowGraphExample.bpel";
27   
28   public void testFirstScenario() throws Exception JavaDoc {
29     flow = (Flow) readActivity(getClass().getResource(fileName), false);
30     setNestedBlock(flow);
31     validateNested("getSellerInformation", "getBuyerInformation", "confirmSeller", "confirmBuyer");
32   }
33   
34   public void testSecondScenario() throws Exception JavaDoc {
35     flow = (Flow) readActivity(getClass().getResource(fileName), false);
36     setNestedBlock(flow);
37     validateNested("getSellerInformation", "getBuyerInformation", "confirmBuyer", "confirmSeller");
38   }
39   
40   public void testThirdScenario() throws Exception JavaDoc {
41     flow = (Flow) readActivity(getClass().getResource(fileName), false);
42     setNestedBlock(flow);
43     validateNested("getBuyerInformation", "getSellerInformation", "confirmSeller", "confirmBuyer");
44   }
45   
46   public void testFourthScenario() throws Exception JavaDoc {
47     flow = (Flow) readActivity(getClass().getResource(fileName), false);
48     setNestedBlock(flow);
49     validateNested("getBuyerInformation", "getSellerInformation", "confirmBuyer", "confirmSeller");
50   }
51
52   
53   public void testInitialFirstScenario() throws Exception JavaDoc {
54     flow = (Flow) readActivity(getClass().getResource(fileName), true);
55     setRootBlock(flow);
56     validateInitial("getSellerInformation", "getBuyerInformation", "confirmSeller", "confirmBuyer");
57   }
58   
59   public void testInitialSecondScenario() throws Exception JavaDoc {
60     flow = (Flow) readActivity(getClass().getResource(fileName), true);
61     setRootBlock(flow);
62     validateInitial("getSellerInformation", "getBuyerInformation", "confirmBuyer", "confirmSeller");
63   }
64   
65   public void testInitialThirdScenario() throws Exception JavaDoc {
66     flow = (Flow) readActivity(getClass().getResource(fileName), true);
67     setRootBlock(flow);
68     validateInitial("getBuyerInformation", "getSellerInformation", "confirmSeller", "confirmBuyer");
69   }
70   
71   public void testInitialFourthScenario() throws Exception JavaDoc {
72     flow = (Flow) readActivity(getClass().getResource(fileName), true);
73     setRootBlock(flow);
74     validateInitial("getBuyerInformation", "getSellerInformation", "confirmBuyer", "confirmSeller");
75   }
76   
77   private void validateInitial(String JavaDoc firstGetInfo, String JavaDoc secondGetInfo,
78       String JavaDoc firstConfirm, String JavaDoc secondConfirm) {
79     initActivities(firstGetInfo, secondGetInfo, firstConfirm, secondConfirm);
80     firstGetActivity.setCreateInstance(true);
81     Token startToken = startInitial(firstGetActivity.getReceiver());
82     
83     //first receive was started, it must be in the flows end.
84
// TODO remove this search?
85
// Token firstGetToken = findToken( startToken, flow.getEnd() );
86

87     Token secondGetToken = findToken( startToken, secondGetActivity );
88     Token settleTradeToken = findToken( startToken, settleTradeActivity );
89     Token firstConfirmToken = findToken( startToken, firstConfirmActivity );
90     Token secondConfirmToken = findToken( startToken, secondConfirmActivity );
91     
92     //validate that settleTrade, first and second confirm can't be executed and remain in their node
93
assertReceiveDisabled( firstConfirmToken, firstConfirmActivity );
94     assertReceiveDisabled( secondConfirmToken, secondConfirmActivity );
95     assertReceiveDisabled( settleTradeToken, settleTradeActivity );
96     
97     //secondGetActivity is triggered, It must move to the flow's end.
98
assertReceiveAndAdvance( secondGetToken, secondGetActivity, flow.getEnd() );
99     
100     //validate that first and second confirm can't be executed and remain in their node
101
assertReceiveDisabled( firstConfirmToken, firstConfirmActivity );
102     assertReceiveDisabled( secondConfirmToken, secondConfirmActivity );
103     
104     //validate that settleTradeToken can be executed. settleTradeToken moved to the flow's end.
105
assertReceiveAndAdvance( settleTradeToken, settleTradeActivity, flow.getEnd() );
106     
107     //validate that first and second confirm can be executed. first moves to the flow end, second completes.
108
assertReceiveAndAdvance( firstConfirmToken, firstConfirmActivity, flow.getEnd() );
109     assertReceiveAndComplete( secondConfirmToken, secondConfirmActivity );
110   }
111   
112   private void validateNested(String JavaDoc firstGetInfo, String JavaDoc secondGetInfo,
113       String JavaDoc firstConfirm, String JavaDoc secondConfirm) {
114     initActivities(firstGetInfo, secondGetInfo, firstConfirm, secondConfirm);
115     Token startToken = startNested();
116     
117     //tokens for every activity where created upon activation.
118
Token firstGetToken = findToken( startToken, firstGetActivity );
119     Token secondGetToken = findToken( startToken, secondGetActivity );
120     Token settleTradeToken = findToken( startToken, settleTradeActivity);
121     Token firstConfirmToken = findToken( startToken, firstConfirmActivity);
122     Token secondConfirmToken = findToken( startToken, secondConfirmActivity);
123
124     //validate that settleTrade, first and second confirm can't be executed and remain in their node
125
assertReceiveDisabled( firstConfirmToken, firstConfirmActivity );
126     assertReceiveDisabled( secondConfirmToken, secondConfirmActivity );
127     assertReceiveDisabled( settleTradeToken, settleTradeActivity );
128     
129     //firstGetActivity is triggered, It must move to the flow's end.
130
assertReceiveAndAdvance( firstGetToken, firstGetActivity, flow.getEnd() );
131     
132     //validate that settleTrade, first and second confirm can't be executed and remain in their node
133
assertReceiveDisabled( firstConfirmToken, firstConfirmActivity );
134     assertReceiveDisabled( secondConfirmToken, secondConfirmActivity );
135     assertReceiveDisabled( settleTradeToken, settleTradeActivity );
136     
137     //secondGetActivity is triggered, It must move to the flow's end.
138
assertReceiveAndAdvance( secondGetToken, secondGetActivity, flow.getEnd() );
139     
140     //validate that first and second confirm can't be executed and remain in their node
141
assertReceiveDisabled( firstConfirmToken, firstConfirmActivity );
142     assertReceiveDisabled( secondConfirmToken, secondConfirmActivity );
143     
144     //validate that settleTradeToken can be executed. settleTradeToken moved to the flow's end.
145
assertReceiveAndAdvance( settleTradeToken, settleTradeActivity, flow.getEnd() );
146     
147     //validate that first and second confirm can be executed. first moves to the flow end, second completes.
148
assertReceiveAndAdvance( firstConfirmToken, firstConfirmActivity, flow.getEnd() );
149     assertReceiveAndComplete( secondConfirmToken, secondConfirmActivity );
150   }
151   
152   private void initActivities(String JavaDoc firstGetInfo, String JavaDoc secondGetInfo,
153       String JavaDoc firstConfirm, String JavaDoc secondConfirm) {
154     firstGetActivity = (Receive) flow.getNode(firstGetInfo);
155     secondGetActivity = (Receive) flow.getNode(secondGetInfo);
156     settleTradeActivity = (Receive) flow.getNode("settleTrade");
157     firstConfirmActivity = (Receive) flow.getNode(firstConfirm);
158     secondConfirmActivity = (Receive) flow.getNode(secondConfirm);
159   }
160 }
161
Popular Tags