Author: bfoster
Date: Thu Mar 3 01:03:59 2011
New Revision: 1076475
URL: http://svn.apache.org/viewvc?rev=1076475&view=rev
Log:
- updates to TraceWorkflow
----------------------------
Modified:
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/server/action/TraceWorkflow.java
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java
Modified:
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/server/action/TraceWorkflow.java
URL:
http://svn.apache.org/viewvc/oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/server/action/TraceWorkflow.java?rev=1076475&r1=1076474&r2=1076475&view=diff
==============================================================================
---
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/server/action/TraceWorkflow.java
(original)
+++
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/server/action/TraceWorkflow.java
Thu Mar 3 01:03:59 2011
@@ -26,6 +26,7 @@ import org.apache.oodt.cas.workflow.engi
import org.apache.oodt.cas.workflow.exceptions.EngineException;
import org.apache.oodt.cas.workflow.instance.WorkflowConnectTaskInstance;
import org.apache.oodt.cas.workflow.processor.ProcessorSkeleton;
+import org.apache.oodt.cas.workflow.util.WorkflowUtils;
/**
* @author bfoster
@@ -38,13 +39,13 @@ import org.apache.oodt.cas.workflow.proc
public class TraceWorkflow extends WorkflowEngineServerAction {
private String instanceId;
- public enum Mode { COMPLETE, RELATIVES, CHILDREN };
+ public enum Mode { COMBINED, COMPLETE, RELATIVES, CHILDREN };
private Mode mode;
@Override
public void performAction(WorkflowEngineClient weClient) throws
Exception {
System.out.println("Workflow Trace [InstanceId='" +
this.instanceId + "']");
- if (this.mode.equals(Mode.COMPLETE) ||
this.mode.equals(Mode.RELATIVES)) {
+ if (this.mode.equals(Mode.COMPLETE) ||
this.mode.equals(Mode.RELATIVES) || this.mode.equals(Mode.COMBINED)) {
Vector<String> parentInstanceIds = new Vector<String>();
String currentInstanceId = this.instanceId;
String parentWorkflowInstanceId = null;
@@ -67,12 +68,29 @@ public class TraceWorkflow extends Workf
this.printTree(weClient, currentInstanceId,
(parentSkeleton != null ? parentSkeleton.getModelId() : null), indent);
}else if (this.mode.equals(Mode.COMPLETE)) {
this.printTree(weClient, currentInstanceId,
null, "");
- }
+ }else if (this.mode.equals(Mode.COMBINED)) {
+ ProcessorSkeleton skeleton =
weClient.getWorkflow(currentInstanceId);
+ buildMasterWorkflow(weClient, skeleton);
+
System.out.println(WorkflowUtils.toString(skeleton));
+ }
}else if (this.mode.equals(Mode.CHILDREN)){
this.printTree(weClient, this.instanceId, null, "");
}
}
+ private void buildMasterWorkflow(WorkflowEngineClient weClient,
ProcessorSkeleton skeleton) throws EngineException {
+ for (ProcessorSkeleton task : WorkflowUtils.getTasks(skeleton))
{
+ List<String> spawnedWorkflows =
task.getDynamicMetadata().getAllMetadata(WorkflowConnectTaskInstance.SPAWNED_WORKFLOWS);
+ List<ProcessorSkeleton> subProcessors = new
Vector<ProcessorSkeleton>();
+ for (String spawedWorkflow : spawnedWorkflows) {
+ ProcessorSkeleton workflow =
weClient.getWorkflow(spawedWorkflow);
+ buildMasterWorkflow(weClient, workflow);
+ subProcessors.add(workflow);
+ }
+ task.setSubProcessors(subProcessors);
+ }
+ }
+
private void printTree(WorkflowEngineClient weClient, String
instanceId, String parentModelId, String indent) throws EngineException {
ProcessorSkeleton skeleton = weClient.getWorkflow(instanceId);
System.out.println(indent + " - InstanceId = '" + instanceId +
"' : ModelId = '" + skeleton.getModelId() + "' : State = '" +
skeleton.getState().getName() + "'" + (parentModelId != null ? " : SpawnedBy =
'" + parentModelId + "'" : ""));
Modified:
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java
URL:
http://svn.apache.org/viewvc/oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java?rev=1076475&r1=1076474&r2=1076475&view=diff
==============================================================================
---
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java
(original)
+++
oodt/branches/wengine-branch/wengine/src/main/java/org/apache/oodt/cas/workflow/util/WorkflowUtils.java
Thu Mar 3 01:03:59 2011
@@ -221,6 +221,26 @@ public class WorkflowUtils {
}
return null;
}
+
+ public static List<ProcessorSkeleton> getTasks(ProcessorSkeleton
skeleton) {
+ List<ProcessorSkeleton> options = new
Vector<ProcessorSkeleton>();
+ options.add(skeleton);
+ List<ProcessorSkeleton> tasks = new Vector<ProcessorSkeleton>();
+ while (!options.isEmpty()) {
+ ProcessorSkeleton currentOption = options.remove(0);
+ if (currentOption.getSubProcessors().isEmpty()) {
+ tasks.add(currentOption);
+ }else {
+ if (currentOption.getPreConditions() != null)
+
options.add(currentOption.getPreConditions());
+ if (currentOption.getPostConditions() != null)
+
options.add(currentOption.getPostConditions());
+ for (ProcessorSkeleton ps :
currentOption.getSubProcessors())
+ options.add(ps);
+ }
+ }
+ return tasks;
+ }
public static void validateWorkflowProcessor(WorkflowProcessor wp) {
if (wp instanceof TaskProcessor) {