You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sa...@apache.org on 2012/07/06 14:13:31 UTC

svn commit: r1358153 - in /incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client: airavata/AiravataClient.java api/ExecutionManager.java impl/ExecutionManagerImpl.java

Author: samindaw
Date: Fri Jul  6 12:13:31 2012
New Revision: 1358153

URL: http://svn.apache.org/viewvc?rev=1358153&view=rev
Log:
adding context header builder passing to the API run workflow

Modified:
    incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/airavata/AiravataClient.java
    incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
    incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java

Modified: incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/airavata/AiravataClient.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/airavata/AiravataClient.java?rev=1358153&r1=1358152&r2=1358153&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/airavata/AiravataClient.java (original)
+++ incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/airavata/AiravataClient.java Fri Jul  6 12:13:31 2012
@@ -363,25 +363,28 @@ public class AiravataClient implements A
 	 */
 	@Override
 	public String runWorkflow(String topic, String user, String metadata, String workflowInstanceName) {
+		return runWorkflow(topic, user, metadata, workflowInstanceName, builder);
+	}
+	
+	public String runWorkflow(String topic, String user, String metadata, String workflowInstanceName, WorkflowContextHeaderBuilder builder) {
         String worflowoutput = null;
-                try {
-                    WorkflowInterpretorStub stub = new WorkflowInterpretorStub(
-                            getClientConfiguration().getXbayaServiceURL().toString());
-                    OMElement omElement = AXIOMUtil.stringToOM(XMLUtil.xmlElementToString(builder.getXml()));
-                    stub._getServiceClient().addHeader(omElement);
-                    worflowoutput = stub.launchWorkflow(workflow, topic,null);
-                    runPreWorkflowExecutionTasks(worflowoutput, user, metadata, workflowInstanceName);
+        try {
+            WorkflowInterpretorStub stub = new WorkflowInterpretorStub(
+                    getClientConfiguration().getXbayaServiceURL().toString());
+            OMElement omElement = AXIOMUtil.stringToOM(XMLUtil.xmlElementToString(builder.getXml()));
+            stub._getServiceClient().addHeader(omElement);
+            worflowoutput = stub.launchWorkflow(workflow, topic,null);
+            runPreWorkflowExecutionTasks(worflowoutput, user, metadata, workflowInstanceName);
 
-                } catch (AxisFault e) {
+        } catch (AxisFault e) {
 		} catch (RemoteException e) {
 //			log.fine(e.getMessage(), e);
 		} catch (RegistryException e) {
 //			log.fine(e.getMessage(), e);
 		} catch (XMLStreamException e) {
-                    e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
-                }
+            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
+        }
 //			log.info("Workflow output : " + worflowoutput);
-
         return worflowoutput;
 	}
 
@@ -431,9 +434,10 @@ public class AiravataClient implements A
 		if (metadata != null) {
 			getRegistry().saveWorkflowExecutionMetadata(topic, metadata);
 		}
-		if (workflowInstanceName!=null) {
-			getRegistry().saveWorkflowExecutionName(topic, workflowInstanceName);
+		if (workflowInstanceName==null) {
+			workflowInstanceName=topic;
 		}
+		getRegistry().saveWorkflowExecutionName(topic, workflowInstanceName);
 	}
 
 	/* (non-Javadoc)
@@ -458,6 +462,11 @@ public class AiravataClient implements A
 	@Override
 	public String runWorkflow(final String topic, final NameValue[] inputs, final String user,
 			final String metadata, final String workflowInstanceName) throws Exception{
+		return runWorkflow(topic, inputs, user, metadata, workflowInstanceName, builder);
+	}
+	
+	public String runWorkflow(final String topic, final NameValue[] inputs, final String user,
+			final String metadata, final String workflowInstanceName, final WorkflowContextHeaderBuilder builder) throws Exception{
 		new Thread(new Runnable() {
 			public void run() {
 				try {
@@ -643,18 +652,29 @@ public class AiravataClient implements A
 	@Override
 	public String runWorkflow(String workflowTemplateId,List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName) throws Exception{
 		Workflow workflowObj = getWorkflow(workflowTemplateId);
-		return runWorkflow(workflowObj, inputs, user, metadata,workflowInstanceName);
+		return runWorkflow(workflowObj, inputs, user, metadata,workflowInstanceName,builder);
 	}
 
+	public String runWorkflow(String workflowTemplateId,List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName, WorkflowContextHeaderBuilder builder) throws Exception{
+		Workflow workflowObj = getWorkflow(workflowTemplateId);
+		return runWorkflow(workflowObj, inputs, user, metadata,workflowInstanceName,builder);
+	}
+	
 	public String runWorkflow(Workflow workflow,
 			List<WorkflowInput> inputs, String workflowInstanceName)
 			throws GraphException, ComponentException, Exception {
-		return runWorkflow(workflow, inputs, null, null, workflowInstanceName);
+		return runWorkflow(workflow, inputs, null, null, workflowInstanceName,builder);
 	}
-	
+
 	public String runWorkflow(Workflow workflowObj,
 			List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName)
 			throws GraphException, ComponentException, Exception {
+		return runWorkflow(workflowObj, inputs, user, metadata, workflowInstanceName,builder);
+	}
+	
+	public String runWorkflow(Workflow workflowObj,
+			List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName, WorkflowContextHeaderBuilder builder)
+			throws GraphException, ComponentException, Exception {
 		try {
 			String workflowString=XMLUtil.xmlElementToString(workflowObj.toXML());
 			List<WSComponentPort> ports = getWSComponentPortInputs(workflowObj);
@@ -677,7 +697,7 @@ public class AiravataClient implements A
 			}
 			workflow=workflowString;
 			String topic=workflowObj.getName()+"_"+UUID.randomUUID();
-			return runWorkflow(topic, inputValues.toArray(new NameValue[]{}), user, metadata, workflowInstanceName);
+			return runWorkflow(topic, inputValues.toArray(new NameValue[]{}), user, metadata, workflowInstanceName,builder);
 		} catch (PathNotFoundException e) {
 			e.printStackTrace();
 		} catch (RegistryException e) {

Modified: incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java?rev=1358153&r1=1358152&r2=1358153&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java (original)
+++ incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/api/ExecutionManager.java Fri Jul  6 12:13:31 2012
@@ -23,6 +23,7 @@ package org.apache.airavata.client.api;
 
 import java.util.List;
 
+import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.workflow.model.wf.Workflow;
 import org.apache.airavata.workflow.model.wf.WorkflowInput;
 import org.apache.airavata.xbaya.monitor.Monitor;
@@ -59,6 +60,19 @@ public interface ExecutionManager {
      */
 	public abstract String runWorkflow(String workflowTemplateId,List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName)throws AiravataAPIInvocationException;
 
