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 13 public class FlowGraphExampleTest extends AbstractExeTestCase { 14 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 fileName = "flowGraphExample.bpel"; 27 28 public void testFirstScenario() throws Exception { 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 { 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 { 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 { 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 { 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 { 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 { 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 { 72 flow = (Flow) readActivity(getClass().getResource(fileName), true); 73 setRootBlock(flow); 74 validateInitial("getBuyerInformation", "getSellerInformation", "confirmBuyer", "confirmSeller"); 75 } 76 77 private void validateInitial(String firstGetInfo, String secondGetInfo, 78 String firstConfirm, String secondConfirm) { 79 initActivities(firstGetInfo, secondGetInfo, firstConfirm, secondConfirm); 80 firstGetActivity.setCreateInstance(true); 81 Token startToken = startInitial(firstGetActivity.getReceiver()); 82 83 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 assertReceiveDisabled( firstConfirmToken, firstConfirmActivity ); 94 assertReceiveDisabled( secondConfirmToken, secondConfirmActivity ); 95 assertReceiveDisabled( settleTradeToken, settleTradeActivity ); 96 97 assertReceiveAndAdvance( secondGetToken, secondGetActivity, flow.getEnd() ); 99 100 assertReceiveDisabled( firstConfirmToken, firstConfirmActivity ); 102 assertReceiveDisabled( secondConfirmToken, secondConfirmActivity ); 103 104 assertReceiveAndAdvance( settleTradeToken, settleTradeActivity, flow.getEnd() ); 106 107 assertReceiveAndAdvance( firstConfirmToken, firstConfirmActivity, flow.getEnd() ); 109 assertReceiveAndComplete( secondConfirmToken, secondConfirmActivity ); 110 } 111 112 private void validateNested(String firstGetInfo, String secondGetInfo, 113 String firstConfirm, String secondConfirm) { 114 initActivities(firstGetInfo, secondGetInfo, firstConfirm, secondConfirm); 115 Token startToken = startNested(); 116 117 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 assertReceiveDisabled( firstConfirmToken, firstConfirmActivity ); 126 assertReceiveDisabled( secondConfirmToken, secondConfirmActivity ); 127 assertReceiveDisabled( settleTradeToken, settleTradeActivity ); 128 129 assertReceiveAndAdvance( firstGetToken, firstGetActivity, flow.getEnd() ); 131 132 assertReceiveDisabled( firstConfirmToken, firstConfirmActivity ); 134 assertReceiveDisabled( secondConfirmToken, secondConfirmActivity ); 135 assertReceiveDisabled( settleTradeToken, settleTradeActivity ); 136 137 assertReceiveAndAdvance( secondGetToken, secondGetActivity, flow.getEnd() ); 139 140 assertReceiveDisabled( firstConfirmToken, firstConfirmActivity ); 142 assertReceiveDisabled( secondConfirmToken, secondConfirmActivity ); 143 144 assertReceiveAndAdvance( settleTradeToken, settleTradeActivity, flow.getEnd() ); 146 147 assertReceiveAndAdvance( firstConfirmToken, firstConfirmActivity, flow.getEnd() ); 149 assertReceiveAndComplete( secondConfirmToken, secondConfirmActivity ); 150 } 151 152 private void initActivities(String firstGetInfo, String secondGetInfo, 153 String firstConfirm, String 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 |