/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