|
/usr/java/lib/xflow1.2.1/tests/xflow/server/controller/AbstractServerTestCase.java
|
1 package xflow.server.controller;
2
3 import junit.framework.TestCase;
4 import xflow.common.WorkflowModel;
5 import xflow.common.WorkItem;
6 import xflow.messaging.JMSPublisher;
7 import xflow.protocol.*;
8 import xflow.TestConfig;
9 import xflow.TestUtilities;
10
11 import java.util.Iterator;
12 import java.util.Date;
13 import java.io.IOException;
14 import java.sql.SQLException;
15
16 /**
17 * User: kosta
18 * Date: Jul 11, 2004
19 * Time: 7:07:57 PM
20 */
21 public class AbstractServerTestCase extends TestCase{
22
23 static Object guard = new Object();
24 private static WorkflowEngine workflowEngine;
25
26
27 public AbstractServerTestCase() {
28 getWorkflowEngine();
29 }
30
31 public AbstractServerTestCase(String s) {
32 super(s);
33 getWorkflowEngine();
34 }
35
36 public void startWF( String modelName ) throws IOException {
37 startWF( modelName, null);
38 }
39
40 public void startWF( String modelName, Object payload ) throws IOException {
41 WorkItem wi = new WorkItem();
42 if( payload == null ){
43 wi.setPayloadTXT( modelName + "- payload - " + new Date() );
44 } else{
45 wi.setPayloadAsJavaObject( payload );
46 }
47 StartWorkflowRequest startWFReq = new StartWorkflowRequest();
48 startWFReq.user = TestConfig.getUser();
49 startWFReq.workflowName = modelName;
50 startWFReq.workItem = wi ;
51 StartWorkflowResponse startWorkflowResponse = (StartWorkflowResponse) getWorkflowEngine().handle( startWFReq );
52 assertResponceOK( startWorkflowResponse );
53
54
55 }
56
57 public GetNextWorkItemResponse getNextWorkItemForProcess( String modelName, String processName ) {
58 GetNextWorkItemRequest nextItemRequest1 = new GetNextWorkItemRequest( modelName,processName);
59
60 GetNextWorkItemResponse response1 = (GetNextWorkItemResponse) getWorkflowEngine().handle( nextItemRequest1 );
61 assertResponceOK( response1 );
62 return response1;
63 }
64
65 public boolean isWorkFlowActive(Integer wfID){
66 GetWorkflowStateRequest getWorkflowStateRequest = new GetWorkflowStateRequest();
67 getWorkflowStateRequest.workflowId = wfID;
68 GetWorkflowStateResponse wfStateResp = (GetWorkflowStateResponse) getWorkflowEngine().handle( getWorkflowStateRequest );
69 assertResponceOK( wfStateResp );
70 return wfStateResp.workflowState.isActive();
71 }
72
73
74 public void deployWF( String modelName, String resource ) throws IOException {
75 DeployModelRequest deployModelRequest = new DeployModelRequest();
76 deployModelRequest.user = TestConfig.getUser();
77 deployModelRequest.type = WorkflowEngine.FLOW_TYPE_XFLOW;
78 deployModelRequest.xml = TestUtilities.readFileContent( resource );
79 DeployModelResponse deployModelResponse = (DeployModelResponse) getWorkflowEngine().handle (deployModelRequest );
80 assertResponceOK( deployModelResponse );
81 boolean hasModel = doesModelExist( modelName );
82 assertTrue("No deployed WF model with name" + modelName, hasModel );
83 }
84
85
86 public void assertResponceOK( Response r ){
87 assertEquals( "SUCCESS code",Response.SUCCESS, r.responseCode );
88 }
89
90 public boolean doesModelExist( String modelName) {
91 boolean hasModel = false;
92 GetModelsRequest getModelsRequest = new GetModelsRequest();
93 GetModelsResponse response = (GetModelsResponse) getWorkflowEngine().handle ( getModelsRequest );
94 for (Iterator j = response.models.iterator(); j.hasNext();) {
95 WorkflowModel model = (WorkflowModel) j.next();
96 if( modelName.equals( model.getName() ) ){
97 hasModel = true;
98 break;
99 }
100 }
101 return hasModel;
102 }
103
104 public static WorkflowEngine getWorkflowEngine() {
105 synchronized( guard ){
106 if( workflowEngine == null ){
107 workflowEngine = new WorkflowEngine();
108 try {
109 WorkflowProcessor.getInstance().setEventsEnabled( false );
110 } catch (SQLException e) {
111 e.printStackTrace();
112 throw new RuntimeException( e );
113 }
114 JMSPublisher.setSendingEnabled( false );
115 }
116 return workflowEngine;
117 }
118
119 }
120
121 public boolean processHasWorkItems(String modelName, String processName) {
122 GetNextWorkItemResponse response = getNextWorkItemForProcess( modelName, processName );
123 return response.workItem != null;
124 }
125
126 protected CompleteWorkItemResponse completeWorkItem(String modelName, String procName, WorkItem workItem) {
127
128 CompleteWorkItemRequest completeWorkItemRequest = new CompleteWorkItemRequest();
129 completeWorkItemRequest.workflowName = modelName ;
130 completeWorkItemRequest.processName = procName;
131 completeWorkItemRequest.workItem = workItem;
132 CompleteWorkItemResponse completeWorkItemResponse = (CompleteWorkItemResponse) getWorkflowEngine().handle( completeWorkItemRequest );
133 assertResponceOK( completeWorkItemResponse );
134 return completeWorkItemResponse;
135 }
136 }
137