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/01/20 22:42:59 UTC

svn commit: r1234155 - in /incubator/airavata/trunk/modules: commons/ commons/registry-api/src/main/java/org/apache/airavata/registry/api/ commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/ commons/registry-api/src/main/java/org/...

Author: samindaw
Date: Fri Jan 20 21:42:59 2012
New Revision: 1234155

URL: http://svn.apache.org/viewvc?rev=1234155&view=rev
Log:
Updating airavataregistry api etc.

Added:
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecution.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecutionStatus.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionImpl.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowServiceIOData.java
Modified:
    incubator/airavata/trunk/modules/commons/pom.xml
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java
    incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowIOData.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/provenance/ProvenanceWrite.java
    incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/model/XBayaWorkflowExperiments.java

Modified: incubator/airavata/trunk/modules/commons/pom.xml
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/pom.xml?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/pom.xml (original)
+++ incubator/airavata/trunk/modules/commons/pom.xml Fri Jan 20 21:42:59 2012
@@ -90,7 +90,7 @@
 			</activation>
 			<modules>
 				<module>workflow-tracking</module>
-				<module>gfac-schema</module>
+				<!--module>gfac-schema</module-->
 				<module>utils</module>
 				<module>common-registry-api</module>
 				<module>registry-api</module>

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry.java?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/AiravataRegistry.java Fri Jan 20 21:42:59 2012
@@ -37,6 +37,7 @@ import org.apache.airavata.registry.api.
 import org.apache.airavata.registry.api.exception.HostDescriptionRetrieveException;
 import org.apache.airavata.registry.api.exception.ServiceDescriptionRetrieveException;
 import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
 
 public interface AiravataRegistry extends Registry{
     /**
@@ -213,30 +214,32 @@ public interface AiravataRegistry extend
 
     public void deleteHostDescription(String hostId) throws RegistryException;
 
-    public boolean saveWorkflowExecutionServiceInput(WorkflowIOData workflowInputData) throws RegistryException;
+    public boolean saveWorkflowExecutionServiceInput(WorkflowServiceIOData workflowInputData) throws RegistryException;
 
-    public boolean saveWorkflowExecutionServiceOutput(WorkflowIOData workflowOutputData)throws RegistryException;
+    public boolean saveWorkflowExecutionServiceOutput(WorkflowServiceIOData workflowOutputData)throws RegistryException;
     
-    public List<WorkflowIOData> searchWorkflowExecutionServiceInput(String experimentIdRegEx, String workflowNameRegEx, String nodeNameRegEx)throws RegistryException;
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceInput(String experimentIdRegEx, String workflowNameRegEx, String nodeNameRegEx)throws RegistryException;
 
-    public List<WorkflowIOData> searchWorkflowExecutionServiceOutput(String experimentIdRegEx, String workflowNameRegEx, String nodeNameRegEx)throws RegistryException;
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceOutput(String experimentIdRegEx, String workflowNameRegEx, String nodeNameRegEx)throws RegistryException;
 
     public boolean saveWorkflowExecutionStatus(String experimentId,String status)throws RegistryException;
 
-    public String getWorkflowExecutionStatus(String experimentId)throws RegistryException;
-
-    public Map<String,String> getWorkflowExecutionStatusWithRegex(String regex) throws RegistryException;
+    public WorkflowExecutionStatus getWorkflowExecutionStatus(String experimentId)throws RegistryException;
 
     public boolean saveWorkflowExecutionOutput(String experimentId,String outputNodeName,String output) throws RegistryException;
+    
+    public boolean saveWorkflowExecutionOutput(String experimentId, WorkflowIOData data) throws RegistryException;
 
-    public String getWorkflowExecutionOutput(String experimentId,String outputNodeName) throws RegistryException;
-
-    public Map<String,String> getWorkflowExecutionOutputWithRegex(String experimentIdRegex,String outputName)throws  RegistryException;
+    public WorkflowIOData getWorkflowExecutionOutput(String experimentId,String outputNodeName) throws RegistryException;
+    
+    public List<WorkflowIOData> getWorkflowExecutionOutput(String experimentId) throws RegistryException;
 
     public String[] getWorkflowExecutionOutputNames(String exeperimentId) throws RegistryException;
 
-    public Map<String,String[]> getWorkflowExecutionOutputNamesWithRegex(String experiementId) throws  RegistryException;
-    
     public boolean saveWorkflowExecutionUser(String experimentId, String user) throws RegistryException;
+    
+    public String getWorkflowExecutionUser(String experimentId) throws RegistryException;
+    
+    public WorkflowExecution getWorkflowExection(String experimentId) throws RegistryException;
 
 }

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecution.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecution.java?rev=1234155&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecution.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecution.java Fri Jan 20 21:42:59 2012
@@ -0,0 +1,51 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.api;
+
+import java.util.List;
+
+import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
+
+public interface WorkflowExecution {
+	public String getExperimentId();
+	public String getTopic();
+	public WorkflowExecutionStatus getExecutionStatus();
+	public String getUser();
+	public List<WorkflowServiceIOData> getServiceInput();
+	public List<WorkflowServiceIOData> getServiceOutput();
+	public List<WorkflowIOData> getOutput();
+	public WorkflowServiceIOData getServiceInput(String nodeId);
+	public WorkflowServiceIOData getServiceOutput(String nodeId);
+	public WorkflowIOData getOutput(String nodeId);
+
+	public void setExperimentId(String experimentId);
+	public void setTopic(String topic);
+	public void setExecutionStatus(WorkflowExecutionStatus executionStatus);
+	public void setUser(String user);
+	public void setServiceInput(List<WorkflowServiceIOData> serviceInputs);
+	public void setServiceOutput(List<WorkflowServiceIOData> serviceOutputs);
+	public void setOutput(List<WorkflowIOData> outputs);
+	public void addServiceInput(WorkflowServiceIOData serviceInput);
+	public void addServiceOutput(WorkflowServiceIOData serviceOutput);
+	public void addOutput(WorkflowIOData output);
+}

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecutionStatus.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecutionStatus.java?rev=1234155&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecutionStatus.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/WorkflowExecutionStatus.java Fri Jan 20 21:42:59 2012
@@ -0,0 +1,62 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.api;
+
+import java.util.Date;
+
+public class WorkflowExecutionStatus {
+	public enum ExecutionStatus {
+		STARTED,
+		RUNNING,
+		ERROR,
+		STOPPED,
+		UNKNOWN
+	}
+
+	private ExecutionStatus executionStatus;
+	private Date statusUpdateTime=null;
+	
+	public ExecutionStatus getExecutionStatus() {
+		return executionStatus;
+	}
+
+	public void setExecutionStatus(ExecutionStatus executionStatus) {
+		this.executionStatus = executionStatus;
+	}
+
+	public Date getStatusUpdateTime() {
+		return statusUpdateTime;
+	}
+
+	public void setStatusUpdateTime(Date statusUpdateTime) {
+		this.statusUpdateTime = statusUpdateTime;
+	}
+
+	public WorkflowExecutionStatus(ExecutionStatus executionStatus) {
+		this(executionStatus,null);
+	}
+	
+	public WorkflowExecutionStatus(ExecutionStatus executionStatus, Date statusUpdateTime) {
+		setExecutionStatus(executionStatus);
+		setStatusUpdateTime(statusUpdateTime);
+	}
+}

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/AiravataJCRRegistry.java Fri Jan 20 21:42:59 2012
@@ -23,14 +23,15 @@ package org.apache.airavata.registry.api
 
 import java.net.URI;
 import java.sql.Timestamp;
+import java.text.DateFormat;
 import java.util.ArrayList;
 import java.util.Calendar;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 import java.util.TimeZone;
-import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
 import javax.jcr.Node;
@@ -53,10 +54,14 @@ import org.apache.airavata.commons.gfac.
 import org.apache.airavata.commons.gfac.wsdl.WSDLGenerator;
 import org.apache.airavata.registry.api.Axis2Registry;
 import org.apache.airavata.registry.api.DataRegistry;
+import org.apache.airavata.registry.api.WorkflowExecution;
+import org.apache.airavata.registry.api.WorkflowExecutionStatus;
+import org.apache.airavata.registry.api.WorkflowExecutionStatus.ExecutionStatus;
 import org.apache.airavata.registry.api.exception.DeploymentDescriptionRetrieveException;
 import org.apache.airavata.registry.api.exception.HostDescriptionRetrieveException;
 import org.apache.airavata.registry.api.exception.ServiceDescriptionRetrieveException;
 import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
 import org.apache.airavata.schemas.gfac.MethodType;
 import org.apache.airavata.schemas.gfac.PortTypeType;
 import org.apache.airavata.schemas.gfac.ServiceType;
@@ -87,6 +92,8 @@ public class AiravataJCRRegistry extends
     public static final String OUTPUT = "Output";
     public static final String RESULT = "Result";
     public static final String WORKFLOW_STATUS_PROPERTY = "Status";
+    public static final String WORKFLOW_STATUS_TIME_PROPERTY = "Status_Time";
+    public static final String WORKFLOW_USER_PROPERTY = "User";
 
     private static Logger log = LoggerFactory.getLogger(AiravataJCRRegistry.class);
 
@@ -799,16 +806,16 @@ public class AiravataJCRRegistry extends
         return false;
     }
 
-    public boolean saveWorkflowExecutionServiceInput(WorkflowIOData workflowInputData) throws RegistryException{
+    public boolean saveWorkflowExecutionServiceInput(WorkflowServiceIOData workflowInputData) throws RegistryException{
         return saveWorkflowIO(workflowInputData, INPUT);
     }
 
-    public boolean saveWorkflowExecutionServiceOutput(WorkflowIOData workflowOutputData) throws RegistryException{
+    public boolean saveWorkflowExecutionServiceOutput(WorkflowServiceIOData workflowOutputData) throws RegistryException{
         return saveWorkflowIO(workflowOutputData, OUTPUT);
     }
 
 
-    private boolean saveWorkflowIO(WorkflowIOData workflowOutputData, String type) throws RegistryException{
+    private boolean saveWorkflowIO(WorkflowServiceIOData workflowOutputData, String type) throws RegistryException{
         Session session = null;
         boolean isSaved = true;
         try {
@@ -816,7 +823,7 @@ public class AiravataJCRRegistry extends
             Node workflowDataNode = getWorkflowExperimentDataNode(workflowOutputData.getExperimentId(),session);
             workflowDataNode.setProperty(PROPERTY_WORKFLOW_NAME, workflowOutputData.getWorkflowName());
             workflowDataNode = getOrAddNode(getOrAddNode(workflowDataNode, workflowOutputData.getNodeId()), type);
-            workflowDataNode.setProperty(PROPERTY_WORKFLOW_IO_CONTENT, workflowOutputData.getData());
+            workflowDataNode.setProperty(PROPERTY_WORKFLOW_IO_CONTENT, workflowOutputData.getValue());
             session.save();
         } catch (Exception e) {
             isSaved = false;
@@ -827,19 +834,19 @@ public class AiravataJCRRegistry extends
         return isSaved;
     }
 
-    public List<WorkflowIOData> searchWorkflowExecutionServiceInput(String experimentIdRegEx, String workflowNameRegEx,
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceInput(String experimentIdRegEx, String workflowNameRegEx,
             String nodeNameRegEx) throws RegistryException{
         return searchWorkflowIO(experimentIdRegEx, workflowNameRegEx, nodeNameRegEx, INPUT);
     }
 
-    public List<WorkflowIOData> searchWorkflowExecutionServiceOutput(String experimentIdRegEx, String workflowNameRegEx,
+    public List<WorkflowServiceIOData> searchWorkflowExecutionServiceOutput(String experimentIdRegEx, String workflowNameRegEx,
             String nodeNameRegEx) throws RegistryException{
         return searchWorkflowIO(experimentIdRegEx, workflowNameRegEx, nodeNameRegEx, OUTPUT);
     }
 
-    private List<WorkflowIOData> searchWorkflowIO(String experimentIdRegEx, String workflowNameRegEx,
+    private List<WorkflowServiceIOData> searchWorkflowIO(String experimentIdRegEx, String workflowNameRegEx,
             String nodeNameRegEx, String type) throws RegistryException{
-        List<WorkflowIOData> workflowIODataList = new ArrayList<WorkflowIOData>();
+        List<WorkflowServiceIOData> workflowIODataList = new ArrayList<WorkflowServiceIOData>();
         Session session = null;
         try {
             session = getSession();
@@ -864,12 +871,12 @@ public class AiravataJCRRegistry extends
                             continue;
                         }
                         Node ioNode = getOrAddNode(serviceNode, type);
-                        WorkflowIOData workflowIOData = new WorkflowIOData();
+                        WorkflowServiceIOData workflowIOData = new WorkflowServiceIOData();
                         workflowIOData.setExperimentId(experimentNode.getName());
                         workflowIOData.setWorkflowId(workflowNode.getName());
                         workflowIOData.setWorkflowName(workflowName);
                         workflowIOData.setNodeId(serviceNode.getName());
-                        workflowIOData.setData(ioNode.getProperty(PROPERTY_WORKFLOW_IO_CONTENT).getString());
+                        workflowIOData.setValue(ioNode.getProperty(PROPERTY_WORKFLOW_IO_CONTENT).getString());
                         workflowIODataList.add(workflowIOData);
                     }
                 }
@@ -899,16 +906,22 @@ public class AiravataJCRRegistry extends
         return isSaved;
     }
 
-    public String getWorkflowExecutionStatus(String experimentId)throws RegistryException{
-       Session session = null;
-        String property = null;
+    public WorkflowExecutionStatus getWorkflowExecutionStatus(String experimentId)throws RegistryException{
+    	Session session = null;
+    	WorkflowExecutionStatus property = null;
         try {
             session = getSession();
             Node workflowDataNode = getWorkflowExperimentDataNode(experimentId, session);
-            property = workflowDataNode.getProperty(WORKFLOW_STATUS_PROPERTY).getString();
+            ExecutionStatus status = ExecutionStatus.valueOf(workflowDataNode.getProperty(WORKFLOW_STATUS_PROPERTY).getString());
+            String dateString = workflowDataNode.getProperty(WORKFLOW_STATUS_TIME_PROPERTY).getString();
+			Date date=null;
+			if (dateString!=null) {
+				date = DateFormat.getInstance().parse(dateString);
+			}
+			property=new WorkflowExecutionStatus(status, date);
             session.save();
         } catch (Exception e) {
-            e.printStackTrace();
+            throw new RegistryException("Error while retrieving workflow execution status!!!", e);
         } finally {
             closeSession(session);
         }
@@ -938,7 +951,7 @@ public class AiravataJCRRegistry extends
 	    return true;
 	}
 
-    public String getWorkflowExecutionOutput(String experimentId,String outputNodeName) throws RegistryException{
+    public WorkflowIOData getWorkflowExecutionOutput(String experimentId,String outputNodeName) throws RegistryException{
 		Session session=null;
 		try {
 			session = getSession();
@@ -948,7 +961,7 @@ public class AiravataJCRRegistry extends
 			if (outputProperty==null){
 				return null;
 			}
-			return outputProperty.getString();
+			return new WorkflowIOData(outputNodeName,outputProperty.getString());
 		} catch (RepositoryException e) {
 			e.printStackTrace();
 			throw new RegistryException(e);
@@ -1000,14 +1013,14 @@ public class AiravataJCRRegistry extends
         }
         return matchList;
     }
-    public Map<String, String> getWorkflowExecutionStatusWithRegex(String regex) throws RegistryException {
+    public Map<String, WorkflowExecutionStatus> getWorkflowExecutionStatusWithRegex(String regex) throws RegistryException {
         Session session=null;
-        Map<String,String> workflowStatusMap = new HashMap<String, String>();
+        Map<String,WorkflowExecutionStatus> workflowStatusMap = new HashMap<String, WorkflowExecutionStatus>();
         try {
             session = getSession();
             List<String> matchingExperimentIds = getMatchingExperimentIds(regex, session);
             for(String experimentId:matchingExperimentIds){
-                String workflowStatus = getWorkflowExecutionStatus(experimentId);
+                WorkflowExecutionStatus workflowStatus = getWorkflowExecutionStatus(experimentId);
                 workflowStatusMap.put(experimentId,workflowStatus);
             }
 		} catch (RepositoryException e) {
@@ -1019,14 +1032,14 @@ public class AiravataJCRRegistry extends
         return workflowStatusMap;
     }
 
-    public Map<String, String> getWorkflowExecutionOutputWithRegex(String regex, String outputName) throws RegistryException {
+    public Map<String, WorkflowIOData> getWorkflowExecutionOutputWithRegex(String regex, String outputName) throws RegistryException {
         Session session=null;
-        Map<String,String> workflowStatusMap = new HashMap<String, String>();
+        Map<String,WorkflowIOData> workflowStatusMap = new HashMap<String, WorkflowIOData>();
         try {
             session = getSession();
             List<String> matchingExperimentIds = getMatchingExperimentIds(regex, session);
             for(String experimentId:matchingExperimentIds){
-                String workflowOutputData = getWorkflowExecutionOutput(experimentId,outputName);
+            	WorkflowIOData workflowOutputData = getWorkflowExecutionOutput(experimentId,outputName);
                 workflowStatusMap.put(experimentId,workflowOutputData);
             }
 		} catch (RepositoryException e) {
@@ -1059,6 +1072,63 @@ public class AiravataJCRRegistry extends
 
 	public boolean saveWorkflowExecutionUser(String experimentId, String user)
 			throws RegistryException {
-		return false;
+		Session session = null;
+        boolean isSaved = true;
+        try {
+            session = getSession();
+            Node workflowDataNode = getWorkflowExperimentDataNode(experimentId, session);
+            workflowDataNode.setProperty(WORKFLOW_USER_PROPERTY,user);
+            session.save();
+        } catch (Exception e) {
+            isSaved = false;
+            e.printStackTrace();
+        } finally {
+            closeSession(session);
+        }
+        return isSaved;
+	}
+
+	public boolean saveWorkflowExecutionOutput(String experimentId,WorkflowIOData data)
+			throws RegistryException {
+		return saveWorkflowExecutionOutput(experimentId, data.getNodeId(), data.getValue());
+	}
+
+	public String getWorkflowExecutionUser(String experimentId)
+			throws RegistryException {
+		Session session = null;
+        String property = null;
+        try {
+            session = getSession();
+            Node workflowDataNode = getWorkflowExperimentDataNode(experimentId, session);
+            property = workflowDataNode.getProperty(WORKFLOW_USER_PROPERTY).getString();
+            session.save();
+        } catch (Exception e) {
+            e.printStackTrace();
+        } finally {
+            closeSession(session);
+        }
+        return property;
+	}
+
+	public WorkflowExecution getWorkflowExection(String experimentId)
+			throws RegistryException {
+		WorkflowExecution workflowExecution = new WorkflowExecutionImpl();
+		workflowExecution.setExperimentId(experimentId);
+		workflowExecution.setExecutionStatus(getWorkflowExecutionStatus(experimentId));
+		workflowExecution.setUser(getWorkflowExecutionUser(experimentId));
+		workflowExecution.setOutput(getWorkflowExecutionOutput(experimentId));
+		workflowExecution.setServiceInput(searchWorkflowExecutionServiceInput(experimentId,".*",".*"));
+		workflowExecution.setServiceOutput(searchWorkflowExecutionServiceOutput(experimentId,".*",".*"));
+		return null;
+	}
+
+	public List<WorkflowIOData> getWorkflowExecutionOutput(String experimentId)
+			throws RegistryException {
+		List<WorkflowIOData> result=new ArrayList<WorkflowIOData>();
+		String[] workflowExecutionOutputNames = getWorkflowExecutionOutputNames(experimentId);
+		for (String workflowExecutionOutputName : workflowExecutionOutputNames) {
+			result.add(getWorkflowExecutionOutput(experimentId, workflowExecutionOutputName));
+		}
+		return result;
 	}
 }

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionImpl.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionImpl.java?rev=1234155&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionImpl.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/impl/WorkflowExecutionImpl.java Fri Jan 20 21:42:59 2012
@@ -0,0 +1,121 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.api.impl;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.airavata.registry.api.WorkflowExecution;
+import org.apache.airavata.registry.api.WorkflowExecutionStatus;
+import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
+
+public class WorkflowExecutionImpl implements WorkflowExecution{
+	private WorkflowExecutionStatus executionStatus;
+	private String user;
+	private List<WorkflowServiceIOData> serviceInput;
+	private List<WorkflowServiceIOData> serviceOutput;
+	private List<WorkflowIOData> output;
+	private String experimentId;
+	
+	public String getExperimentId() {
+		return experimentId;
+	}
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+	public String getTopic() {
+		return experimentId;
+	}
+	public void setTopic(String topic) {
+		this.experimentId = topic;
+	}
+	public WorkflowExecutionStatus getExecutionStatus() {
+		return executionStatus;
+	}
+	public void setExecutionStatus(WorkflowExecutionStatus executionStatus) {
+		this.executionStatus = executionStatus;
+	}
+	public String getUser() {
+		return user;
+	}
+	public void setUser(String user) {
+		this.user = user;
+	}
+	public List<WorkflowServiceIOData> getServiceInput() {
+		if (serviceInput==null){
+			serviceInput=new ArrayList<WorkflowServiceIOData>();
+		}
+		return serviceInput;
+	}
+	public void setServiceInput(List<WorkflowServiceIOData> serviceInput) {
+		this.serviceInput = serviceInput;
+	}
+	public List<WorkflowServiceIOData> getServiceOutput() {
+		if (serviceOutput==null){
+			serviceOutput=new ArrayList<WorkflowServiceIOData>();
+		}
+		return serviceOutput;
+	}
+	public void setServiceOutput(List<WorkflowServiceIOData> serviceOutput) {
+		this.serviceOutput = serviceOutput;
+	}
+	public List<WorkflowIOData> getOutput() {
+		if (output==null){
+			output=new ArrayList<WorkflowIOData>();
+		}
+		return output;
+	}
+	public void setOutput(List<WorkflowIOData> output) {
+		this.output = output;
+	}
+	
+	public void addServiceInput(WorkflowServiceIOData serviceInput) {
+		getServiceInput().add(serviceInput);
+	}
+	public void addServiceOutput(WorkflowServiceIOData serviceOutput) {
+		getServiceOutput().add(serviceOutput);
+	}
+	public void addOutput(WorkflowIOData output) {
+		getOutput().add(output);
+	}
+	
+	public WorkflowServiceIOData getServiceInput(String nodeId) {
+		return (WorkflowServiceIOData)getIOData(nodeId, getServiceInput());
+	}
+	public WorkflowServiceIOData getServiceOutput(String nodeId) {
+		return (WorkflowServiceIOData)getIOData(nodeId, getServiceOutput());
+	}
+	public WorkflowIOData getOutput(String nodeId) {
+		return (WorkflowServiceIOData)getIOData(nodeId, getOutput());
+	}
+
+	private WorkflowIOData getIOData(String nodeId, List<?> list) {
+		for (Object data : list) {
+			WorkflowIOData iodata=(WorkflowIOData)data;
+			if (iodata.getNodeId().equals(nodeId)){
+				return iodata;
+			}
+		}
+		return null;
+	}
+}

Modified: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowIOData.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowIOData.java?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowIOData.java (original)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowIOData.java Fri Jan 20 21:42:59 2012
@@ -22,42 +22,23 @@
 package org.apache.airavata.registry.api.workflow;
 
 public class WorkflowIOData {
-	private String data; 
-	private String experimentId;
+	private String value; 
     private String nodeId;
-    private String workflowName;
-    private String workflowId;
     
     public WorkflowIOData() {
 	}
     
-	public WorkflowIOData(String data, String experimentId, String workflowId,
-            String nodeId,String workflowName) {
-		setData(data);
-		setExperimentId(experimentId);
-		setWorkflowId(workflowId);
+	public WorkflowIOData(String nodeId,String value) {
+		setValue(value);
 		setNodeId(nodeId);
-		setWorkflowName(workflowName);
 	}
 
-	public WorkflowIOData(String data, String experimentId,
-            String nodeId,String workflowName) {
-		this(data, experimentId, experimentId, nodeId, workflowName);
-	}
-	public String getData() {
-		return data;
-	}
-
-	public void setData(String data) {
-		this.data = data;
+	public String getValue() {
+		return value;
 	}
 
-	public String getExperimentId() {
-		return experimentId;
-	}
-
-	public void setExperimentId(String experimentId) {
-		this.experimentId = experimentId;
+	public void setValue(String value) {
+		this.value = value;
 	}
 
 	public String getNodeId() {
@@ -68,19 +49,4 @@ public class WorkflowIOData {
 		this.nodeId = nodeId;
 	}
 
-	public String getWorkflowName() {
-		return workflowName;
-	}
-
-	public void setWorkflowName(String workflowName) {
-		this.workflowName = workflowName;
-	}
-
-	public String getWorkflowId() {
-		return workflowId;
-	}
-
-	public void setWorkflowId(String workflowId) {
-		this.workflowId = workflowId;
-	}
 }

Added: incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowServiceIOData.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowServiceIOData.java?rev=1234155&view=auto
==============================================================================
--- incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowServiceIOData.java (added)
+++ incubator/airavata/trunk/modules/commons/registry-api/src/main/java/org/apache/airavata/registry/api/workflow/WorkflowServiceIOData.java Fri Jan 20 21:42:59 2012
@@ -0,0 +1,68 @@
+/*
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *
+ */
+
+package org.apache.airavata.registry.api.workflow;
+
+public class WorkflowServiceIOData extends WorkflowIOData {
+	private String experimentId;
+    private String workflowName;
+    private String workflowId;
+    
+    public WorkflowServiceIOData() {
+	}
+    
+	public WorkflowServiceIOData(String data, String experimentId, String workflowId,
+            String nodeId,String workflowName) {
+		super(nodeId,data);
+		setExperimentId(experimentId);
+		setWorkflowId(workflowId);
+		setWorkflowName(workflowName);
+	}
+
+	public WorkflowServiceIOData(String data, String experimentId,
+            String nodeId,String workflowName) {
+		this(data, experimentId, experimentId, nodeId, workflowName);
+	}
+
+	public String getExperimentId() {
+		return experimentId;
+	}
+
+	public void setExperimentId(String experimentId) {
+		this.experimentId = experimentId;
+	}
+
+	public String getWorkflowName() {
+		return workflowName;
+	}
+
+	public void setWorkflowName(String workflowName) {
+		this.workflowName = workflowName;
+	}
+
+	public String getWorkflowId() {
+		return workflowId;
+	}
+
+	public void setWorkflowId(String workflowId) {
+		this.workflowId = workflowId;
+	}
+}

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/provenance/ProvenanceWrite.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/provenance/ProvenanceWrite.java?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/provenance/ProvenanceWrite.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/provenance/ProvenanceWrite.java Fri Jan 20 21:42:59 2012
@@ -27,7 +27,7 @@ import java.util.Map;
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 import org.apache.airavata.common.utils.XMLUtil;
 import org.apache.airavata.registry.api.AiravataRegistry;
-import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
 import org.apache.airavata.xbaya.XBayaException;
 import org.apache.airavata.xbaya.concurrent.PredicatedExecutable;
 import org.apache.airavata.xbaya.graph.DataPort;
@@ -174,7 +174,7 @@ public final class ProvenanceWrite imple
 			}
             if (inputs!=null) {
 				try {
-					this.registry.saveWorkflowExecutionServiceInput(new WorkflowIOData(
+					this.registry.saveWorkflowExecutionServiceInput(new WorkflowServiceIOData(
 							xsul5.XmlConstants.BUILDER.serializeToString(inputs),
 							experimentId, node.getID(), this.workflowName));
 				} catch (RegistryException e) {
@@ -206,7 +206,7 @@ public final class ProvenanceWrite imple
 				}
 			}
             try {
-				this.registry.saveWorkflowExecutionServiceOutput(new WorkflowIOData(xsul5.XmlConstants.BUILDER.serializeToString(outputs), experimentId, node.getID(),this.workflowName));
+				this.registry.saveWorkflowExecutionServiceOutput(new WorkflowServiceIOData(xsul5.XmlConstants.BUILDER.serializeToString(outputs), experimentId, node.getID(),this.workflowName));
             } catch (RegistryException e) {
 				throw new XBayaException(e);
 			}

Modified: incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/model/XBayaWorkflowExperiments.java
URL: http://svn.apache.org/viewvc/incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/model/XBayaWorkflowExperiments.java?rev=1234155&r1=1234154&r2=1234155&view=diff
==============================================================================
--- incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/model/XBayaWorkflowExperiments.java (original)
+++ incubator/airavata/trunk/modules/xbaya-gui/src/main/java/org/apache/airavata/xbaya/registrybrowser/model/XBayaWorkflowExperiments.java Fri Jan 20 21:42:59 2012
@@ -32,7 +32,7 @@ import javax.xml.parsers.ParserConfigura
 
 import org.apache.airavata.common.registry.api.exception.RegistryException;
 import org.apache.airavata.registry.api.AiravataRegistry;
-import org.apache.airavata.registry.api.workflow.WorkflowIOData;
+import org.apache.airavata.registry.api.workflow.WorkflowServiceIOData;
 import org.apache.airavata.schemas.gfac.Parameter;
 import org.apache.axis2.util.XMLUtils;
 import org.w3c.dom.Document;
@@ -50,8 +50,8 @@ public class XBayaWorkflowExperiments {
 	public List<XBayaWorkflowExperiment> getAllExperiments(){
 		Map<String, XBayaWorkflowExperiment> experiments=new HashMap<String,XBayaWorkflowExperiment>();
     	try {
-			List<WorkflowIOData> workflowInput = getRegistry().searchWorkflowExecutionServiceInput(null, null, null);
-			List<WorkflowIOData> workflowOutput = getRegistry().searchWorkflowExecutionServiceOutput(null, null, null);
+			List<WorkflowServiceIOData> workflowInput = getRegistry().searchWorkflowExecutionServiceInput(null, null, null);
+			List<WorkflowServiceIOData> workflowOutput = getRegistry().searchWorkflowExecutionServiceOutput(null, null, null);
 			createChildren(experiments, workflowInput, true);
 			createChildren(experiments, workflowOutput, false);
 		} catch (RegistryException e) {
@@ -61,8 +61,8 @@ public class XBayaWorkflowExperiments {
 	}
 	private void createChildren(
 			Map<String, XBayaWorkflowExperiment> experiments,
-			List<WorkflowIOData> workflowIO, boolean inputData) {
-		for (WorkflowIOData workflowIOData : workflowIO) {
+			List<WorkflowServiceIOData> workflowIO, boolean inputData) {
+		for (WorkflowServiceIOData workflowIOData : workflowIO) {
 			if (!experiments.containsKey(workflowIOData.getExperimentId())){
 				experiments.put(workflowIOData.getExperimentId(),new XBayaWorkflowExperiment(workflowIOData.getExperimentId(), null));
 			}
@@ -92,7 +92,7 @@ public class XBayaWorkflowExperiments {
 				xbayaWorkflow.add(workflowService);
 			}
 			try {
-				Document parameterDocument = XMLUtils.newDocument(new ByteArrayInputStream(workflowIOData.getData().getBytes()));
+				Document parameterDocument = XMLUtils.newDocument(new ByteArrayInputStream(workflowIOData.getValue().getBytes()));
 				NodeList childNodes = parameterDocument.getDocumentElement().getChildNodes();
 				for(int i=0;i<childNodes.getLength();i++){
 					Node parameterNode = childNodes.item(i);