Author: bfoster
Date: Wed Mar  2 00:56:35 2011
New Revision: 1076072

URL: http://svn.apache.org/viewvc?rev=1076072&view=rev
Log:

- updated WorkflowConnectTaskInstance to update its workflow metadata with the 
merge of workflow metadata for the spawned workflows

- add test workflow example

Added:
    
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java
   (with props)
Modified:
    
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/WorkflowConnectTaskInstance.java
    
oodt/branches/wengine-branch/wengine/src/main/resources/policy/workflows/WorkflowModelTestFile.xml

Added: 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java?rev=1076072&view=auto
==============================================================================
--- 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java
 (added)
+++ 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java
 Wed Mar  2 00:56:35 2011
@@ -0,0 +1,13 @@
+package org.apache.oodt.cas.workflow.instance;
+
+import org.apache.oodt.cas.workflow.metadata.ControlMetadata;
+
+public class SimpleNCalculator implements 
WorkflowConnectTaskInstance.NCalculator {
+
+       public static final String N = "SimpleNCalculator/N";
+       
+       public int determineN(ControlMetadata ctrlMetadata) {
+               return Integer.parseInt(ctrlMetadata.getMetadata(N));
+       }
+
+}

Propchange: 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/SimpleNCalculator.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/WorkflowConnectTaskInstance.java
URL: 
http://svn.apache.org/viewvc/oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/WorkflowConnectTaskInstance.java?rev=1076072&r1=1076071&r2=1076072&view=diff
==============================================================================
--- 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/WorkflowConnectTaskInstance.java
 (original)
+++ 
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/instance/WorkflowConnectTaskInstance.java
 Wed Mar  2 00:56:35 2011
@@ -15,6 +15,7 @@ import org.apache.oodt.cas.workflow.stat
 import org.apache.oodt.cas.workflow.state.results.ResultsFailureState;
 import org.apache.oodt.cas.workflow.state.results.ResultsState;
 import org.apache.oodt.cas.workflow.state.results.ResultsSuccessState;
+import org.apache.oodt.cas.workflow.util.WorkflowUtils;
 
 public class WorkflowConnectTaskInstance extends TaskInstance {
        
@@ -103,10 +104,21 @@ public class WorkflowConnectTaskInstance
                                        return new ResultsFailureState("Failed 
to get state of spawned workflow [InstanceId='" + spawnedInstanceId + "']");
                                }
                        }
-                       if (nDone == spawnedInstanceIds.size())
+                       if (nDone == spawnedInstanceIds.size()) {
+                               Metadata dynMet = new Metadata();
+                               for (String spawnedInstanceId : 
spawnedInstanceIds) {
+                                       try {
+                                               dynMet = 
WorkflowUtils.mergeMetadata(dynMet, 
this.weClient.getWorkflowMetadata(spawnedInstanceId));
+                                       }catch (Exception e) {
+                                               return new 
ResultsFailureState("Failed to get metadata of spawned workflow [InstanceId='" 
+ spawnedInstanceId + "']");
+                                       }
+                               }
+                               ctrlMetadata.replaceLocalMetadata(dynMet);
+                               
ctrlMetadata.setAsWorkflowMetadataKey((String[]) dynMet.getAllKeys().toArray());
                                return new ResultsSuccessState("All spawned 
workflow completed successfully");
-                       else
+                       }else {
                                return new ResultsBailState("Waiting on " + 
(spawnedInstanceIds.size() - nDone) + " of " + spawnedInstanceIds.size() + " 
spawned workflows to finish");
+                       }
                }
        }
        

Modified: 
oodt/branches/wengine-branch/wengine/src/main/resources/policy/workflows/WorkflowModelTestFile.xml
URL: 
http://svn.apache.org/viewvc/oodt/branches/wengine-branch/wengine/src/main/resources/policy/workflows/WorkflowModelTestFile.xml?rev=1076072&r1=1076071&r2=1076072&view=diff
==============================================================================
--- 
oodt/branches/wengine-branch/wengine/src/main/resources/policy/workflows/WorkflowModelTestFile.xml
 (original)
+++ 
oodt/branches/wengine-branch/wengine/src/main/resources/policy/workflows/WorkflowModelTestFile.xml
 Wed Mar  2 00:56:35 2011
@@ -4,6 +4,21 @@
        xmlns:cas="http://oodt.jpl.nasa.gov/2.0/cas";
        xmlns:p="http://oodt.jpl.nasa.gov/2.0/cas/property";>
        
+       <!-- Connection Workflow Test -->
+       <workflow id="ConnectWorkflowTest" execution="sequential">
+               <configuration extends="test"/>
+               <task id-ref="Orbit"/>
+               <task id="MultiRun" 
class="org.apache.oodt.cas.workflow.instance.WorkflowConnectTaskInstance">
+                       <configuration>
+                               <property name="WorkflowConnect/ModelId" 
value="TestConnectTask"/>
+                               <property 
name="WorkflowConnect/NCalculator/Class" 
value="org.apache.oodt.cas.workflow.instance.SimpleNCalculator"/>
+                               <property name="SimpleNCalculator/N" value="3"/>
+                       </configuration>
+               </task>
+       </workflow> 
+       <task id="TestConnectTask" 
class="org.apache.oodt.cas.workflow.instance.ValidateMetadataInstance"/>
+
+       <!-- Workflow Metadata Flow Test -->
        <workflow id="TestWorkflow" execution="sequential">
                <configuration extends="test"/>
                <task id-ref="Orbit"/>


Reply via email to