Author: mattmann
Date: Thu Sep 27 18:37:40 2012
New Revision: 1391159

URL: http://svn.apache.org/viewvc?rev=1391159&view=rev
Log:
- fix for OODT-501: Method to create Processor from Instance should be based on 
Graph structure

Modified:
    oodt/trunk/CHANGES.txt
    
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/processor/WorkflowProcessorQueue.java

Modified: oodt/trunk/CHANGES.txt
URL: 
http://svn.apache.org/viewvc/oodt/trunk/CHANGES.txt?rev=1391159&r1=1391158&r2=1391159&view=diff
==============================================================================
--- oodt/trunk/CHANGES.txt (original)
+++ oodt/trunk/CHANGES.txt Thu Sep 27 18:37:40 2012
@@ -4,6 +4,9 @@ Apache OODT Change Log
 Release 0.5
 --------------------------------------------
 
+* OODT-501: Method to create Processor from Instance should be based on 
+  Graph structure (mattmann)
+
 * OODT-511: Solr Indexer Date Formatting Removes Metadata (pramirez)
 
 * OODT-510: SolrIndexer fails on ProductTypes that have 0 products (pramirez, 
ahart)

Modified: 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/processor/WorkflowProcessorQueue.java
URL: 
http://svn.apache.org/viewvc/oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/processor/WorkflowProcessorQueue.java?rev=1391159&r1=1391158&r2=1391159&view=diff
==============================================================================
--- 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/processor/WorkflowProcessorQueue.java
 (original)
+++ 
oodt/trunk/workflow/src/main/java/org/apache/oodt/cas/workflow/engine/processor/WorkflowProcessorQueue.java
 Thu Sep 27 18:37:40 2012
@@ -93,7 +93,8 @@ public class WorkflowProcessorQueue {
     for (WorkflowInstance inst : (List<WorkflowInstance>) (List<?>) page
         .getPageWorkflows()) {
       if (!inst.getState().getCategory().getName().equals("done")) {
-        processors.add(fromWorkflowInstance(inst));
+        WorkflowProcessor processor = fromWorkflowInstance(inst);
+        if(processor != null) processors.add(processor);
       }
     }
 
@@ -105,16 +106,22 @@ public class WorkflowProcessorQueue {
     if (processorCache.containsKey(inst.getId())) {
       return processorCache.get(inst.getId());
     } else {
-      if (inst.getParentChildWorkflow().getTasks() != null
-          && inst.getParentChildWorkflow().getTasks().size() > 1) {
+      if (inst.getParentChildWorkflow().getGraph() == null) {
+        LOG.log(Level.SEVERE,
+            "Unable to process Graph for workflow instance: [" + inst.getId()
+                + "]");
+        return processor;        
+      }
+      
+      if (isCompositeProcessor(inst)){
         processor = getProcessorFromInstanceGraph(inst, lifecycle);
-        WorkflowState seqProcessorState = getLifecycle(
+        WorkflowState processorState = getLifecycle(
             inst.getParentChildWorkflow()).createState(
             "Loaded",
             "initial",
             "Sequential Workflow instance with id: [" + inst.getId()
                 + "] loaded by processor queue.");
-        inst.setState(seqProcessorState);
+        inst.setState(processorState);
         persist(inst);
 
         for (WorkflowCondition cond : inst.getParentChildWorkflow()
@@ -133,7 +140,10 @@ public class WorkflowProcessorQueue {
           instance.setState(taskWorkflowState);
           instance.setPriority(inst.getPriority());
           instance.setCurrentTaskId(task.getTaskId());
-          ParentChildWorkflow workflow = new ParentChildWorkflow(new Graph());
+          Graph taskGraph = new Graph();
+          taskGraph.setExecutionType("task");
+          taskGraph.setTask(task);
+          ParentChildWorkflow workflow = new ParentChildWorkflow(taskGraph);
           String taskWorkflowId = UUID.randomUUID().toString();
           workflow.setId("task-workflow-" + taskWorkflowId);
           workflow.setName("Task Workflow-" + task.getTaskName());
@@ -192,6 +202,12 @@ public class WorkflowProcessorQueue {
     return lifecycle.getLifecycleForWorkflow(workflow) != null ? lifecycle
         .getLifecycleForWorkflow(workflow) : lifecycle.getDefaultLifecycle();
   }
+  
+  private boolean isCompositeProcessor(WorkflowInstance instance){
+    return instance.getParentChildWorkflow().getGraph() != null && 
+    
instance.getParentChildWorkflow().getGraph().getExecutionType().equals("parallel")
 || 
+    
instance.getParentChildWorkflow().getGraph().getExecutionType().equals("sequential");
+  }
 
   private WorkflowProcessor getProcessorFromInstanceGraph(
       WorkflowInstance instance, WorkflowLifecycleManager lifecycle) {


Reply via email to