+	/**
+	 * 
+	 * @param workflowTemplateId
+	 * @param inputs
+	 * @param user
+	 * @param metadata
+	 * @param workflowInstanceName
+	 * @param builder
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public abstract String runWorkflow(String workflowTemplateId,List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName, WorkflowContextHeaderBuilder builder)throws AiravataAPIInvocationException;
+	
     /**
      *
      * @param workflow
@@ -86,5 +100,14 @@ public interface ExecutionManager {
      * @throws AiravataAPIInvocationException
      */
 	public Monitor getWorkflowInstanceMonitor(String topic, MonitorEventListener listener) throws AiravataAPIInvocationException;
+	
+	/**
+	 * Creates a WorkflowContextHeaderBuilder object that can be used to customize the scheduling of a workflow execution.
+	 * Once configured this object run the workflow using 
+	 *   <code>runWorkflow(String workflowTemplateId,List<WorkflowInput> inputs, String user, String metadata, String workflowInstanceName, WorkflowContextHeaderBuilder builder)</code>  
+	 * @return
+	 * @throws AiravataAPIInvocationException
+	 */
+	public WorkflowContextHeaderBuilder createWorkflowContextHeader() throws AiravataAPIInvocationException;
 
 }

Modified: incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java?rev=1358153&r1=1358152&r2=1358153&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java (original)
+++ incubator/airavata/trunk/modules/airavata-client/src/main/java/org/apache/airavata/client/impl/ExecutionManagerImpl.java Fri Jul  6 12:13:31 2012
@@ -25,8 +25,10 @@ import java.util.Calendar;
 import java.util.List;
 
 import org.apache.airavata.client.airavata.AiravataClient;
+import org.apache.airavata.client.airavata.AiravataClientConfiguration;
 import org.apache.airavata.client.api.AiravataAPIInvocationException;
 import org.apache.airavata.client.api.ExecutionManager;
+import org.apache.airavata.common.workflow.execution.context.WorkflowContextHeaderBuilder;
 import org.apache.airavata.workflow.model.wf.Workflow;
 import org.apache.airavata.workflow.model.wf.WorkflowInput;
 import org.apache.airavata.xbaya.monitor.Monitor;
@@ -93,4 +95,29 @@ public class ExecutionManagerImpl implem
 		this.client = client;
 	}
 
+	@Override
+	public String runWorkflow(String workflowTemplateId,
+			List<WorkflowInput> inputs, String user, String metadata,
+			String workflowInstanceName, WorkflowContextHeaderBuilder builder)
+			throws AiravataAPIInvocationException {
+		try {
+			return getClient().runWorkflow(workflowTemplateId, inputs, user, metadata, workflowInstanceName,builder);
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
+	@Override
+	public WorkflowContextHeaderBuilder createWorkflowContextHeader()
+			throws AiravataAPIInvocationException {
+		AiravataClientConfiguration config = getClient().getClientConfiguration();
+		try {
+			return new WorkflowContextHeaderBuilder(config.getMessagebrokerURL().toString(),
+					config.getGfacURL().toString(),config.getJcrURL().toString(),null,null,
+					config.getMessageboxURL().toString());
+		} catch (Exception e) {
+			throw new AiravataAPIInvocationException(e);
+		}
+	}
+
 }