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) {