You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airavata.apache.org by sc...@apache.org on 2016/08/29 17:41:19 UTC

[1/3] airavata git commit: adding process model classes

Repository: airavata
Updated Branches:
  refs/heads/supun/develop 3ce49b9a6 -> 171c0425f


http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
new file mode 100644
index 0000000..e7cc6ee
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorPK.java
@@ -0,0 +1,75 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessErrorPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessErrorPK.class);
+    private String errorId;
+    private String processId;
+
+    @Column(name = "ERROR_ID")
+    @Id
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Column(name = "PROCESS_ID")
+    @Id
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessErrorPK that = (ProcessErrorPK) o;
+
+        if (getErrorId() != null ? !getErrorId().equals(that.getErrorId()) : that.getErrorId() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getErrorId() != null ? getErrorId().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
new file mode 100644
index 0000000..a63ff37
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputEntity.java
@@ -0,0 +1,174 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_INPUT")
+@IdClass(ProcessInputPK.class)
+public class ProcessInputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean standardInput;
+    public String userFriendlyDescription;
+    public String metaData;
+    public int inputOrder;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataStaged;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProceesId() {
+        return processId;
+    }
+
+    public void setProceseId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "INPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "INPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "STANDARD_INPUT")
+    public boolean isStandardInput() {
+        return standardInput;
+    }
+
+    public void setStandardInput(boolean standardInput) {
+        this.standardInput = standardInput;
+    }
+
+    @Column(name = "USER_FRIENDLY_DESCRIPTION")
+    public String getUserFriendlyDescription() {
+        return userFriendlyDescription;
+    }
+
+    public void setUserFriendlyDescription(String userFriendlyDescription) {
+        this.userFriendlyDescription = userFriendlyDescription;
+    }
+
+    @Lob
+    @Column(name = "METADATA")
+    public String getMetaData() {
+        return metaData;
+    }
+
+    public void setMetaData(String metaData) {
+        this.metaData = metaData;
+    }
+
+    @Column(name = "INPUT_ORDER")
+    public int getInputOrder() {
+        return inputOrder;
+    }
+
+    public void setInputOrder(int inputOrder) {
+        this.inputOrder = inputOrder;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_STAGED")
+    public boolean isDataStaged() {
+        return dataStaged;
+    }
+
+    public void setDataStaged(boolean dataStaged) {
+        this.dataStaged = dataStaged;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
new file mode 100644
index 0000000..188b35f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessInputPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessInputPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessInputPK.class);
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "INPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessInputPK that = (ProcessInputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
new file mode 100644
index 0000000..06181bc
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputEntity.java
@@ -0,0 +1,165 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_OUTPUT")
+@IdClass(ProcessOutputPK.class)
+public class ProcessOutputEntity {
+    private String processId;
+    public String name;
+    public String value;
+    public String type;
+    public String applicationArgument;
+    public boolean isRequired;
+    public boolean requiredToAddedToCommandLine;
+    public boolean dataMovement;
+    public String location;
+    public String searchQuery;
+    public boolean outputStreaming;
+    public String storageResourceId;
+
+    private ProcessEntity process;
+
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Column(name = "OUTPUT_VALUE")
+    public String getValue() {
+        return value;
+    }
+
+    public void setValue(String value) {
+        this.value = value;
+    }
+
+    @Column(name = "OUTPUT_TYPE")
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    @Column(name = "APPLICATION_ARGUMENT")
+    public String getApplicationArgument() {
+        return applicationArgument;
+    }
+
+    public void setApplicationArgument(String applicationArgument) {
+        this.applicationArgument = applicationArgument;
+    }
+
+    @Column(name = "REQUIRED")
+    public boolean isRequired() {
+        return isRequired;
+    }
+
+    public void setRequired(boolean isRequired) {
+        this.isRequired = isRequired;
+    }
+
+
+    @Column(name = "REQUIRED_TO_ADDED_TO_COMMANDLINE")
+    public boolean isRequiredToAddedToCommandLine() {
+        return requiredToAddedToCommandLine;
+    }
+
+    public void setRequiredToAddedToCommandLine(boolean requiredToAddedToCommandLine) {
+        this.requiredToAddedToCommandLine = requiredToAddedToCommandLine;
+    }
+
+    @Column(name = "DATA_MOVEMENT")
+    public boolean isDataMovement() {
+        return dataMovement;
+    }
+
+    public void setDataMovement(boolean dataMovement) {
+        this.dataMovement = dataMovement;
+    }
+
+    @Column(name = "LOCATION")
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    @Column(name = "SEARCH_QUERY")
+    public String getSearchQuery() {
+        return searchQuery;
+    }
+
+    public void setSearchQuery(String searchQuery) {
+        this.searchQuery = searchQuery;
+    }
+
+    @Column(name = "OUTPUT_STREAMING")
+    public boolean isOutputStreaming() {
+        return outputStreaming;
+    }
+
+    public void setOutputStreaming(boolean outputStreaming) {
+        this.outputStreaming = outputStreaming;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
new file mode 100644
index 0000000..bde7c50
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessOutputPK.java
@@ -0,0 +1,70 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessOutputPK implements Serializable {
+    private String processId;
+    private String name;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "OUTPUT_NAME")
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessOutputPK that = (ProcessOutputPK) o;
+
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+        if (getName() != null ? !getName().equals(that.getName()) : that.getName() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getProcessId() != null ? getProcessId().hashCode() : 0;
+        result = 31 * result + (getName() != null ? getName().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
new file mode 100644
index 0000000..11f167d
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessResourceSchedulingEntity.java
@@ -0,0 +1,170 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_RESOURCE_SCHEDULING")
+public class ProcessResourceSchedulingEntity {
+    private String processId;
+    private String resourceHostId;
+    private int totalCPUCount;
+    private int nodeCount;
+    private int numberOfThreads;
+    private String queueName;
+    private int wallTimeLimit;
+    private int totalPhysicalMemory;
+    private String chessisNumber;
+    private String staticWorkingDir;
+    private String overrideLoginUserName;
+    private String overrideScratchLocation;
+    private String overrideAllocationProjectNumber;
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "RESOURCE_HOST_ID")
+    public String getResourceHostId() {
+        return resourceHostId;
+    }
+
+    public void setResourceHostId(String resourceHostId) {
+        this.resourceHostId = resourceHostId;
+    }
+
+    @Column(name = "CPU_COUNT")
+    public int getTotalCPUCount() {
+        return totalCPUCount;
+    }
+
+    public void setTotalCPUCount(int totalCPUCount) {
+        this.totalCPUCount = totalCPUCount;
+    }
+
+    @Column(name = "NODE_COUNT")
+    public int getNodeCount() {
+        return nodeCount;
+    }
+
+    public void setNodeCount(int nodeCount) {
+        this.nodeCount = nodeCount;
+    }
+
+    @Column(name = "NUMBER_OF_THREADS")
+    public int getNumberOfThreads() {
+        return numberOfThreads;
+    }
+
+    public void setNumberOfThreads(int numberOfThreads) {
+        this.numberOfThreads = numberOfThreads;
+    }
+
+    @Column(name = "QUEUE_NAME")
+    public String getQueueName() {
+        return queueName;
+    }
+
+    public void setQueueName(String queueName) {
+        this.queueName = queueName;
+    }
+
+    @Column(name = "WALL_TIME_LIMIT")
+    public int getWallTimeLimit() {
+        return wallTimeLimit;
+    }
+
+    public void setWallTimeLimit(int wallTimeLimit) {
+        this.wallTimeLimit = wallTimeLimit;
+    }
+
+    @Column(name = "TOTAL_PHYSICAL_MEMORY")
+    public int getTotalPhysicalMemory() {
+        return totalPhysicalMemory;
+    }
+
+    public void setTotalPhysicalMemory(int totalPhysicalMemory) {
+        this.totalPhysicalMemory = totalPhysicalMemory;
+    }
+
+    @Column(name = "CHESSIS_NUMBER")
+    public String getChessisNumber() {
+        return chessisNumber;
+    }
+
+    public void setChessisNumber(String chessisNumber) {
+        this.chessisNumber = chessisNumber;
+    }
+
+    @Column(name = "STATIC_WORKING_DIRECTORY")
+    public String getStaticWorkingDir() {
+        return staticWorkingDir;
+    }
+
+    public void setStaticWorkingDir(String staticWorkingDir) {
+        this.staticWorkingDir = staticWorkingDir;
+    }
+
+    @Column(name = "OVERRIDE_LOGIN_USERNAME")
+    public String getOverrideLoginUserName() {
+        return overrideLoginUserName;
+    }
+
+    public void setOverrideLoginUserName(String overrideLoginUserName) {
+        this.overrideLoginUserName = overrideLoginUserName;
+    }
+
+    @Column(name = "OVERRIDE_SCRATCH_LOCATION")
+    public String getOverrideScratchLocation() {
+        return overrideScratchLocation;
+    }
+
+    public void setOverrideScratchLocation(String overrideScratchLocation) {
+        this.overrideScratchLocation = overrideScratchLocation;
+    }
+
+    @Column(name = "OVERRIDE_ALLOCATION_PROJECT_NUMBER")
+    public String getOverrideAllocationProjectNumber() {
+        return overrideAllocationProjectNumber;
+    }
+
+    public void setOverrideAllocationProjectNumber(String overrideAllocationProjectNumber) {
+        this.overrideAllocationProjectNumber = overrideAllocationProjectNumber;
+    }
+
+    @OneToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL)
+    @PrimaryKeyJoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
new file mode 100644
index 0000000..ea816b5
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusEntity.java
@@ -0,0 +1,83 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.*;
+
+@Entity
+@Table(name = "PROCESS_STATUS")
+@IdClass(ProcessStatusPK.class)
+public class ProcessStatusEntity {
+    private String processId;
+    private String state;
+    private long timeOfStateChange;
+    private String reason;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Id
+    @Column(name = "STATE")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Column(name = "TIME_OF_STATE_CHANGE")
+    public long getTimeOfStateChange() {
+        return timeOfStateChange;
+    }
+
+    public void setTimeOfStateChange(long timeOfStateChange) {
+        this.timeOfStateChange = timeOfStateChange;
+    }
+
+    @Column(name = "REASON")
+    public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
new file mode 100644
index 0000000..dba568a
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessStatusPK.java
@@ -0,0 +1,74 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import java.io.Serializable;
+
+public class ProcessStatusPK implements Serializable {
+    private final static Logger logger = LoggerFactory.getLogger(ProcessStatusPK.class);
+    private String state;
+    private String processId;
+
+    @Id
+    @Column(name = "STATUS_ID")
+    public String getState() {
+        return state;
+    }
+
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+
+        ProcessStatusPK that = (ProcessStatusPK) o;
+
+        if (getState() != null ? !getState().equals(that.getState()) : that.getState() != null) return false;
+        if (getProcessId() != null ? !getProcessId().equals(that.getProcessId()) : that.getProcessId() != null) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = getState() != null ? getState().hashCode() : 0;
+        result = 31 * result + (getProcessId() != null ? getProcessId().hashCode() : 0);
+        return result;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
index b20650d..5a52dff 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/repositories/expcatalog/ExperimentRepository.java
@@ -49,8 +49,11 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         Mapper mapper = ObjectMapperSingleton.getInstance();
         ExperimentEntity entity = mapper.map(experiment, ExperimentEntity.class);
 
-        if(entity.getUserConfigurationData() != null)
+        if(entity.getUserConfigurationData() != null) {
             entity.getUserConfigurationData().setExperimentId(experimentId);
+            if (entity.getUserConfigurationData().getComputeResourceSchedulingEntity() != null)
+                entity.getUserConfigurationData().getComputeResourceSchedulingEntity().setExperimentId(experimentId);
+        }
         if(entity.getExperimentInputs() != null)
             entity.getExperimentInputs().forEach(expIn->expIn.setExperimentId(experimentId));
         if(entity.getExperimentOutputs() != null)
@@ -60,6 +63,23 @@ public class ExperimentRepository extends AbstractRepository<ExperimentModel, Ex
         if(entity.getExperimentStatuses() != null)
             entity.getExperimentStatuses().forEach(expStatus->expStatus.setExperimentId(experimentId));
 
+        if(entity.getProcesses() != null){
+            entity.getProcesses().forEach(process->{
+                process.setExperimentId(experimentId);
+                String processId = process.getProcessId();
+                if(process.getProcessResourceSchedule() != null)
+                    process.getProcessResourceSchedule().setProcessId(processId);
+                if(process.getProcessInputs() != null)
+                    process.getProcessInputs().forEach(proInput->proInput.setProceseId(processId));
+                if(process.getProcessOutputs() != null)
+                    process.getProcessOutputs().forEach(proOutput->proOutput.setProcessId(processId));
+                if(process.getProcessError() != null)
+                    process.getProcessError().forEach(processErr->processErr.setProcessId(processId));
+                if(process.getProcessStatus() != null)
+                    process.getProcessStatus().forEach(processStat->processStat.setProcessId(processId));
+            });
+        }
+
         ExperimentEntity persistedCopy = JPAUtils.execute(entityManager -> entityManager.merge(entity));
         return mapper.map(persistedCopy, ExperimentModel.class);
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
index f7d72f3..8367f97 100644
--- a/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
+++ b/modules/registry-refactoring/src/main/resources/META-INF/persistence.xml
@@ -34,6 +34,12 @@
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentOutputEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.ExperimentStatusEntity</class>
         <class>org.apache.airavata.registry.core.entities.expcatalog.UserConfigurationEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessErrorEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessInputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessOutputEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessResourceSchedulingEntity</class>
+        <class>org.apache.airavata.registry.core.entities.expcatalog.ProcessStatusEntity</class>
         <exclude-unlisted-classes>true</exclude-unlisted-classes>
     </persistence-unit>
 </persistence>

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
index 4d401a3..8c11027 100644
--- a/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
+++ b/modules/registry-refactoring/src/main/resources/experiment_catalog.sql
@@ -116,4 +116,112 @@ CREATE TABLE IF NOT EXISTS EXPERIMENT_STATUS(
     REASON VARCHAR (255),
     PRIMARY KEY (EXPERIMENT_ID, STATE),
     FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS(
+    PROCESS_ID VARCHAR (255),
+    EXPERIMENT_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    LAST_UPDATE_TIME BIGINT,
+    PROCESS_DETAIL VARCHAR (255),
+    APPLICATION_INTERFACE_ID VARCHAR (255),
+    APPLICATION_DEPLOYMENT_ID VARCHAR (255),
+    COMPUTE_RESOURCE_ID VARCHAR (255),
+    TASK_DAG VARCHAR (255),
+    GATEWAY_EXECUTION_ID VARCHAR (255),
+    ENABLE_EMAIL_NOTIFICATION TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    USER_DN VARCHAR (255),
+    GENERATE_CERT VARCHAR (255),
+    EXPERIMENT_DATA_DIR VARCHAR (255),
+    USER_NAME VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (EXPERIMENT_ID) REFERENCES EXPERIMENT(EXPERIMENT_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_EMAIL (
+    PROCESS_ID VARCHAR (255),
+    EMAIL VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, EMAIL),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_RESOURCE_SCHEDULING(
+    PROCESS_ID VARCHAR (255),
+    RESOURCE_HOST_ID VARCHAR (255),
+    CPU_COUNT INT,
+    NODE_COUNT INT,
+    NUMBER_OF_THREADS INT,
+    QUEUE_NAME VARCHAR (255),
+    WALL_TIME_LIMIT INT,
+    TOTAL_PHYSICAL_MEMORY INT,
+    CHESSIS_NUMBER VARCHAR (255),
+    STATIC_WORKING_DIRECTORY VARCHAR (255),
+    OVERRIDE_LOGIN_USERNAME VARCHAR (255),
+    OVERRIDE_SCRATCH_LOCATION VARCHAR (255),
+    OVERRIDE_ALLOCATION_PROJECT_NUMBER VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_INPUT(
+    PROCESS_ID VARCHAR (255),
+    INPUT_NAME VARCHAR (255),
+    INPUT_VALUE VARCHAR (255),
+    INPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    STANDARD_INPUT TINYINT(1),
+    USER_FRIENDLY_DESCRIPTION VARCHAR (255),
+    METADATA VARCHAR (4096),
+    INPUT_ORDER INT,
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_STAGED TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,INPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_OUTPUT(
+    PROCESS_ID VARCHAR (255),
+    OUTPUT_NAME VARCHAR (255),
+    OUTPUT_VALUE VARCHAR (255),
+    OUTPUT_TYPE VARCHAR (255),
+    APPLICATION_ARGUMENT VARCHAR (255),
+    REQUIRED TINYINT(1),
+    REQUIRED_TO_ADDED_TO_COMMANDLINE TINYINT(1),
+    DATA_MOVEMENT TINYINT(1),
+    LOCATION VARCHAR (255),
+    SEARCH_QUERY VARCHAR (255),
+    OUTPUT_STREAMING TINYINT(1),
+    STORAGE_RESOURCE_ID VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID,OUTPUT_NAME),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR(
+    ERROR_ID VARCHAR (255),
+    PROCESS_ID VARCHAR (255),
+    CREATION_TIME BIGINT,
+    ACTUAL_ERROR_MESSAGE VARCHAR (255),
+    USER_FRIENDLY_MESSAGE VARCHAR (255),
+    TRANSIENT_OR_PERSISTENT TINYINT,
+    PRIMARY KEY (ERROR_ID, PROCESS_ID),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_ERROR_ROOT_CAUSE_ERROR_ID(
+    ERROR_ID VARCHAR (255),
+    ROOT_CAUSE_ERROR_ID VARCHAR (255),
+    PRIMARY KEY (ERROR_ID, ROOT_CAUSE_ERROR_ID),
+    FOREIGN KEY(ERROR_ID) REFERENCES PROCESS_ERROR(ERROR_ID) ON DELETE CASCADE
+);
+
+CREATE TABLE IF NOT EXISTS PROCESS_STATUS(
+    PROCESS_ID VARCHAR (255),
+    STATE VARCHAR (255),
+    TIME_OF_STATE_CHANGE BIGINT,
+    REASON VARCHAR (255),
+    PRIMARY KEY (PROCESS_ID, STATE),
+    FOREIGN KEY (PROCESS_ID) REFERENCES PROCESS(PROCESS_ID) ON DELETE CASCADE
 );
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
index 3066886..f66b283 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentRegistry.java
@@ -293,8 +293,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                addProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                addProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 addProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -305,10 +305,12 @@ public class ExperimentRegistry {
 
             ProcessStatus processStatus = new ProcessStatus();
             processStatus.setState(ProcessState.CREATED);
-            addProcessStatus(processStatus, process.getProcessId());
+            List<ProcessStatus> processStatuses = new ArrayList<>();
+            processStatuses.add(processStatus);
+            addProcessStatus(processStatuses.get(0), process.getProcessId());
 
             if(process.getProcessError() != null) {
-                addProcessError(process.getProcessError(), process.getProcessId());
+                addProcessError(process.getProcessError().get(0), process.getProcessId());
             }
         } catch (Exception e) {
             logger.error(expId, "Error while adding process...", e);
@@ -391,27 +393,27 @@ public class ExperimentRegistry {
 
     public String addProcessStatus(ProcessStatus processStatus, String processID) throws RegistryException {
         try {
-            ProcessResource processResource = new ProcessResource();
-            processResource.setProcessId(processID);
-            ProcessStatusResource status = processResource.getProcessStatus();
-            ProcessState newState = processStatus.getState();
-            if (status == null) {
-                status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
-                status.setStatusId(getStatusID("PROCESS_STATE"));
-            }else {
-                String state = status.getState();
-                if (newState != null && !state.equals(newState.toString())){
+                ProcessResource processResource = new ProcessResource();
+                processResource.setProcessId(processID);
+                ProcessStatusResource status = processResource.getProcessStatus();
+                ProcessState newState = processStatus.getState();
+                if (status == null) {
+                    status = (ProcessStatusResource) processResource.create(ResourceType.PROCESS_STATUS);
                     status.setStatusId(getStatusID("PROCESS_STATE"));
+                }else {
+                    String state = status.getState();
+                    if (newState != null && !state.equals(newState.toString())){
+                        status.setStatusId(getStatusID("PROCESS_STATE"));
+                    }
                 }
-            }
-            status.setProcessId(processID);
-            status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
-            if (newState != null){
-                status.setState(newState.toString());
-            }
-            status.setReason(processStatus.getReason());
-            status.save();
-            logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
+                status.setProcessId(processID);
+                status.setTimeOfStateChange(AiravataUtils.getTime(processStatus.getTimeOfStateChange()));
+                if (newState != null){
+                    status.setState(newState.toString());
+                }
+                status.setReason(processStatus.getReason());
+                status.save();
+                logger.debug(processID, "Added process {} status to {}.", processID, processStatus.toString());
         } catch (Exception e) {
             logger.error(processID, "Error while adding process status...", e);
             throw new RegistryException(e);
@@ -752,8 +754,8 @@ public class ExperimentRegistry {
 
             processResource.save();
 
-            if(process.getResourceSchedule() != null) {
-                updateProcessResourceSchedule(process.getResourceSchedule(), process.getProcessId());
+            if(process.getProcessResourceSchedule() != null) {
+                updateProcessResourceSchedule(process.getProcessResourceSchedule(), process.getProcessId());
             }
             if(process.getProcessInputs() !=  null && process.getProcessInputs().size() > 0) {
                 updateProcessInputs(process.getProcessInputs(), process.getProcessId());
@@ -762,10 +764,10 @@ public class ExperimentRegistry {
                 updateProcessOutputs(process.getProcessOutputs(), process.getProcessId());
             }
             if(process.getProcessStatus() != null) {
-                updateProcessStatus(process.getProcessStatus(), process.getProcessId());
+                updateProcessStatus(process.getProcessStatus().get(0), process.getProcessId());
             }
             if(process.getProcessError() != null) {
-                updateProcessError(process.getProcessError(), process.getProcessId());
+                updateProcessError(process.getProcessError().get(0), process.getProcessId());
             }
             if(process.getTasks() != null && process.getTasks().size() > 0){
                 for(TaskModel task : process.getTasks()){
@@ -864,8 +866,8 @@ public class ExperimentRegistry {
         return addProcessStatus(processStatus, processID);
     }
 
-    public String updateProcessError(ErrorModel processError, String processID) throws RegistryException {
-        return addProcessError(processError, processID);
+    public String updateProcessError(ErrorModel processErrors, String processID) throws RegistryException {
+        return addProcessError(processErrors, processID);
     }
 
     public String updateTask(TaskModel task, String taskID) throws RegistryException {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
index 3e04fcd..533e719 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/utils/ThriftDataModelConversion.java
@@ -384,16 +384,20 @@ public class ThriftDataModelConversion {
 
             ErrorModel errorModel = getErrorModel(processResource.getProcessError());
             if (errorModel != null){
-                processModel.setProcessError(errorModel);
+                List<ErrorModel> errorModels = new ArrayList<>();
+                errorModels.add(errorModel);
+                processModel.setProcessError(errorModels);
             }
             ProcessStatus processStatus = getProcessStatus(processResource.getProcessStatus());
             if (processStatus != null){
-                processModel.setProcessStatus(processStatus);
+                List<ProcessStatus> statuses = new ArrayList<>();
+                statuses.add(processStatus);
+                processModel.setProcessStatus(statuses);
             }
 
             ComputationalResourceSchedulingModel schedule = getProcessResourceSchedule(processResource.getProcessResourceSchedule());
             if (schedule != null){
-                processModel.setResourceSchedule(schedule);
+                processModel.setProcessResourceSchedule(schedule);
             }
             processModel.setTasks(getTaskModelList(processResource.getTaskList()));
             processModel.setStorageResourceId(processResource.getStorageResourceId());

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
----------------------------------------------------------------------
diff --git a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
index b780203..0a72923 100644
--- a/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
+++ b/thrift-interface-descriptions/data-models/experiment-catalog-models/process_model.thrift
@@ -44,17 +44,17 @@ struct ProcessModel {
     2: required string experimentId,
     3: optional i64 creationTime,
     4: optional i64 lastUpdateTime,
-    5: optional status_models.ProcessStatus processStatus,
+    5: optional list<status_models.ProcessStatus> processStatus,
     6: optional string processDetail,
     7: optional string applicationInterfaceId,
     8: optional string applicationDeploymentId,
     9: optional string computeResourceId,
     10: optional list<application_io_models.InputDataObjectType> processInputs,
     11: optional list<application_io_models.OutputDataObjectType> processOutputs,
-    12: optional scheduling_model.ComputationalResourceSchedulingModel resourceSchedule,
+    12: optional scheduling_model.ComputationalResourceSchedulingModel processResourceSchedule,
     13: optional list<task_model.TaskModel> tasks,
     14: optional string taskDag,
-    15: optional airavata_commons.ErrorModel processError,
+    15: optional list<airavata_commons.ErrorModel> processError,
     16: optional string gatewayExecutionId,
     17: optional bool enableEmailNotification,
     18: optional list<string> emailAddresses,


[3/3] airavata git commit: adding process model classes

Posted by sc...@apache.org.
adding process model classes


Project: http://git-wip-us.apache.org/repos/asf/airavata/repo
Commit: http://git-wip-us.apache.org/repos/asf/airavata/commit/171c0425
Tree: http://git-wip-us.apache.org/repos/asf/airavata/tree/171c0425
Diff: http://git-wip-us.apache.org/repos/asf/airavata/diff/171c0425

Branch: refs/heads/supun/develop
Commit: 171c0425f81dd9b6d113c51cd2daa9ccf7ca8cf0
Parents: 3ce49b9
Author: scnakandala <su...@gmail.com>
Authored: Mon Aug 29 13:41:11 2016 -0400
Committer: scnakandala <su...@gmail.com>
Committed: Mon Aug 29 13:41:11 2016 -0400

----------------------------------------------------------------------
 .../lib/airavata/process_model_types.cpp        | 260 ++++++-----
 .../lib/airavata/process_model_types.h          |  20 +-
 .../lib/Airavata/Model/Process/Types.php        | 180 +++++---
 .../lib/apache/airavata/model/process/ttypes.py | 114 ++---
 .../airavata/model/process/ProcessModel.java    | 426 ++++++++++++-------
 .../apache/airavata/model/user/UserProfile.java |  24 +-
 .../model/util/ExperimentModelUtil.java         |   2 +-
 .../apache/airavata/gfac/core/GFacUtils.java    |   2 +-
 .../gfac/core/context/ProcessContext.java       |  21 +-
 .../org/apache/airavata/gfac/impl/Factory.java  |   4 +-
 .../gfac/impl/task/DataStreamingTask.java       |   2 +-
 .../task/utils/bes/ApplicationProcessor.java    |   2 +-
 .../impl/task/utils/bes/ResourceProcessor.java  |   2 +-
 .../core/utils/OrchestratorUtils.java           |   4 +-
 .../validator/impl/BatchQueueValidator.java     |   2 +-
 .../cpi/impl/SimpleOrchestratorImpl.java        |   2 +-
 .../server/OrchestratorServerHandler.java       |   6 +-
 .../org/apache/airavata/registry/core/Main.java |  75 ----
 .../entities/expcatalog/ExperimentEntity.java   |  11 +
 .../core/entities/expcatalog/ProcessEntity.java | 266 ++++++++++++
 .../entities/expcatalog/ProcessErrorEntity.java | 118 +++++
 .../entities/expcatalog/ProcessErrorPK.java     |  75 ++++
 .../entities/expcatalog/ProcessInputEntity.java | 174 ++++++++
 .../entities/expcatalog/ProcessInputPK.java     |  74 ++++
 .../expcatalog/ProcessOutputEntity.java         | 165 +++++++
 .../entities/expcatalog/ProcessOutputPK.java    |  70 +++
 .../ProcessResourceSchedulingEntity.java        | 170 ++++++++
 .../expcatalog/ProcessStatusEntity.java         |  83 ++++
 .../entities/expcatalog/ProcessStatusPK.java    |  74 ++++
 .../expcatalog/ExperimentRepository.java        |  22 +-
 .../src/main/resources/META-INF/persistence.xml |   6 +
 .../src/main/resources/experiment_catalog.sql   | 108 +++++
 .../catalog/impl/ExperimentRegistry.java        |  60 +--
 .../utils/ThriftDataModelConversion.java        |  10 +-
 .../process_model.thrift                        |   6 +-
 35 files changed, 2106 insertions(+), 534 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
index cdd437a..8135174 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.cpp
@@ -53,7 +53,7 @@ void ProcessModel::__set_lastUpdateTime(const int64_t val) {
 __isset.lastUpdateTime = true;
 }
 
-void ProcessModel::__set_processStatus(const  ::apache::airavata::model::status::ProcessStatus& val) {
+void ProcessModel::__set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val) {
   this->processStatus = val;
 __isset.processStatus = true;
 }
@@ -88,9 +88,9 @@ void ProcessModel::__set_processOutputs(const std::vector< ::apache::airavata::m
 __isset.processOutputs = true;
 }
 
-void ProcessModel::__set_resourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val) {
-  this->resourceSchedule = val;
-__isset.resourceSchedule = true;
+void ProcessModel::__set_processResourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val) {
+  this->processResourceSchedule = val;
+__isset.processResourceSchedule = true;
 }
 
 void ProcessModel::__set_tasks(const std::vector< ::apache::airavata::model::task::TaskModel> & val) {
@@ -103,7 +103,7 @@ void ProcessModel::__set_taskDag(const std::string& val) {
 __isset.taskDag = true;
 }
 
-void ProcessModel::__set_processError(const  ::apache::airavata::model::commons::ErrorModel& val) {
+void ProcessModel::__set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val) {
   this->processError = val;
 __isset.processError = true;
 }
@@ -204,8 +204,20 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 5:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->processStatus.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processStatus.clear();
+            uint32_t _size0;
+            ::apache::thrift::protocol::TType _etype3;
+            xfer += iprot->readListBegin(_etype3, _size0);
+            this->processStatus.resize(_size0);
+            uint32_t _i4;
+            for (_i4 = 0; _i4 < _size0; ++_i4)
+            {
+              xfer += this->processStatus[_i4].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.processStatus = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -247,14 +259,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->processInputs.clear();
-            uint32_t _size0;
-            ::apache::thrift::protocol::TType _etype3;
-            xfer += iprot->readListBegin(_etype3, _size0);
-            this->processInputs.resize(_size0);
-            uint32_t _i4;
-            for (_i4 = 0; _i4 < _size0; ++_i4)
+            uint32_t _size5;
+            ::apache::thrift::protocol::TType _etype8;
+            xfer += iprot->readListBegin(_etype8, _size5);
+            this->processInputs.resize(_size5);
+            uint32_t _i9;
+            for (_i9 = 0; _i9 < _size5; ++_i9)
             {
-              xfer += this->processInputs[_i4].read(iprot);
+              xfer += this->processInputs[_i9].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -267,14 +279,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->processOutputs.clear();
-            uint32_t _size5;
-            ::apache::thrift::protocol::TType _etype8;
-            xfer += iprot->readListBegin(_etype8, _size5);
-            this->processOutputs.resize(_size5);
-            uint32_t _i9;
-            for (_i9 = 0; _i9 < _size5; ++_i9)
+            uint32_t _size10;
+            ::apache::thrift::protocol::TType _etype13;
+            xfer += iprot->readListBegin(_etype13, _size10);
+            this->processOutputs.resize(_size10);
+            uint32_t _i14;
+            for (_i14 = 0; _i14 < _size10; ++_i14)
             {
-              xfer += this->processOutputs[_i9].read(iprot);
+              xfer += this->processOutputs[_i14].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -285,8 +297,8 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         break;
       case 12:
         if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->resourceSchedule.read(iprot);
-          this->__isset.resourceSchedule = true;
+          xfer += this->processResourceSchedule.read(iprot);
+          this->__isset.processResourceSchedule = true;
         } else {
           xfer += iprot->skip(ftype);
         }
@@ -295,14 +307,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->tasks.clear();
-            uint32_t _size10;
-            ::apache::thrift::protocol::TType _etype13;
-            xfer += iprot->readListBegin(_etype13, _size10);
-            this->tasks.resize(_size10);
-            uint32_t _i14;
-            for (_i14 = 0; _i14 < _size10; ++_i14)
+            uint32_t _size15;
+            ::apache::thrift::protocol::TType _etype18;
+            xfer += iprot->readListBegin(_etype18, _size15);
+            this->tasks.resize(_size15);
+            uint32_t _i19;
+            for (_i19 = 0; _i19 < _size15; ++_i19)
             {
-              xfer += this->tasks[_i14].read(iprot);
+              xfer += this->tasks[_i19].read(iprot);
             }
             xfer += iprot->readListEnd();
           }
@@ -320,8 +332,20 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         }
         break;
       case 15:
-        if (ftype == ::apache::thrift::protocol::T_STRUCT) {
-          xfer += this->processError.read(iprot);
+        if (ftype == ::apache::thrift::protocol::T_LIST) {
+          {
+            this->processError.clear();
+            uint32_t _size20;
+            ::apache::thrift::protocol::TType _etype23;
+            xfer += iprot->readListBegin(_etype23, _size20);
+            this->processError.resize(_size20);
+            uint32_t _i24;
+            for (_i24 = 0; _i24 < _size20; ++_i24)
+            {
+              xfer += this->processError[_i24].read(iprot);
+            }
+            xfer += iprot->readListEnd();
+          }
           this->__isset.processError = true;
         } else {
           xfer += iprot->skip(ftype);
@@ -347,14 +371,14 @@ uint32_t ProcessModel::read(::apache::thrift::protocol::TProtocol* iprot) {
         if (ftype == ::apache::thrift::protocol::T_LIST) {
           {
             this->emailAddresses.clear();
-            uint32_t _size15;
-            ::apache::thrift::protocol::TType _etype18;
-            xfer += iprot->readListBegin(_etype18, _size15);
-            this->emailAddresses.resize(_size15);
-            uint32_t _i19;
-            for (_i19 = 0; _i19 < _size15; ++_i19)
+            uint32_t _size25;
+            ::apache::thrift::protocol::TType _etype28;
+            xfer += iprot->readListBegin(_etype28, _size25);
+            this->emailAddresses.resize(_size25);
+            uint32_t _i29;
+            for (_i29 = 0; _i29 < _size25; ++_i29)
             {
-              xfer += iprot->readString(this->emailAddresses[_i19]);
+              xfer += iprot->readString(this->emailAddresses[_i29]);
             }
             xfer += iprot->readListEnd();
           }
@@ -443,8 +467,16 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processStatus) {
-    xfer += oprot->writeFieldBegin("processStatus", ::apache::thrift::protocol::T_STRUCT, 5);
-    xfer += this->processStatus.write(oprot);
+    xfer += oprot->writeFieldBegin("processStatus", ::apache::thrift::protocol::T_LIST, 5);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processStatus.size()));
+      std::vector< ::apache::airavata::model::status::ProcessStatus> ::const_iterator _iter30;
+      for (_iter30 = this->processStatus.begin(); _iter30 != this->processStatus.end(); ++_iter30)
+      {
+        xfer += (*_iter30).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processDetail) {
@@ -471,10 +503,10 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("processInputs", ::apache::thrift::protocol::T_LIST, 10);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processInputs.size()));
-      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter20;
-      for (_iter20 = this->processInputs.begin(); _iter20 != this->processInputs.end(); ++_iter20)
+      std::vector< ::apache::airavata::model::application::io::InputDataObjectType> ::const_iterator _iter31;
+      for (_iter31 = this->processInputs.begin(); _iter31 != this->processInputs.end(); ++_iter31)
       {
-        xfer += (*_iter20).write(oprot);
+        xfer += (*_iter31).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -484,28 +516,28 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("processOutputs", ::apache::thrift::protocol::T_LIST, 11);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processOutputs.size()));
-      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter21;
-      for (_iter21 = this->processOutputs.begin(); _iter21 != this->processOutputs.end(); ++_iter21)
+      std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> ::const_iterator _iter32;
+      for (_iter32 = this->processOutputs.begin(); _iter32 != this->processOutputs.end(); ++_iter32)
       {
-        xfer += (*_iter21).write(oprot);
+        xfer += (*_iter32).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
     xfer += oprot->writeFieldEnd();
   }
-  if (this->__isset.resourceSchedule) {
-    xfer += oprot->writeFieldBegin("resourceSchedule", ::apache::thrift::protocol::T_STRUCT, 12);
-    xfer += this->resourceSchedule.write(oprot);
+  if (this->__isset.processResourceSchedule) {
+    xfer += oprot->writeFieldBegin("processResourceSchedule", ::apache::thrift::protocol::T_STRUCT, 12);
+    xfer += this->processResourceSchedule.write(oprot);
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.tasks) {
     xfer += oprot->writeFieldBegin("tasks", ::apache::thrift::protocol::T_LIST, 13);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->tasks.size()));
-      std::vector< ::apache::airavata::model::task::TaskModel> ::const_iterator _iter22;
-      for (_iter22 = this->tasks.begin(); _iter22 != this->tasks.end(); ++_iter22)
+      std::vector< ::apache::airavata::model::task::TaskModel> ::const_iterator _iter33;
+      for (_iter33 = this->tasks.begin(); _iter33 != this->tasks.end(); ++_iter33)
       {
-        xfer += (*_iter22).write(oprot);
+        xfer += (*_iter33).write(oprot);
       }
       xfer += oprot->writeListEnd();
     }
@@ -517,8 +549,16 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.processError) {
-    xfer += oprot->writeFieldBegin("processError", ::apache::thrift::protocol::T_STRUCT, 15);
-    xfer += this->processError.write(oprot);
+    xfer += oprot->writeFieldBegin("processError", ::apache::thrift::protocol::T_LIST, 15);
+    {
+      xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRUCT, static_cast<uint32_t>(this->processError.size()));
+      std::vector< ::apache::airavata::model::commons::ErrorModel> ::const_iterator _iter34;
+      for (_iter34 = this->processError.begin(); _iter34 != this->processError.end(); ++_iter34)
+      {
+        xfer += (*_iter34).write(oprot);
+      }
+      xfer += oprot->writeListEnd();
+    }
     xfer += oprot->writeFieldEnd();
   }
   if (this->__isset.gatewayExecutionId) {
@@ -535,10 +575,10 @@ uint32_t ProcessModel::write(::apache::thrift::protocol::TProtocol* oprot) const
     xfer += oprot->writeFieldBegin("emailAddresses", ::apache::thrift::protocol::T_LIST, 18);
     {
       xfer += oprot->writeListBegin(::apache::thrift::protocol::T_STRING, static_cast<uint32_t>(this->emailAddresses.size()));
-      std::vector<std::string> ::const_iterator _iter23;
-      for (_iter23 = this->emailAddresses.begin(); _iter23 != this->emailAddresses.end(); ++_iter23)
+      std::vector<std::string> ::const_iterator _iter35;
+      for (_iter35 = this->emailAddresses.begin(); _iter35 != this->emailAddresses.end(); ++_iter35)
       {
-        xfer += oprot->writeString((*_iter23));
+        xfer += oprot->writeString((*_iter35));
       }
       xfer += oprot->writeListEnd();
     }
@@ -587,7 +627,7 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.computeResourceId, b.computeResourceId);
   swap(a.processInputs, b.processInputs);
   swap(a.processOutputs, b.processOutputs);
-  swap(a.resourceSchedule, b.resourceSchedule);
+  swap(a.processResourceSchedule, b.processResourceSchedule);
   swap(a.tasks, b.tasks);
   swap(a.taskDag, b.taskDag);
   swap(a.processError, b.processError);
@@ -602,57 +642,57 @@ void swap(ProcessModel &a, ProcessModel &b) {
   swap(a.__isset, b.__isset);
 }
 
-ProcessModel::ProcessModel(const ProcessModel& other24) {
-  processId = other24.processId;
-  experimentId = other24.experimentId;
-  creationTime = other24.creationTime;
-  lastUpdateTime = other24.lastUpdateTime;
-  processStatus = other24.processStatus;
-  processDetail = other24.processDetail;
-  applicationInterfaceId = other24.applicationInterfaceId;
-  applicationDeploymentId = other24.applicationDeploymentId;
-  computeResourceId = other24.computeResourceId;
-  processInputs = other24.processInputs;
-  processOutputs = other24.processOutputs;
-  resourceSchedule = other24.resourceSchedule;
-  tasks = other24.tasks;
-  taskDag = other24.taskDag;
-  processError = other24.processError;
-  gatewayExecutionId = other24.gatewayExecutionId;
-  enableEmailNotification = other24.enableEmailNotification;
-  emailAddresses = other24.emailAddresses;
-  storageResourceId = other24.storageResourceId;
-  userDn = other24.userDn;
-  generateCert = other24.generateCert;
-  experimentDataDir = other24.experimentDataDir;
-  userName = other24.userName;
-  __isset = other24.__isset;
+ProcessModel::ProcessModel(const ProcessModel& other36) {
+  processId = other36.processId;
+  experimentId = other36.experimentId;
+  creationTime = other36.creationTime;
+  lastUpdateTime = other36.lastUpdateTime;
+  processStatus = other36.processStatus;
+  processDetail = other36.processDetail;
+  applicationInterfaceId = other36.applicationInterfaceId;
+  applicationDeploymentId = other36.applicationDeploymentId;
+  computeResourceId = other36.computeResourceId;
+  processInputs = other36.processInputs;
+  processOutputs = other36.processOutputs;
+  processResourceSchedule = other36.processResourceSchedule;
+  tasks = other36.tasks;
+  taskDag = other36.taskDag;
+  processError = other36.processError;
+  gatewayExecutionId = other36.gatewayExecutionId;
+  enableEmailNotification = other36.enableEmailNotification;
+  emailAddresses = other36.emailAddresses;
+  storageResourceId = other36.storageResourceId;
+  userDn = other36.userDn;
+  generateCert = other36.generateCert;
+  experimentDataDir = other36.experimentDataDir;
+  userName = other36.userName;
+  __isset = other36.__isset;
 }
-ProcessModel& ProcessModel::operator=(const ProcessModel& other25) {
-  processId = other25.processId;
-  experimentId = other25.experimentId;
-  creationTime = other25.creationTime;
-  lastUpdateTime = other25.lastUpdateTime;
-  processStatus = other25.processStatus;
-  processDetail = other25.processDetail;
-  applicationInterfaceId = other25.applicationInterfaceId;
-  applicationDeploymentId = other25.applicationDeploymentId;
-  computeResourceId = other25.computeResourceId;
-  processInputs = other25.processInputs;
-  processOutputs = other25.processOutputs;
-  resourceSchedule = other25.resourceSchedule;
-  tasks = other25.tasks;
-  taskDag = other25.taskDag;
-  processError = other25.processError;
-  gatewayExecutionId = other25.gatewayExecutionId;
-  enableEmailNotification = other25.enableEmailNotification;
-  emailAddresses = other25.emailAddresses;
-  storageResourceId = other25.storageResourceId;
-  userDn = other25.userDn;
-  generateCert = other25.generateCert;
-  experimentDataDir = other25.experimentDataDir;
-  userName = other25.userName;
-  __isset = other25.__isset;
+ProcessModel& ProcessModel::operator=(const ProcessModel& other37) {
+  processId = other37.processId;
+  experimentId = other37.experimentId;
+  creationTime = other37.creationTime;
+  lastUpdateTime = other37.lastUpdateTime;
+  processStatus = other37.processStatus;
+  processDetail = other37.processDetail;
+  applicationInterfaceId = other37.applicationInterfaceId;
+  applicationDeploymentId = other37.applicationDeploymentId;
+  computeResourceId = other37.computeResourceId;
+  processInputs = other37.processInputs;
+  processOutputs = other37.processOutputs;
+  processResourceSchedule = other37.processResourceSchedule;
+  tasks = other37.tasks;
+  taskDag = other37.taskDag;
+  processError = other37.processError;
+  gatewayExecutionId = other37.gatewayExecutionId;
+  enableEmailNotification = other37.enableEmailNotification;
+  emailAddresses = other37.emailAddresses;
+  storageResourceId = other37.storageResourceId;
+  userDn = other37.userDn;
+  generateCert = other37.generateCert;
+  experimentDataDir = other37.experimentDataDir;
+  userName = other37.userName;
+  __isset = other37.__isset;
   return *this;
 }
 void ProcessModel::printTo(std::ostream& out) const {
@@ -669,7 +709,7 @@ void ProcessModel::printTo(std::ostream& out) const {
   out << ", " << "computeResourceId="; (__isset.computeResourceId ? (out << to_string(computeResourceId)) : (out << "<null>"));
   out << ", " << "processInputs="; (__isset.processInputs ? (out << to_string(processInputs)) : (out << "<null>"));
   out << ", " << "processOutputs="; (__isset.processOutputs ? (out << to_string(processOutputs)) : (out << "<null>"));
-  out << ", " << "resourceSchedule="; (__isset.resourceSchedule ? (out << to_string(resourceSchedule)) : (out << "<null>"));
+  out << ", " << "processResourceSchedule="; (__isset.processResourceSchedule ? (out << to_string(processResourceSchedule)) : (out << "<null>"));
   out << ", " << "tasks="; (__isset.tasks ? (out << to_string(tasks)) : (out << "<null>"));
   out << ", " << "taskDag="; (__isset.taskDag ? (out << to_string(taskDag)) : (out << "<null>"));
   out << ", " << "processError="; (__isset.processError ? (out << to_string(processError)) : (out << "<null>"));

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
index bf5b5d0..5d73b26 100644
--- a/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
+++ b/airavata-api/airavata-client-sdks/airavata-cpp-sdk/src/main/resources/lib/airavata/process_model_types.h
@@ -44,7 +44,7 @@ namespace apache { namespace airavata { namespace model { namespace process {
 class ProcessModel;
 
 typedef struct _ProcessModel__isset {
-  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), resourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
+  _ProcessModel__isset() : creationTime(false), lastUpdateTime(false), processStatus(false), processDetail(false), applicationInterfaceId(false), applicationDeploymentId(false), computeResourceId(false), processInputs(false), processOutputs(false), processResourceSchedule(false), tasks(false), taskDag(false), processError(false), gatewayExecutionId(false), enableEmailNotification(false), emailAddresses(false), storageResourceId(false), userDn(false), generateCert(true), experimentDataDir(false), userName(false) {}
   bool creationTime :1;
   bool lastUpdateTime :1;
   bool processStatus :1;
@@ -54,7 +54,7 @@ typedef struct _ProcessModel__isset {
   bool computeResourceId :1;
   bool processInputs :1;
   bool processOutputs :1;
-  bool resourceSchedule :1;
+  bool processResourceSchedule :1;
   bool tasks :1;
   bool taskDag :1;
   bool processError :1;
@@ -81,17 +81,17 @@ class ProcessModel {
   std::string experimentId;
   int64_t creationTime;
   int64_t lastUpdateTime;
-   ::apache::airavata::model::status::ProcessStatus processStatus;
+  std::vector< ::apache::airavata::model::status::ProcessStatus>  processStatus;
   std::string processDetail;
   std::string applicationInterfaceId;
   std::string applicationDeploymentId;
   std::string computeResourceId;
   std::vector< ::apache::airavata::model::application::io::InputDataObjectType>  processInputs;
   std::vector< ::apache::airavata::model::application::io::OutputDataObjectType>  processOutputs;
-   ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel resourceSchedule;
+   ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel processResourceSchedule;
   std::vector< ::apache::airavata::model::task::TaskModel>  tasks;
   std::string taskDag;
-   ::apache::airavata::model::commons::ErrorModel processError;
+  std::vector< ::apache::airavata::model::commons::ErrorModel>  processError;
   std::string gatewayExecutionId;
   bool enableEmailNotification;
   std::vector<std::string>  emailAddresses;
@@ -111,7 +111,7 @@ class ProcessModel {
 
   void __set_lastUpdateTime(const int64_t val);
 
-  void __set_processStatus(const  ::apache::airavata::model::status::ProcessStatus& val);
+  void __set_processStatus(const std::vector< ::apache::airavata::model::status::ProcessStatus> & val);
 
   void __set_processDetail(const std::string& val);
 
@@ -125,13 +125,13 @@ class ProcessModel {
 
   void __set_processOutputs(const std::vector< ::apache::airavata::model::application::io::OutputDataObjectType> & val);
 
-  void __set_resourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val);
+  void __set_processResourceSchedule(const  ::apache::airavata::model::scheduling::ComputationalResourceSchedulingModel& val);
 
   void __set_tasks(const std::vector< ::apache::airavata::model::task::TaskModel> & val);
 
   void __set_taskDag(const std::string& val);
 
-  void __set_processError(const  ::apache::airavata::model::commons::ErrorModel& val);
+  void __set_processError(const std::vector< ::apache::airavata::model::commons::ErrorModel> & val);
 
   void __set_gatewayExecutionId(const std::string& val);
 
@@ -191,9 +191,9 @@ class ProcessModel {
       return false;
     else if (__isset.processOutputs && !(processOutputs == rhs.processOutputs))
       return false;
-    if (__isset.resourceSchedule != rhs.__isset.resourceSchedule)
+    if (__isset.processResourceSchedule != rhs.__isset.processResourceSchedule)
       return false;
-    else if (__isset.resourceSchedule && !(resourceSchedule == rhs.resourceSchedule))
+    else if (__isset.processResourceSchedule && !(processResourceSchedule == rhs.processResourceSchedule))
       return false;
     if (__isset.tasks != rhs.__isset.tasks)
       return false;

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
index 179be2b..e1b7b81 100644
--- a/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
+++ b/airavata-api/airavata-client-sdks/airavata-php-sdk/src/main/resources/lib/Airavata/Model/Process/Types.php
@@ -46,7 +46,7 @@ class ProcessModel {
    */
   public $lastUpdateTime = null;
   /**
-   * @var \Airavata\Model\Status\ProcessStatus
+   * @var \Airavata\Model\Status\ProcessStatus[]
    */
   public $processStatus = null;
   /**
@@ -76,7 +76,7 @@ class ProcessModel {
   /**
    * @var \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel
    */
-  public $resourceSchedule = null;
+  public $processResourceSchedule = null;
   /**
    * @var \Airavata\Model\Task\TaskModel[]
    */
@@ -86,7 +86,7 @@ class ProcessModel {
    */
   public $taskDag = null;
   /**
-   * @var \Airavata\Model\Commons\ErrorModel
+   * @var \Airavata\Model\Commons\ErrorModel[]
    */
   public $processError = null;
   /**
@@ -143,8 +143,12 @@ class ProcessModel {
           ),
         5 => array(
           'var' => 'processStatus',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Status\ProcessStatus',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Status\ProcessStatus',
+            ),
           ),
         6 => array(
           'var' => 'processDetail',
@@ -181,7 +185,7 @@ class ProcessModel {
             ),
           ),
         12 => array(
-          'var' => 'resourceSchedule',
+          'var' => 'processResourceSchedule',
           'type' => TType::STRUCT,
           'class' => '\Airavata\Model\Scheduling\ComputationalResourceSchedulingModel',
           ),
@@ -200,8 +204,12 @@ class ProcessModel {
           ),
         15 => array(
           'var' => 'processError',
-          'type' => TType::STRUCT,
-          'class' => '\Airavata\Model\Commons\ErrorModel',
+          'type' => TType::LST,
+          'etype' => TType::STRUCT,
+          'elem' => array(
+            'type' => TType::STRUCT,
+            'class' => '\Airavata\Model\Commons\ErrorModel',
+            ),
           ),
         16 => array(
           'var' => 'gatewayExecutionId',
@@ -275,8 +283,8 @@ class ProcessModel {
       if (isset($vals['processOutputs'])) {
         $this->processOutputs = $vals['processOutputs'];
       }
-      if (isset($vals['resourceSchedule'])) {
-        $this->resourceSchedule = $vals['resourceSchedule'];
+      if (isset($vals['processResourceSchedule'])) {
+        $this->processResourceSchedule = $vals['processResourceSchedule'];
       }
       if (isset($vals['tasks'])) {
         $this->tasks = $vals['tasks'];
@@ -362,9 +370,19 @@ class ProcessModel {
           }
           break;
         case 5:
-          if ($ftype == TType::STRUCT) {
-            $this->processStatus = new \Airavata\Model\Status\ProcessStatus();
-            $xfer += $this->processStatus->read($input);
+          if ($ftype == TType::LST) {
+            $this->processStatus = array();
+            $_size0 = 0;
+            $_etype3 = 0;
+            $xfer += $input->readListBegin($_etype3, $_size0);
+            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            {
+              $elem5 = null;
+              $elem5 = new \Airavata\Model\Status\ProcessStatus();
+              $xfer += $elem5->read($input);
+              $this->processStatus []= $elem5;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -400,15 +418,15 @@ class ProcessModel {
         case 10:
           if ($ftype == TType::LST) {
             $this->processInputs = array();
-            $_size0 = 0;
-            $_etype3 = 0;
-            $xfer += $input->readListBegin($_etype3, $_size0);
-            for ($_i4 = 0; $_i4 < $_size0; ++$_i4)
+            $_size6 = 0;
+            $_etype9 = 0;
+            $xfer += $input->readListBegin($_etype9, $_size6);
+            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
             {
-              $elem5 = null;
-              $elem5 = new \Airavata\Model\Application\Io\InputDataObjectType();
-              $xfer += $elem5->read($input);
-              $this->processInputs []= $elem5;
+              $elem11 = null;
+              $elem11 = new \Airavata\Model\Application\Io\InputDataObjectType();
+              $xfer += $elem11->read($input);
+              $this->processInputs []= $elem11;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -418,15 +436,15 @@ class ProcessModel {
         case 11:
           if ($ftype == TType::LST) {
             $this->processOutputs = array();
-            $_size6 = 0;
-            $_etype9 = 0;
-            $xfer += $input->readListBegin($_etype9, $_size6);
-            for ($_i10 = 0; $_i10 < $_size6; ++$_i10)
+            $_size12 = 0;
+            $_etype15 = 0;
+            $xfer += $input->readListBegin($_etype15, $_size12);
+            for ($_i16 = 0; $_i16 < $_size12; ++$_i16)
             {
-              $elem11 = null;
-              $elem11 = new \Airavata\Model\Application\Io\OutputDataObjectType();
-              $xfer += $elem11->read($input);
-              $this->processOutputs []= $elem11;
+              $elem17 = null;
+              $elem17 = new \Airavata\Model\Application\Io\OutputDataObjectType();
+              $xfer += $elem17->read($input);
+              $this->processOutputs []= $elem17;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -435,8 +453,8 @@ class ProcessModel {
           break;
         case 12:
           if ($ftype == TType::STRUCT) {
-            $this->resourceSchedule = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
-            $xfer += $this->resourceSchedule->read($input);
+            $this->processResourceSchedule = new \Airavata\Model\Scheduling\ComputationalResourceSchedulingModel();
+            $xfer += $this->processResourceSchedule->read($input);
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -444,15 +462,15 @@ class ProcessModel {
         case 13:
           if ($ftype == TType::LST) {
             $this->tasks = array();
-            $_size12 = 0;
-            $_etype15 = 0;
-            $xfer += $input->readListBegin($_etype15, $_size12);
-            for ($_i16 = 0; $_i16 < $_size12; ++$_i16)
+            $_size18 = 0;
+            $_etype21 = 0;
+            $xfer += $input->readListBegin($_etype21, $_size18);
+            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
             {
-              $elem17 = null;
-              $elem17 = new \Airavata\Model\Task\TaskModel();
-              $xfer += $elem17->read($input);
-              $this->tasks []= $elem17;
+              $elem23 = null;
+              $elem23 = new \Airavata\Model\Task\TaskModel();
+              $xfer += $elem23->read($input);
+              $this->tasks []= $elem23;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -467,9 +485,19 @@ class ProcessModel {
           }
           break;
         case 15:
-          if ($ftype == TType::STRUCT) {
-            $this->processError = new \Airavata\Model\Commons\ErrorModel();
-            $xfer += $this->processError->read($input);
+          if ($ftype == TType::LST) {
+            $this->processError = array();
+            $_size24 = 0;
+            $_etype27 = 0;
+            $xfer += $input->readListBegin($_etype27, $_size24);
+            for ($_i28 = 0; $_i28 < $_size24; ++$_i28)
+            {
+              $elem29 = null;
+              $elem29 = new \Airavata\Model\Commons\ErrorModel();
+              $xfer += $elem29->read($input);
+              $this->processError []= $elem29;
+            }
+            $xfer += $input->readListEnd();
           } else {
             $xfer += $input->skip($ftype);
           }
@@ -491,14 +519,14 @@ class ProcessModel {
         case 18:
           if ($ftype == TType::LST) {
             $this->emailAddresses = array();
-            $_size18 = 0;
-            $_etype21 = 0;
-            $xfer += $input->readListBegin($_etype21, $_size18);
-            for ($_i22 = 0; $_i22 < $_size18; ++$_i22)
+            $_size30 = 0;
+            $_etype33 = 0;
+            $xfer += $input->readListBegin($_etype33, $_size30);
+            for ($_i34 = 0; $_i34 < $_size30; ++$_i34)
             {
-              $elem23 = null;
-              $xfer += $input->readString($elem23);
-              $this->emailAddresses []= $elem23;
+              $elem35 = null;
+              $xfer += $input->readString($elem35);
+              $this->emailAddresses []= $elem35;
             }
             $xfer += $input->readListEnd();
           } else {
@@ -574,11 +602,20 @@ class ProcessModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processStatus !== null) {
-      if (!is_object($this->processStatus)) {
+      if (!is_array($this->processStatus)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processStatus', TType::STRUCT, 5);
-      $xfer += $this->processStatus->write($output);
+      $xfer += $output->writeFieldBegin('processStatus', TType::LST, 5);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->processStatus));
+        {
+          foreach ($this->processStatus as $iter36)
+          {
+            $xfer += $iter36->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processDetail !== null) {
@@ -609,9 +646,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processInputs));
         {
-          foreach ($this->processInputs as $iter24)
+          foreach ($this->processInputs as $iter37)
           {
-            $xfer += $iter24->write($output);
+            $xfer += $iter37->write($output);
           }
         }
         $output->writeListEnd();
@@ -626,21 +663,21 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->processOutputs));
         {
-          foreach ($this->processOutputs as $iter25)
+          foreach ($this->processOutputs as $iter38)
           {
-            $xfer += $iter25->write($output);
+            $xfer += $iter38->write($output);
           }
         }
         $output->writeListEnd();
       }
       $xfer += $output->writeFieldEnd();
     }
-    if ($this->resourceSchedule !== null) {
-      if (!is_object($this->resourceSchedule)) {
+    if ($this->processResourceSchedule !== null) {
+      if (!is_object($this->processResourceSchedule)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('resourceSchedule', TType::STRUCT, 12);
-      $xfer += $this->resourceSchedule->write($output);
+      $xfer += $output->writeFieldBegin('processResourceSchedule', TType::STRUCT, 12);
+      $xfer += $this->processResourceSchedule->write($output);
       $xfer += $output->writeFieldEnd();
     }
     if ($this->tasks !== null) {
@@ -651,9 +688,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRUCT, count($this->tasks));
         {
-          foreach ($this->tasks as $iter26)
+          foreach ($this->tasks as $iter39)
           {
-            $xfer += $iter26->write($output);
+            $xfer += $iter39->write($output);
           }
         }
         $output->writeListEnd();
@@ -666,11 +703,20 @@ class ProcessModel {
       $xfer += $output->writeFieldEnd();
     }
     if ($this->processError !== null) {
-      if (!is_object($this->processError)) {
+      if (!is_array($this->processError)) {
         throw new TProtocolException('Bad type in structure.', TProtocolException::INVALID_DATA);
       }
-      $xfer += $output->writeFieldBegin('processError', TType::STRUCT, 15);
-      $xfer += $this->processError->write($output);
+      $xfer += $output->writeFieldBegin('processError', TType::LST, 15);
+      {
+        $output->writeListBegin(TType::STRUCT, count($this->processError));
+        {
+          foreach ($this->processError as $iter40)
+          {
+            $xfer += $iter40->write($output);
+          }
+        }
+        $output->writeListEnd();
+      }
       $xfer += $output->writeFieldEnd();
     }
     if ($this->gatewayExecutionId !== null) {
@@ -691,9 +737,9 @@ class ProcessModel {
       {
         $output->writeListBegin(TType::STRING, count($this->emailAddresses));
         {
-          foreach ($this->emailAddresses as $iter27)
+          foreach ($this->emailAddresses as $iter41)
           {
-            $xfer += $output->writeString($iter27);
+            $xfer += $output->writeString($iter41);
           }
         }
         $output->writeListEnd();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
index 7da3b53..868b383 100644
--- a/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
+++ b/airavata-api/airavata-client-sdks/airavata-python-sdk/src/main/resources/lib/apache/airavata/model/process/ttypes.py
@@ -45,7 +45,7 @@ class ProcessModel:
    - computeResourceId
    - processInputs
    - processOutputs
-   - resourceSchedule
+   - processResourceSchedule
    - tasks
    - taskDag
    - processError
@@ -65,17 +65,17 @@ class ProcessModel:
     (2, TType.STRING, 'experimentId', None, None, ), # 2
     (3, TType.I64, 'creationTime', None, None, ), # 3
     (4, TType.I64, 'lastUpdateTime', None, None, ), # 4
-    (5, TType.STRUCT, 'processStatus', (apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec), None, ), # 5
+    (5, TType.LIST, 'processStatus', (TType.STRUCT,(apache.airavata.model.status.ttypes.ProcessStatus, apache.airavata.model.status.ttypes.ProcessStatus.thrift_spec)), None, ), # 5
     (6, TType.STRING, 'processDetail', None, None, ), # 6
     (7, TType.STRING, 'applicationInterfaceId', None, None, ), # 7
     (8, TType.STRING, 'applicationDeploymentId', None, None, ), # 8
     (9, TType.STRING, 'computeResourceId', None, None, ), # 9
     (10, TType.LIST, 'processInputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.InputDataObjectType, apache.airavata.model.application.io.ttypes.InputDataObjectType.thrift_spec)), None, ), # 10
     (11, TType.LIST, 'processOutputs', (TType.STRUCT,(apache.airavata.model.application.io.ttypes.OutputDataObjectType, apache.airavata.model.application.io.ttypes.OutputDataObjectType.thrift_spec)), None, ), # 11
-    (12, TType.STRUCT, 'resourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
+    (12, TType.STRUCT, 'processResourceSchedule', (apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel, apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel.thrift_spec), None, ), # 12
     (13, TType.LIST, 'tasks', (TType.STRUCT,(apache.airavata.model.task.ttypes.TaskModel, apache.airavata.model.task.ttypes.TaskModel.thrift_spec)), None, ), # 13
     (14, TType.STRING, 'taskDag', None, None, ), # 14
-    (15, TType.STRUCT, 'processError', (apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec), None, ), # 15
+    (15, TType.LIST, 'processError', (TType.STRUCT,(apache.airavata.model.commons.ttypes.ErrorModel, apache.airavata.model.commons.ttypes.ErrorModel.thrift_spec)), None, ), # 15
     (16, TType.STRING, 'gatewayExecutionId', None, None, ), # 16
     (17, TType.BOOL, 'enableEmailNotification', None, None, ), # 17
     (18, TType.LIST, 'emailAddresses', (TType.STRING,None), None, ), # 18
@@ -86,7 +86,7 @@ class ProcessModel:
     (23, TType.STRING, 'userName', None, None, ), # 23
   )
 
-  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, resourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
+  def __init__(self, processId=thrift_spec[1][4], experimentId=None, creationTime=None, lastUpdateTime=None, processStatus=None, processDetail=None, applicationInterfaceId=None, applicationDeploymentId=None, computeResourceId=None, processInputs=None, processOutputs=None, processResourceSchedule=None, tasks=None, taskDag=None, processError=None, gatewayExecutionId=None, enableEmailNotification=None, emailAddresses=None, storageResourceId=None, userDn=None, generateCert=thrift_spec[21][4], experimentDataDir=None, userName=None,):
     self.processId = processId
     self.experimentId = experimentId
     self.creationTime = creationTime
@@ -98,7 +98,7 @@ class ProcessModel:
     self.computeResourceId = computeResourceId
     self.processInputs = processInputs
     self.processOutputs = processOutputs
-    self.resourceSchedule = resourceSchedule
+    self.processResourceSchedule = processResourceSchedule
     self.tasks = tasks
     self.taskDag = taskDag
     self.processError = processError
@@ -141,9 +141,14 @@ class ProcessModel:
         else:
           iprot.skip(ftype)
       elif fid == 5:
-        if ftype == TType.STRUCT:
-          self.processStatus = apache.airavata.model.status.ttypes.ProcessStatus()
-          self.processStatus.read(iprot)
+        if ftype == TType.LIST:
+          self.processStatus = []
+          (_etype3, _size0) = iprot.readListBegin()
+          for _i4 in xrange(_size0):
+            _elem5 = apache.airavata.model.status.ttypes.ProcessStatus()
+            _elem5.read(iprot)
+            self.processStatus.append(_elem5)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 6:
@@ -169,39 +174,39 @@ class ProcessModel:
       elif fid == 10:
         if ftype == TType.LIST:
           self.processInputs = []
-          (_etype3, _size0) = iprot.readListBegin()
-          for _i4 in xrange(_size0):
-            _elem5 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
-            _elem5.read(iprot)
-            self.processInputs.append(_elem5)
+          (_etype9, _size6) = iprot.readListBegin()
+          for _i10 in xrange(_size6):
+            _elem11 = apache.airavata.model.application.io.ttypes.InputDataObjectType()
+            _elem11.read(iprot)
+            self.processInputs.append(_elem11)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 11:
         if ftype == TType.LIST:
           self.processOutputs = []
-          (_etype9, _size6) = iprot.readListBegin()
-          for _i10 in xrange(_size6):
-            _elem11 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
-            _elem11.read(iprot)
-            self.processOutputs.append(_elem11)
+          (_etype15, _size12) = iprot.readListBegin()
+          for _i16 in xrange(_size12):
+            _elem17 = apache.airavata.model.application.io.ttypes.OutputDataObjectType()
+            _elem17.read(iprot)
+            self.processOutputs.append(_elem17)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 12:
         if ftype == TType.STRUCT:
-          self.resourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
-          self.resourceSchedule.read(iprot)
+          self.processResourceSchedule = apache.airavata.model.scheduling.ttypes.ComputationalResourceSchedulingModel()
+          self.processResourceSchedule.read(iprot)
         else:
           iprot.skip(ftype)
       elif fid == 13:
         if ftype == TType.LIST:
           self.tasks = []
-          (_etype15, _size12) = iprot.readListBegin()
-          for _i16 in xrange(_size12):
-            _elem17 = apache.airavata.model.task.ttypes.TaskModel()
-            _elem17.read(iprot)
-            self.tasks.append(_elem17)
+          (_etype21, _size18) = iprot.readListBegin()
+          for _i22 in xrange(_size18):
+            _elem23 = apache.airavata.model.task.ttypes.TaskModel()
+            _elem23.read(iprot)
+            self.tasks.append(_elem23)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -211,9 +216,14 @@ class ProcessModel:
         else:
           iprot.skip(ftype)
       elif fid == 15:
-        if ftype == TType.STRUCT:
-          self.processError = apache.airavata.model.commons.ttypes.ErrorModel()
-          self.processError.read(iprot)
+        if ftype == TType.LIST:
+          self.processError = []
+          (_etype27, _size24) = iprot.readListBegin()
+          for _i28 in xrange(_size24):
+            _elem29 = apache.airavata.model.commons.ttypes.ErrorModel()
+            _elem29.read(iprot)
+            self.processError.append(_elem29)
+          iprot.readListEnd()
         else:
           iprot.skip(ftype)
       elif fid == 16:
@@ -229,10 +239,10 @@ class ProcessModel:
       elif fid == 18:
         if ftype == TType.LIST:
           self.emailAddresses = []
-          (_etype21, _size18) = iprot.readListBegin()
-          for _i22 in xrange(_size18):
-            _elem23 = iprot.readString()
-            self.emailAddresses.append(_elem23)
+          (_etype33, _size30) = iprot.readListBegin()
+          for _i34 in xrange(_size30):
+            _elem35 = iprot.readString()
+            self.emailAddresses.append(_elem35)
           iprot.readListEnd()
         else:
           iprot.skip(ftype)
@@ -288,8 +298,11 @@ class ProcessModel:
       oprot.writeI64(self.lastUpdateTime)
       oprot.writeFieldEnd()
     if self.processStatus is not None:
-      oprot.writeFieldBegin('processStatus', TType.STRUCT, 5)
-      self.processStatus.write(oprot)
+      oprot.writeFieldBegin('processStatus', TType.LIST, 5)
+      oprot.writeListBegin(TType.STRUCT, len(self.processStatus))
+      for iter36 in self.processStatus:
+        iter36.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processDetail is not None:
       oprot.writeFieldBegin('processDetail', TType.STRING, 6)
@@ -310,26 +323,26 @@ class ProcessModel:
     if self.processInputs is not None:
       oprot.writeFieldBegin('processInputs', TType.LIST, 10)
       oprot.writeListBegin(TType.STRUCT, len(self.processInputs))
-      for iter24 in self.processInputs:
-        iter24.write(oprot)
+      for iter37 in self.processInputs:
+        iter37.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.processOutputs is not None:
       oprot.writeFieldBegin('processOutputs', TType.LIST, 11)
       oprot.writeListBegin(TType.STRUCT, len(self.processOutputs))
-      for iter25 in self.processOutputs:
-        iter25.write(oprot)
+      for iter38 in self.processOutputs:
+        iter38.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
-    if self.resourceSchedule is not None:
-      oprot.writeFieldBegin('resourceSchedule', TType.STRUCT, 12)
-      self.resourceSchedule.write(oprot)
+    if self.processResourceSchedule is not None:
+      oprot.writeFieldBegin('processResourceSchedule', TType.STRUCT, 12)
+      self.processResourceSchedule.write(oprot)
       oprot.writeFieldEnd()
     if self.tasks is not None:
       oprot.writeFieldBegin('tasks', TType.LIST, 13)
       oprot.writeListBegin(TType.STRUCT, len(self.tasks))
-      for iter26 in self.tasks:
-        iter26.write(oprot)
+      for iter39 in self.tasks:
+        iter39.write(oprot)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.taskDag is not None:
@@ -337,8 +350,11 @@ class ProcessModel:
       oprot.writeString(self.taskDag)
       oprot.writeFieldEnd()
     if self.processError is not None:
-      oprot.writeFieldBegin('processError', TType.STRUCT, 15)
-      self.processError.write(oprot)
+      oprot.writeFieldBegin('processError', TType.LIST, 15)
+      oprot.writeListBegin(TType.STRUCT, len(self.processError))
+      for iter40 in self.processError:
+        iter40.write(oprot)
+      oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.gatewayExecutionId is not None:
       oprot.writeFieldBegin('gatewayExecutionId', TType.STRING, 16)
@@ -351,8 +367,8 @@ class ProcessModel:
     if self.emailAddresses is not None:
       oprot.writeFieldBegin('emailAddresses', TType.LIST, 18)
       oprot.writeListBegin(TType.STRING, len(self.emailAddresses))
-      for iter27 in self.emailAddresses:
-        oprot.writeString(iter27)
+      for iter41 in self.emailAddresses:
+        oprot.writeString(iter41)
       oprot.writeListEnd()
       oprot.writeFieldEnd()
     if self.storageResourceId is not None:
@@ -399,7 +415,7 @@ class ProcessModel:
     value = (value * 31) ^ hash(self.computeResourceId)
     value = (value * 31) ^ hash(self.processInputs)
     value = (value * 31) ^ hash(self.processOutputs)
-    value = (value * 31) ^ hash(self.resourceSchedule)
+    value = (value * 31) ^ hash(self.processResourceSchedule)
     value = (value * 31) ^ hash(self.tasks)
     value = (value * 31) ^ hash(self.taskDag)
     value = (value * 31) ^ hash(self.processError)


[2/3] airavata git commit: adding process model classes

Posted by sc...@apache.org.
http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
index 158edb0..471d7c5 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/process/ProcessModel.java
@@ -68,17 +68,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final org.apache.thrift.protocol.TField EXPERIMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("experimentId", org.apache.thrift.protocol.TType.STRING, (short)2);
   private static final org.apache.thrift.protocol.TField CREATION_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("creationTime", org.apache.thrift.protocol.TType.I64, (short)3);
   private static final org.apache.thrift.protocol.TField LAST_UPDATE_TIME_FIELD_DESC = new org.apache.thrift.protocol.TField("lastUpdateTime", org.apache.thrift.protocol.TType.I64, (short)4);
-  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.STRUCT, (short)5);
+  private static final org.apache.thrift.protocol.TField PROCESS_STATUS_FIELD_DESC = new org.apache.thrift.protocol.TField("processStatus", org.apache.thrift.protocol.TType.LIST, (short)5);
   private static final org.apache.thrift.protocol.TField PROCESS_DETAIL_FIELD_DESC = new org.apache.thrift.protocol.TField("processDetail", org.apache.thrift.protocol.TType.STRING, (short)6);
   private static final org.apache.thrift.protocol.TField APPLICATION_INTERFACE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationInterfaceId", org.apache.thrift.protocol.TType.STRING, (short)7);
   private static final org.apache.thrift.protocol.TField APPLICATION_DEPLOYMENT_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("applicationDeploymentId", org.apache.thrift.protocol.TType.STRING, (short)8);
   private static final org.apache.thrift.protocol.TField COMPUTE_RESOURCE_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("computeResourceId", org.apache.thrift.protocol.TType.STRING, (short)9);
   private static final org.apache.thrift.protocol.TField PROCESS_INPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processInputs", org.apache.thrift.protocol.TType.LIST, (short)10);
   private static final org.apache.thrift.protocol.TField PROCESS_OUTPUTS_FIELD_DESC = new org.apache.thrift.protocol.TField("processOutputs", org.apache.thrift.protocol.TType.LIST, (short)11);
-  private static final org.apache.thrift.protocol.TField RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("resourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
+  private static final org.apache.thrift.protocol.TField PROCESS_RESOURCE_SCHEDULE_FIELD_DESC = new org.apache.thrift.protocol.TField("processResourceSchedule", org.apache.thrift.protocol.TType.STRUCT, (short)12);
   private static final org.apache.thrift.protocol.TField TASKS_FIELD_DESC = new org.apache.thrift.protocol.TField("tasks", org.apache.thrift.protocol.TType.LIST, (short)13);
   private static final org.apache.thrift.protocol.TField TASK_DAG_FIELD_DESC = new org.apache.thrift.protocol.TField("taskDag", org.apache.thrift.protocol.TType.STRING, (short)14);
-  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.STRUCT, (short)15);
+  private static final org.apache.thrift.protocol.TField PROCESS_ERROR_FIELD_DESC = new org.apache.thrift.protocol.TField("processError", org.apache.thrift.protocol.TType.LIST, (short)15);
   private static final org.apache.thrift.protocol.TField GATEWAY_EXECUTION_ID_FIELD_DESC = new org.apache.thrift.protocol.TField("gatewayExecutionId", org.apache.thrift.protocol.TType.STRING, (short)16);
   private static final org.apache.thrift.protocol.TField ENABLE_EMAIL_NOTIFICATION_FIELD_DESC = new org.apache.thrift.protocol.TField("enableEmailNotification", org.apache.thrift.protocol.TType.BOOL, (short)17);
   private static final org.apache.thrift.protocol.TField EMAIL_ADDRESSES_FIELD_DESC = new org.apache.thrift.protocol.TField("emailAddresses", org.apache.thrift.protocol.TType.LIST, (short)18);
@@ -98,17 +98,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private String experimentId; // required
   private long creationTime; // optional
   private long lastUpdateTime; // optional
-  private org.apache.airavata.model.status.ProcessStatus processStatus; // optional
+  private List<org.apache.airavata.model.status.ProcessStatus> processStatus; // optional
   private String processDetail; // optional
   private String applicationInterfaceId; // optional
   private String applicationDeploymentId; // optional
   private String computeResourceId; // optional
   private List<org.apache.airavata.model.application.io.InputDataObjectType> processInputs; // optional
   private List<org.apache.airavata.model.application.io.OutputDataObjectType> processOutputs; // optional
-  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule; // optional
+  private org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel processResourceSchedule; // optional
   private List<org.apache.airavata.model.task.TaskModel> tasks; // optional
   private String taskDag; // optional
-  private org.apache.airavata.model.commons.ErrorModel processError; // optional
+  private List<org.apache.airavata.model.commons.ErrorModel> processError; // optional
   private String gatewayExecutionId; // optional
   private boolean enableEmailNotification; // optional
   private List<String> emailAddresses; // optional
@@ -131,7 +131,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     COMPUTE_RESOURCE_ID((short)9, "computeResourceId"),
     PROCESS_INPUTS((short)10, "processInputs"),
     PROCESS_OUTPUTS((short)11, "processOutputs"),
-    RESOURCE_SCHEDULE((short)12, "resourceSchedule"),
+    PROCESS_RESOURCE_SCHEDULE((short)12, "processResourceSchedule"),
     TASKS((short)13, "tasks"),
     TASK_DAG((short)14, "taskDag"),
     PROCESS_ERROR((short)15, "processError"),
@@ -179,8 +179,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           return PROCESS_INPUTS;
         case 11: // PROCESS_OUTPUTS
           return PROCESS_OUTPUTS;
-        case 12: // RESOURCE_SCHEDULE
-          return RESOURCE_SCHEDULE;
+        case 12: // PROCESS_RESOURCE_SCHEDULE
+          return PROCESS_RESOURCE_SCHEDULE;
         case 13: // TASKS
           return TASKS;
         case 14: // TASK_DAG
@@ -248,7 +248,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
   private static final int __ENABLEEMAILNOTIFICATION_ISSET_ID = 2;
   private static final int __GENERATECERT_ISSET_ID = 3;
   private byte __isset_bitfield = 0;
-  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
+  private static final _Fields optionals[] = {_Fields.CREATION_TIME,_Fields.LAST_UPDATE_TIME,_Fields.PROCESS_STATUS,_Fields.PROCESS_DETAIL,_Fields.APPLICATION_INTERFACE_ID,_Fields.APPLICATION_DEPLOYMENT_ID,_Fields.COMPUTE_RESOURCE_ID,_Fields.PROCESS_INPUTS,_Fields.PROCESS_OUTPUTS,_Fields.PROCESS_RESOURCE_SCHEDULE,_Fields.TASKS,_Fields.TASK_DAG,_Fields.PROCESS_ERROR,_Fields.GATEWAY_EXECUTION_ID,_Fields.ENABLE_EMAIL_NOTIFICATION,_Fields.EMAIL_ADDRESSES,_Fields.STORAGE_RESOURCE_ID,_Fields.USER_DN,_Fields.GENERATE_CERT,_Fields.EXPERIMENT_DATA_DIR,_Fields.USER_NAME};
   public static final Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> metaDataMap;
   static {
     Map<_Fields, org.apache.thrift.meta_data.FieldMetaData> tmpMap = new EnumMap<_Fields, org.apache.thrift.meta_data.FieldMetaData>(_Fields.class);
@@ -261,7 +261,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.LAST_UPDATE_TIME, new org.apache.thrift.meta_data.FieldMetaData("lastUpdateTime", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.I64)));
     tmpMap.put(_Fields.PROCESS_STATUS, new org.apache.thrift.meta_data.FieldMetaData("processStatus", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class)));
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.status.ProcessStatus.class))));
     tmpMap.put(_Fields.PROCESS_DETAIL, new org.apache.thrift.meta_data.FieldMetaData("processDetail", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.APPLICATION_INTERFACE_ID, new org.apache.thrift.meta_data.FieldMetaData("applicationInterfaceId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -276,7 +277,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.PROCESS_OUTPUTS, new org.apache.thrift.meta_data.FieldMetaData("processOutputs", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
             new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.application.io.OutputDataObjectType.class))));
-    tmpMap.put(_Fields.RESOURCE_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("resourceSchedule", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
+    tmpMap.put(_Fields.PROCESS_RESOURCE_SCHEDULE, new org.apache.thrift.meta_data.FieldMetaData("processResourceSchedule", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel.class)));
     tmpMap.put(_Fields.TASKS, new org.apache.thrift.meta_data.FieldMetaData("tasks", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
@@ -284,7 +285,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     tmpMap.put(_Fields.TASK_DAG, new org.apache.thrift.meta_data.FieldMetaData("taskDag", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.PROCESS_ERROR, new org.apache.thrift.meta_data.FieldMetaData("processError", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
-        new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class)));
+        new org.apache.thrift.meta_data.ListMetaData(org.apache.thrift.protocol.TType.LIST, 
+            new org.apache.thrift.meta_data.StructMetaData(org.apache.thrift.protocol.TType.STRUCT, org.apache.airavata.model.commons.ErrorModel.class))));
     tmpMap.put(_Fields.GATEWAY_EXECUTION_ID, new org.apache.thrift.meta_data.FieldMetaData("gatewayExecutionId", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
         new org.apache.thrift.meta_data.FieldValueMetaData(org.apache.thrift.protocol.TType.STRING)));
     tmpMap.put(_Fields.ENABLE_EMAIL_NOTIFICATION, new org.apache.thrift.meta_data.FieldMetaData("enableEmailNotification", org.apache.thrift.TFieldRequirementType.OPTIONAL, 
@@ -336,7 +338,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.creationTime = other.creationTime;
     this.lastUpdateTime = other.lastUpdateTime;
     if (other.isSetProcessStatus()) {
-      this.processStatus = new org.apache.airavata.model.status.ProcessStatus(other.processStatus);
+      List<org.apache.airavata.model.status.ProcessStatus> __this__processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(other.processStatus.size());
+      for (org.apache.airavata.model.status.ProcessStatus other_element : other.processStatus) {
+        __this__processStatus.add(new org.apache.airavata.model.status.ProcessStatus(other_element));
+      }
+      this.processStatus = __this__processStatus;
     }
     if (other.isSetProcessDetail()) {
       this.processDetail = other.processDetail;
@@ -364,8 +370,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       this.processOutputs = __this__processOutputs;
     }
-    if (other.isSetResourceSchedule()) {
-      this.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.resourceSchedule);
+    if (other.isSetProcessResourceSchedule()) {
+      this.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel(other.processResourceSchedule);
     }
     if (other.isSetTasks()) {
       List<org.apache.airavata.model.task.TaskModel> __this__tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(other.tasks.size());
@@ -378,7 +384,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       this.taskDag = other.taskDag;
     }
     if (other.isSetProcessError()) {
-      this.processError = new org.apache.airavata.model.commons.ErrorModel(other.processError);
+      List<org.apache.airavata.model.commons.ErrorModel> __this__processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(other.processError.size());
+      for (org.apache.airavata.model.commons.ErrorModel other_element : other.processError) {
+        __this__processError.add(new org.apache.airavata.model.commons.ErrorModel(other_element));
+      }
+      this.processError = __this__processError;
     }
     if (other.isSetGatewayExecutionId()) {
       this.gatewayExecutionId = other.gatewayExecutionId;
@@ -423,7 +433,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     this.computeResourceId = null;
     this.processInputs = null;
     this.processOutputs = null;
-    this.resourceSchedule = null;
+    this.processResourceSchedule = null;
     this.tasks = null;
     this.taskDag = null;
     this.processError = null;
@@ -529,11 +539,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     __isset_bitfield = EncodingUtils.setBit(__isset_bitfield, __LASTUPDATETIME_ISSET_ID, value);
   }
 
-  public org.apache.airavata.model.status.ProcessStatus getProcessStatus() {
+  public int getProcessStatusSize() {
+    return (this.processStatus == null) ? 0 : this.processStatus.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.status.ProcessStatus> getProcessStatusIterator() {
+    return (this.processStatus == null) ? null : this.processStatus.iterator();
+  }
+
+  public void addToProcessStatus(org.apache.airavata.model.status.ProcessStatus elem) {
+    if (this.processStatus == null) {
+      this.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>();
+    }
+    this.processStatus.add(elem);
+  }
+
+  public List<org.apache.airavata.model.status.ProcessStatus> getProcessStatus() {
     return this.processStatus;
   }
 
-  public void setProcessStatus(org.apache.airavata.model.status.ProcessStatus processStatus) {
+  public void setProcessStatus(List<org.apache.airavata.model.status.ProcessStatus> processStatus) {
     this.processStatus = processStatus;
   }
 
@@ -720,26 +745,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
-  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getResourceSchedule() {
-    return this.resourceSchedule;
+  public org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel getProcessResourceSchedule() {
+    return this.processResourceSchedule;
   }
 
-  public void setResourceSchedule(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel resourceSchedule) {
-    this.resourceSchedule = resourceSchedule;
+  public void setProcessResourceSchedule(org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel processResourceSchedule) {
+    this.processResourceSchedule = processResourceSchedule;
   }
 
-  public void unsetResourceSchedule() {
-    this.resourceSchedule = null;
+  public void unsetProcessResourceSchedule() {
+    this.processResourceSchedule = null;
   }
 
-  /** Returns true if field resourceSchedule is set (has been assigned a value) and false otherwise */
-  public boolean isSetResourceSchedule() {
-    return this.resourceSchedule != null;
+  /** Returns true if field processResourceSchedule is set (has been assigned a value) and false otherwise */
+  public boolean isSetProcessResourceSchedule() {
+    return this.processResourceSchedule != null;
   }
 
-  public void setResourceScheduleIsSet(boolean value) {
+  public void setProcessResourceScheduleIsSet(boolean value) {
     if (!value) {
-      this.resourceSchedule = null;
+      this.processResourceSchedule = null;
     }
   }
 
@@ -804,11 +829,26 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
   }
 
-  public org.apache.airavata.model.commons.ErrorModel getProcessError() {
+  public int getProcessErrorSize() {
+    return (this.processError == null) ? 0 : this.processError.size();
+  }
+
+  public java.util.Iterator<org.apache.airavata.model.commons.ErrorModel> getProcessErrorIterator() {
+    return (this.processError == null) ? null : this.processError.iterator();
+  }
+
+  public void addToProcessError(org.apache.airavata.model.commons.ErrorModel elem) {
+    if (this.processError == null) {
+      this.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>();
+    }
+    this.processError.add(elem);
+  }
+
+  public List<org.apache.airavata.model.commons.ErrorModel> getProcessError() {
     return this.processError;
   }
 
-  public void setProcessError(org.apache.airavata.model.commons.ErrorModel processError) {
+  public void setProcessError(List<org.apache.airavata.model.commons.ErrorModel> processError) {
     this.processError = processError;
   }
 
@@ -1062,7 +1102,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessStatus();
       } else {
-        setProcessStatus((org.apache.airavata.model.status.ProcessStatus)value);
+        setProcessStatus((List<org.apache.airavata.model.status.ProcessStatus>)value);
       }
       break;
 
@@ -1114,11 +1154,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       break;
 
-    case RESOURCE_SCHEDULE:
+    case PROCESS_RESOURCE_SCHEDULE:
       if (value == null) {
-        unsetResourceSchedule();
+        unsetProcessResourceSchedule();
       } else {
-        setResourceSchedule((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
+        setProcessResourceSchedule((org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel)value);
       }
       break;
 
@@ -1142,7 +1182,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (value == null) {
         unsetProcessError();
       } else {
-        setProcessError((org.apache.airavata.model.commons.ErrorModel)value);
+        setProcessError((List<org.apache.airavata.model.commons.ErrorModel>)value);
       }
       break;
 
@@ -1248,8 +1288,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     case PROCESS_OUTPUTS:
       return getProcessOutputs();
 
-    case RESOURCE_SCHEDULE:
-      return getResourceSchedule();
+    case PROCESS_RESOURCE_SCHEDULE:
+      return getProcessResourceSchedule();
 
     case TASKS:
       return getTasks();
@@ -1317,8 +1357,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       return isSetProcessInputs();
     case PROCESS_OUTPUTS:
       return isSetProcessOutputs();
-    case RESOURCE_SCHEDULE:
-      return isSetResourceSchedule();
+    case PROCESS_RESOURCE_SCHEDULE:
+      return isSetProcessResourceSchedule();
     case TASKS:
       return isSetTasks();
     case TASK_DAG:
@@ -1457,12 +1497,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return false;
     }
 
-    boolean this_present_resourceSchedule = true && this.isSetResourceSchedule();
-    boolean that_present_resourceSchedule = true && that.isSetResourceSchedule();
-    if (this_present_resourceSchedule || that_present_resourceSchedule) {
-      if (!(this_present_resourceSchedule && that_present_resourceSchedule))
+    boolean this_present_processResourceSchedule = true && this.isSetProcessResourceSchedule();
+    boolean that_present_processResourceSchedule = true && that.isSetProcessResourceSchedule();
+    if (this_present_processResourceSchedule || that_present_processResourceSchedule) {
+      if (!(this_present_processResourceSchedule && that_present_processResourceSchedule))
         return false;
-      if (!this.resourceSchedule.equals(that.resourceSchedule))
+      if (!this.processResourceSchedule.equals(that.processResourceSchedule))
         return false;
     }
 
@@ -1627,10 +1667,10 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     if (present_processOutputs)
       list.add(processOutputs);
 
-    boolean present_resourceSchedule = true && (isSetResourceSchedule());
-    list.add(present_resourceSchedule);
-    if (present_resourceSchedule)
-      list.add(resourceSchedule);
+    boolean present_processResourceSchedule = true && (isSetProcessResourceSchedule());
+    list.add(present_processResourceSchedule);
+    if (present_processResourceSchedule)
+      list.add(processResourceSchedule);
 
     boolean present_tasks = true && (isSetTasks());
     list.add(present_tasks);
@@ -1808,12 +1848,12 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         return lastComparison;
       }
     }
-    lastComparison = Boolean.valueOf(isSetResourceSchedule()).compareTo(other.isSetResourceSchedule());
+    lastComparison = Boolean.valueOf(isSetProcessResourceSchedule()).compareTo(other.isSetProcessResourceSchedule());
     if (lastComparison != 0) {
       return lastComparison;
     }
-    if (isSetResourceSchedule()) {
-      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.resourceSchedule, other.resourceSchedule);
+    if (isSetProcessResourceSchedule()) {
+      lastComparison = org.apache.thrift.TBaseHelper.compareTo(this.processResourceSchedule, other.processResourceSchedule);
       if (lastComparison != 0) {
         return lastComparison;
       }
@@ -2045,13 +2085,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       first = false;
     }
-    if (isSetResourceSchedule()) {
+    if (isSetProcessResourceSchedule()) {
       if (!first) sb.append(", ");
-      sb.append("resourceSchedule:");
-      if (this.resourceSchedule == null) {
+      sb.append("processResourceSchedule:");
+      if (this.processResourceSchedule == null) {
         sb.append("null");
       } else {
-        sb.append(this.resourceSchedule);
+        sb.append(this.processResourceSchedule);
       }
       first = false;
     }
@@ -2172,14 +2212,8 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
     }
 
     // check for sub-struct validity
-    if (processStatus != null) {
-      processStatus.validate();
-    }
-    if (resourceSchedule != null) {
-      resourceSchedule.validate();
-    }
-    if (processError != null) {
-      processError.validate();
+    if (processResourceSchedule != null) {
+      processResourceSchedule.validate();
     }
   }
 
@@ -2252,9 +2286,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             }
             break;
           case 5: // PROCESS_STATUS
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
-              struct.processStatus.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
+                struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list0.size);
+                org.apache.airavata.model.status.ProcessStatus _elem1;
+                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                {
+                  _elem1 = new org.apache.airavata.model.status.ProcessStatus();
+                  _elem1.read(iprot);
+                  struct.processStatus.add(_elem1);
+                }
+                iprot.readListEnd();
+              }
               struct.setProcessStatusIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -2295,14 +2339,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 10: // PROCESS_INPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list0 = iprot.readListBegin();
-                struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list0.size);
-                org.apache.airavata.model.application.io.InputDataObjectType _elem1;
-                for (int _i2 = 0; _i2 < _list0.size; ++_i2)
+                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
+                struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list3.size);
+                org.apache.airavata.model.application.io.InputDataObjectType _elem4;
+                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
                 {
-                  _elem1 = new org.apache.airavata.model.application.io.InputDataObjectType();
-                  _elem1.read(iprot);
-                  struct.processInputs.add(_elem1);
+                  _elem4 = new org.apache.airavata.model.application.io.InputDataObjectType();
+                  _elem4.read(iprot);
+                  struct.processInputs.add(_elem4);
                 }
                 iprot.readListEnd();
               }
@@ -2314,14 +2358,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 11: // PROCESS_OUTPUTS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list3 = iprot.readListBegin();
-                struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list3.size);
-                org.apache.airavata.model.application.io.OutputDataObjectType _elem4;
-                for (int _i5 = 0; _i5 < _list3.size; ++_i5)
+                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
+                struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list6.size);
+                org.apache.airavata.model.application.io.OutputDataObjectType _elem7;
+                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
                 {
-                  _elem4 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-                  _elem4.read(iprot);
-                  struct.processOutputs.add(_elem4);
+                  _elem7 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+                  _elem7.read(iprot);
+                  struct.processOutputs.add(_elem7);
                 }
                 iprot.readListEnd();
               }
@@ -2330,11 +2374,11 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
             break;
-          case 12: // RESOURCE_SCHEDULE
+          case 12: // PROCESS_RESOURCE_SCHEDULE
             if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
-              struct.resourceSchedule.read(iprot);
-              struct.setResourceScheduleIsSet(true);
+              struct.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
+              struct.processResourceSchedule.read(iprot);
+              struct.setProcessResourceScheduleIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
             }
@@ -2342,14 +2386,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 13: // TASKS
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list6 = iprot.readListBegin();
-                struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list6.size);
-                org.apache.airavata.model.task.TaskModel _elem7;
-                for (int _i8 = 0; _i8 < _list6.size; ++_i8)
+                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
+                struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list9.size);
+                org.apache.airavata.model.task.TaskModel _elem10;
+                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
                 {
-                  _elem7 = new org.apache.airavata.model.task.TaskModel();
-                  _elem7.read(iprot);
-                  struct.tasks.add(_elem7);
+                  _elem10 = new org.apache.airavata.model.task.TaskModel();
+                  _elem10.read(iprot);
+                  struct.tasks.add(_elem10);
                 }
                 iprot.readListEnd();
               }
@@ -2367,9 +2411,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
             }
             break;
           case 15: // PROCESS_ERROR
-            if (schemeField.type == org.apache.thrift.protocol.TType.STRUCT) {
-              struct.processError = new org.apache.airavata.model.commons.ErrorModel();
-              struct.processError.read(iprot);
+            if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
+              {
+                org.apache.thrift.protocol.TList _list12 = iprot.readListBegin();
+                struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list12.size);
+                org.apache.airavata.model.commons.ErrorModel _elem13;
+                for (int _i14 = 0; _i14 < _list12.size; ++_i14)
+                {
+                  _elem13 = new org.apache.airavata.model.commons.ErrorModel();
+                  _elem13.read(iprot);
+                  struct.processError.add(_elem13);
+                }
+                iprot.readListEnd();
+              }
               struct.setProcessErrorIsSet(true);
             } else { 
               org.apache.thrift.protocol.TProtocolUtil.skip(iprot, schemeField.type);
@@ -2394,13 +2448,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           case 18: // EMAIL_ADDRESSES
             if (schemeField.type == org.apache.thrift.protocol.TType.LIST) {
               {
-                org.apache.thrift.protocol.TList _list9 = iprot.readListBegin();
-                struct.emailAddresses = new ArrayList<String>(_list9.size);
-                String _elem10;
-                for (int _i11 = 0; _i11 < _list9.size; ++_i11)
+                org.apache.thrift.protocol.TList _list15 = iprot.readListBegin();
+                struct.emailAddresses = new ArrayList<String>(_list15.size);
+                String _elem16;
+                for (int _i17 = 0; _i17 < _list15.size; ++_i17)
                 {
-                  _elem10 = iprot.readString();
-                  struct.emailAddresses.add(_elem10);
+                  _elem16 = iprot.readString();
+                  struct.emailAddresses.add(_elem16);
                 }
                 iprot.readListEnd();
               }
@@ -2485,7 +2539,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.processStatus != null) {
         if (struct.isSetProcessStatus()) {
           oprot.writeFieldBegin(PROCESS_STATUS_FIELD_DESC);
-          struct.processStatus.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processStatus.size()));
+            for (org.apache.airavata.model.status.ProcessStatus _iter18 : struct.processStatus)
+            {
+              _iter18.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -2522,9 +2583,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(PROCESS_INPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processInputs.size()));
-            for (org.apache.airavata.model.application.io.InputDataObjectType _iter12 : struct.processInputs)
+            for (org.apache.airavata.model.application.io.InputDataObjectType _iter19 : struct.processInputs)
             {
-              _iter12.write(oprot);
+              _iter19.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2536,19 +2597,19 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(PROCESS_OUTPUTS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processOutputs.size()));
-            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter13 : struct.processOutputs)
+            for (org.apache.airavata.model.application.io.OutputDataObjectType _iter20 : struct.processOutputs)
             {
-              _iter13.write(oprot);
+              _iter20.write(oprot);
             }
             oprot.writeListEnd();
           }
           oprot.writeFieldEnd();
         }
       }
-      if (struct.resourceSchedule != null) {
-        if (struct.isSetResourceSchedule()) {
-          oprot.writeFieldBegin(RESOURCE_SCHEDULE_FIELD_DESC);
-          struct.resourceSchedule.write(oprot);
+      if (struct.processResourceSchedule != null) {
+        if (struct.isSetProcessResourceSchedule()) {
+          oprot.writeFieldBegin(PROCESS_RESOURCE_SCHEDULE_FIELD_DESC);
+          struct.processResourceSchedule.write(oprot);
           oprot.writeFieldEnd();
         }
       }
@@ -2557,9 +2618,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(TASKS_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.tasks.size()));
-            for (org.apache.airavata.model.task.TaskModel _iter14 : struct.tasks)
+            for (org.apache.airavata.model.task.TaskModel _iter21 : struct.tasks)
             {
-              _iter14.write(oprot);
+              _iter21.write(oprot);
             }
             oprot.writeListEnd();
           }
@@ -2576,7 +2637,14 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.processError != null) {
         if (struct.isSetProcessError()) {
           oprot.writeFieldBegin(PROCESS_ERROR_FIELD_DESC);
-          struct.processError.write(oprot);
+          {
+            oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, struct.processError.size()));
+            for (org.apache.airavata.model.commons.ErrorModel _iter22 : struct.processError)
+            {
+              _iter22.write(oprot);
+            }
+            oprot.writeListEnd();
+          }
           oprot.writeFieldEnd();
         }
       }
@@ -2597,9 +2665,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
           oprot.writeFieldBegin(EMAIL_ADDRESSES_FIELD_DESC);
           {
             oprot.writeListBegin(new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, struct.emailAddresses.size()));
-            for (String _iter15 : struct.emailAddresses)
+            for (String _iter23 : struct.emailAddresses)
             {
-              oprot.writeString(_iter15);
+              oprot.writeString(_iter23);
             }
             oprot.writeListEnd();
           }
@@ -2686,7 +2754,7 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetProcessOutputs()) {
         optionals.set(8);
       }
-      if (struct.isSetResourceSchedule()) {
+      if (struct.isSetProcessResourceSchedule()) {
         optionals.set(9);
       }
       if (struct.isSetTasks()) {
@@ -2730,7 +2798,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeI64(struct.lastUpdateTime);
       }
       if (struct.isSetProcessStatus()) {
-        struct.processStatus.write(oprot);
+        {
+          oprot.writeI32(struct.processStatus.size());
+          for (org.apache.airavata.model.status.ProcessStatus _iter24 : struct.processStatus)
+          {
+            _iter24.write(oprot);
+          }
+        }
       }
       if (struct.isSetProcessDetail()) {
         oprot.writeString(struct.processDetail);
@@ -2747,30 +2821,30 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetProcessInputs()) {
         {
           oprot.writeI32(struct.processInputs.size());
-          for (org.apache.airavata.model.application.io.InputDataObjectType _iter16 : struct.processInputs)
+          for (org.apache.airavata.model.application.io.InputDataObjectType _iter25 : struct.processInputs)
           {
-            _iter16.write(oprot);
+            _iter25.write(oprot);
           }
         }
       }
       if (struct.isSetProcessOutputs()) {
         {
           oprot.writeI32(struct.processOutputs.size());
-          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter17 : struct.processOutputs)
+          for (org.apache.airavata.model.application.io.OutputDataObjectType _iter26 : struct.processOutputs)
           {
-            _iter17.write(oprot);
+            _iter26.write(oprot);
           }
         }
       }
-      if (struct.isSetResourceSchedule()) {
-        struct.resourceSchedule.write(oprot);
+      if (struct.isSetProcessResourceSchedule()) {
+        struct.processResourceSchedule.write(oprot);
       }
       if (struct.isSetTasks()) {
         {
           oprot.writeI32(struct.tasks.size());
-          for (org.apache.airavata.model.task.TaskModel _iter18 : struct.tasks)
+          for (org.apache.airavata.model.task.TaskModel _iter27 : struct.tasks)
           {
-            _iter18.write(oprot);
+            _iter27.write(oprot);
           }
         }
       }
@@ -2778,7 +2852,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         oprot.writeString(struct.taskDag);
       }
       if (struct.isSetProcessError()) {
-        struct.processError.write(oprot);
+        {
+          oprot.writeI32(struct.processError.size());
+          for (org.apache.airavata.model.commons.ErrorModel _iter28 : struct.processError)
+          {
+            _iter28.write(oprot);
+          }
+        }
       }
       if (struct.isSetGatewayExecutionId()) {
         oprot.writeString(struct.gatewayExecutionId);
@@ -2789,9 +2869,9 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       if (struct.isSetEmailAddresses()) {
         {
           oprot.writeI32(struct.emailAddresses.size());
-          for (String _iter19 : struct.emailAddresses)
+          for (String _iter29 : struct.emailAddresses)
           {
-            oprot.writeString(_iter19);
+            oprot.writeString(_iter29);
           }
         }
       }
@@ -2829,8 +2909,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.setLastUpdateTimeIsSet(true);
       }
       if (incoming.get(2)) {
-        struct.processStatus = new org.apache.airavata.model.status.ProcessStatus();
-        struct.processStatus.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list30 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processStatus = new ArrayList<org.apache.airavata.model.status.ProcessStatus>(_list30.size);
+          org.apache.airavata.model.status.ProcessStatus _elem31;
+          for (int _i32 = 0; _i32 < _list30.size; ++_i32)
+          {
+            _elem31 = new org.apache.airavata.model.status.ProcessStatus();
+            _elem31.read(iprot);
+            struct.processStatus.add(_elem31);
+          }
+        }
         struct.setProcessStatusIsSet(true);
       }
       if (incoming.get(3)) {
@@ -2851,47 +2940,47 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (incoming.get(7)) {
         {
-          org.apache.thrift.protocol.TList _list20 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list20.size);
-          org.apache.airavata.model.application.io.InputDataObjectType _elem21;
-          for (int _i22 = 0; _i22 < _list20.size; ++_i22)
+          org.apache.thrift.protocol.TList _list33 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processInputs = new ArrayList<org.apache.airavata.model.application.io.InputDataObjectType>(_list33.size);
+          org.apache.airavata.model.application.io.InputDataObjectType _elem34;
+          for (int _i35 = 0; _i35 < _list33.size; ++_i35)
           {
-            _elem21 = new org.apache.airavata.model.application.io.InputDataObjectType();
-            _elem21.read(iprot);
-            struct.processInputs.add(_elem21);
+            _elem34 = new org.apache.airavata.model.application.io.InputDataObjectType();
+            _elem34.read(iprot);
+            struct.processInputs.add(_elem34);
           }
         }
         struct.setProcessInputsIsSet(true);
       }
       if (incoming.get(8)) {
         {
-          org.apache.thrift.protocol.TList _list23 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list23.size);
-          org.apache.airavata.model.application.io.OutputDataObjectType _elem24;
-          for (int _i25 = 0; _i25 < _list23.size; ++_i25)
+          org.apache.thrift.protocol.TList _list36 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processOutputs = new ArrayList<org.apache.airavata.model.application.io.OutputDataObjectType>(_list36.size);
+          org.apache.airavata.model.application.io.OutputDataObjectType _elem37;
+          for (int _i38 = 0; _i38 < _list36.size; ++_i38)
           {
-            _elem24 = new org.apache.airavata.model.application.io.OutputDataObjectType();
-            _elem24.read(iprot);
-            struct.processOutputs.add(_elem24);
+            _elem37 = new org.apache.airavata.model.application.io.OutputDataObjectType();
+            _elem37.read(iprot);
+            struct.processOutputs.add(_elem37);
           }
         }
         struct.setProcessOutputsIsSet(true);
       }
       if (incoming.get(9)) {
-        struct.resourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
-        struct.resourceSchedule.read(iprot);
-        struct.setResourceScheduleIsSet(true);
+        struct.processResourceSchedule = new org.apache.airavata.model.scheduling.ComputationalResourceSchedulingModel();
+        struct.processResourceSchedule.read(iprot);
+        struct.setProcessResourceScheduleIsSet(true);
       }
       if (incoming.get(10)) {
         {
-          org.apache.thrift.protocol.TList _list26 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
-          struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list26.size);
-          org.apache.airavata.model.task.TaskModel _elem27;
-          for (int _i28 = 0; _i28 < _list26.size; ++_i28)
+          org.apache.thrift.protocol.TList _list39 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.tasks = new ArrayList<org.apache.airavata.model.task.TaskModel>(_list39.size);
+          org.apache.airavata.model.task.TaskModel _elem40;
+          for (int _i41 = 0; _i41 < _list39.size; ++_i41)
           {
-            _elem27 = new org.apache.airavata.model.task.TaskModel();
-            _elem27.read(iprot);
-            struct.tasks.add(_elem27);
+            _elem40 = new org.apache.airavata.model.task.TaskModel();
+            _elem40.read(iprot);
+            struct.tasks.add(_elem40);
           }
         }
         struct.setTasksIsSet(true);
@@ -2901,8 +2990,17 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
         struct.setTaskDagIsSet(true);
       }
       if (incoming.get(12)) {
-        struct.processError = new org.apache.airavata.model.commons.ErrorModel();
-        struct.processError.read(iprot);
+        {
+          org.apache.thrift.protocol.TList _list42 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRUCT, iprot.readI32());
+          struct.processError = new ArrayList<org.apache.airavata.model.commons.ErrorModel>(_list42.size);
+          org.apache.airavata.model.commons.ErrorModel _elem43;
+          for (int _i44 = 0; _i44 < _list42.size; ++_i44)
+          {
+            _elem43 = new org.apache.airavata.model.commons.ErrorModel();
+            _elem43.read(iprot);
+            struct.processError.add(_elem43);
+          }
+        }
         struct.setProcessErrorIsSet(true);
       }
       if (incoming.get(13)) {
@@ -2915,13 +3013,13 @@ public class ProcessModel implements org.apache.thrift.TBase<ProcessModel, Proce
       }
       if (incoming.get(15)) {
         {
-          org.apache.thrift.protocol.TList _list29 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
-          struct.emailAddresses = new ArrayList<String>(_list29.size);
-          String _elem30;
-          for (int _i31 = 0; _i31 < _list29.size; ++_i31)
+          org.apache.thrift.protocol.TList _list45 = new org.apache.thrift.protocol.TList(org.apache.thrift.protocol.TType.STRING, iprot.readI32());
+          struct.emailAddresses = new ArrayList<String>(_list45.size);
+          String _elem46;
+          for (int _i47 = 0; _i47 < _list45.size; ++_i47)
           {
-            _elem30 = iprot.readString();
-            struct.emailAddresses.add(_elem30);
+            _elem46 = iprot.readString();
+            struct.emailAddresses.add(_elem46);
           }
         }
         struct.setEmailAddressesIsSet(true);

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
index 321d31c..ef18235 100644
--- a/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
+++ b/airavata-api/airavata-data-models/src/main/java/org/apache/airavata/model/user/UserProfile.java
@@ -23,14 +23,32 @@
  */
 package org.apache.airavata.model.user;
 
-import org.apache.thrift.protocol.TTupleProtocol;
 import org.apache.thrift.scheme.IScheme;
 import org.apache.thrift.scheme.SchemeFactory;
 import org.apache.thrift.scheme.StandardScheme;
-import org.apache.thrift.scheme.TupleScheme;
 
+import org.apache.thrift.scheme.TupleScheme;
+import org.apache.thrift.protocol.TTupleProtocol;
+import org.apache.thrift.protocol.TProtocolException;
+import org.apache.thrift.EncodingUtils;
+import org.apache.thrift.TException;
+import org.apache.thrift.async.AsyncMethodCallback;
+import org.apache.thrift.server.AbstractNonblockingServer.*;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Map;
+import java.util.HashMap;
+import java.util.EnumMap;
+import java.util.Set;
+import java.util.HashSet;
+import java.util.EnumSet;
+import java.util.Collections;
+import java.util.BitSet;
+import java.nio.ByteBuffer;
+import java.util.Arrays;
 import javax.annotation.Generated;
-import java.util.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"})
 /**

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
----------------------------------------------------------------------
diff --git a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
index d1b25b0..07f38e4 100644
--- a/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
+++ b/airavata-api/airavata-model-utils/src/main/java/org/apache/airavata/model/util/ExperimentModelUtil.java
@@ -103,7 +103,7 @@ public class ExperimentModelUtil {
             processModel.setUserDn(configData.getUserDN());
             ComputationalResourceSchedulingModel scheduling = configData.getComputationalResourceScheduling();
             if (scheduling != null){
-                processModel.setResourceSchedule(scheduling);
+                processModel.setProcessResourceSchedule(scheduling);
                 processModel.setComputeResourceId(scheduling.getResourceHostId());
             }
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
index 0ed836f..0015a21 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/GFacUtils.java
@@ -449,7 +449,7 @@ public class GFacUtils {
             log.error("Error while getting job submissiont sub task model", e);
         }
 
-        ComputationalResourceSchedulingModel scheduling = processModel.getResourceSchedule();
+        ComputationalResourceSchedulingModel scheduling = processModel.getProcessResourceSchedule();
         if (scheduling != null) {
             int totalNodeCount = scheduling.getNodeCount();
             int totalCPUCount = scheduling.getTotalCPUCount();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
index 4181b47..0e8c1f0 100644
--- a/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
+++ b/modules/gfac/gfac-core/src/main/java/org/apache/airavata/gfac/core/context/ProcessContext.java
@@ -46,6 +46,7 @@ import org.apache.curator.framework.CuratorFramework;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -162,11 +163,11 @@ public class ProcessContext {
 
 	public String getWorkingDir() {
 		if (workingDir == null) {
-            if (processModel.getResourceSchedule().getStaticWorkingDir() != null){
-                workingDir = processModel.getResourceSchedule().getStaticWorkingDir();
+            if (processModel.getProcessResourceSchedule().getStaticWorkingDir() != null){
+                workingDir = processModel.getProcessResourceSchedule().getStaticWorkingDir();
             }else {
                 String scratchLocation = null;
-				String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+				String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
                 if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
 					scratchLocation = overrideScratchLocation;
 				} else {
@@ -361,19 +362,27 @@ public class ProcessContext {
 	}
 
 	public ProcessState getProcessState() {
-		return processModel.getProcessStatus().getState();
+		if(processModel.getProcessStatus() != null && processModel.getProcessStatus().size() > 0)
+			return processModel.getProcessStatus().get(0).getState();
+		else
+			return null;
 	}
 
 	public void setProcessStatus(ProcessStatus status) {
 		if (status != null) {
 			log.info("expId: {}, processId: {} :- Process status changed {} -> {}", getExperimentId(), processId,
 					getProcessState().name(), status.getState().name());
-			processModel.setProcessStatus(status);
+			List<ProcessStatus> processStatuses = new ArrayList<>();
+			processStatuses.add(status);
+			processModel.setProcessStatus(processStatuses);
 		}
 	}
 
 	public ProcessStatus getProcessStatus(){
-		return processModel.getProcessStatus();
+		if(processModel.getProcessStatus() != null)
+			return processModel.getProcessStatus().get(0);
+		else
+			return null;
 	}
 
 	public String getComputeResourceId() {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
index 6ed6de3..4aaf93b 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/Factory.java
@@ -335,7 +335,7 @@ public abstract class Factory {
         try {
             ProcessModel processModel = processContext.getProcessModel();
             String loginUserName = null;
-            String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName();
+            String overrideLoginUserName = processModel.getProcessResourceSchedule().getOverrideLoginUserName();
             if (overrideLoginUserName != null && !overrideLoginUserName.equals("")) {
                 loginUserName = overrideLoginUserName;
             } else {
@@ -352,7 +352,7 @@ public abstract class Factory {
         try {
             ProcessModel processModel = processContext.getProcessModel();
             String scratchLocation = null;
-            String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+            String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
             if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
                 scratchLocation = overrideScratchLocation;
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
index da29a26..ebe3bab 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/DataStreamingTask.java
@@ -76,7 +76,7 @@ public class DataStreamingTask implements Task {
                 if (processOutput != null) {
                     if (processOutput.isOutputStreaming()) {
                         // stream output periodically
-                        ComputationalResourceSchedulingModel resourceSchedule = taskContext.getParentProcessContext().getProcessModel().getResourceSchedule();
+                        ComputationalResourceSchedulingModel resourceSchedule = taskContext.getParentProcessContext().getProcessModel().getProcessResourceSchedule();
                         int wallTimeLimit = resourceSchedule.getWallTimeLimit();
                         if (wallTimeLimit > 10) {
                             int period = wallTimeLimit / 10;

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
index d9ef7e2..d6b32e7 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ApplicationProcessor.java
@@ -108,7 +108,7 @@ public class ApplicationProcessor {
                 	// do nothing
                 }
                 
-                int totalThreadCount = context.getProcessModel().getResourceSchedule().getNumberOfThreads();
+                int totalThreadCount = context.getProcessModel().getProcessResourceSchedule().getNumberOfThreads();
                 // we take it as threads per processes
                 if(totalThreadCount > 0){
 					ThreadsPerProcessType tpp = ThreadsPerProcessType.Factory.newInstance();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
----------------------------------------------------------------------
diff --git a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
index a5586db..ea2ccdc 100644
--- a/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
+++ b/modules/gfac/gfac-impl/src/main/java/org/apache/airavata/gfac/impl/task/utils/bes/ResourceProcessor.java
@@ -37,7 +37,7 @@ public class ResourceProcessor {
         ProcessModel processModel = context.getProcessModel();
         if (processModel != null) {
             try {
-                ComputationalResourceSchedulingModel crs = processModel.getResourceSchedule();
+                ComputationalResourceSchedulingModel crs = processModel.getProcessResourceSchedule();
 
                 if (crs.getTotalPhysicalMemory() > 0) {
                     RangeValueType rangeType = new RangeValueType();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
index 95ff86e..74bd2db 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/utils/OrchestratorUtils.java
@@ -124,7 +124,7 @@ public class OrchestratorUtils {
     public static String getLoginUserName(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException {
         try {
             String loginUserName = null;
-            String overrideLoginUserName = processModel.getResourceSchedule().getOverrideLoginUserName();
+            String overrideLoginUserName = processModel.getProcessResourceSchedule().getOverrideLoginUserName();
             if (overrideLoginUserName != null && !overrideLoginUserName.equals("")) {
                 loginUserName = overrideLoginUserName;
             } else {
@@ -141,7 +141,7 @@ public class OrchestratorUtils {
     public static String getScratchLocation(OrchestratorContext context, ProcessModel processModel, String gatewayId) throws RegistryException {
         try {
             String scratchLocation = null;
-            String overrideScratchLocation = processModel.getResourceSchedule().getOverrideScratchLocation();
+            String overrideScratchLocation = processModel.getProcessResourceSchedule().getOverrideScratchLocation();
             if (overrideScratchLocation != null && !overrideScratchLocation.equals("")) {
                 scratchLocation = overrideScratchLocation;
             } else {

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
index 212426d..173552e 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/core/validator/impl/BatchQueueValidator.java
@@ -82,7 +82,7 @@ public class BatchQueueValidator implements JobMetadataValidator {
                 if (processModel == null) {
                     computeResource = appCatalog.getComputeResource().getComputeResource(experiment.getUserConfigurationData().getComputationalResourceScheduling().getResourceHostId());
                 } else {
-                    computeResource = appCatalog.getComputeResource().getComputeResource(processModel.getResourceSchedule().getResourceHostId());
+                    computeResource = appCatalog.getComputeResource().getComputeResource(processModel.getProcessResourceSchedule().getResourceHostId());
 
                 }
                 List<BatchQueue> batchQueues = computeResource.getBatchQueues();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
index 3e057cb..73a6aef 100644
--- a/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
+++ b/modules/orchestrator/orchestrator-core/src/main/java/org/apache/airavata/orchestrator/cpi/impl/SimpleOrchestratorImpl.java
@@ -275,7 +275,7 @@ public class SimpleOrchestratorImpl extends AbstractOrchestrator{
         try {
             ExperimentCatalog experimentCatalog = orchestratorContext.getRegistry().getExperimentCatalog();
             AppCatalog appCatalog = orchestratorContext.getRegistry().getAppCatalog();
-            ComputationalResourceSchedulingModel resourceSchedule = processModel.getResourceSchedule();
+            ComputationalResourceSchedulingModel resourceSchedule = processModel.getProcessResourceSchedule();
             String userGivenQueueName = resourceSchedule.getQueueName();
             int userGivenWallTime = resourceSchedule.getWallTimeLimit();
             String resourceHostId = resourceSchedule.getResourceHostId();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
----------------------------------------------------------------------
diff --git a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
index 1a6ac25..725a0b1 100644
--- a/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
+++ b/modules/orchestrator/orchestrator-service/src/main/java/org/apache/airavata/orchestrator/server/OrchestratorServerHandler.java
@@ -330,7 +330,7 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             ApplicationDeploymentDescription applicationDeploymentDescription = getAppDeployment(processModel, applicationId);
             processModel.setApplicationDeploymentId(applicationDeploymentDescription.getAppDeploymentId());
 			// set compute resource id to process model, default we set the same in the user preferred compute host id
-			processModel.setComputeResourceId(processModel.getResourceSchedule().getResourceHostId());
+			processModel.setComputeResourceId(processModel.getProcessResourceSchedule().getResourceHostId());
 			experimentCatalog.update(ExperimentCatalogModelType.PROCESS, processModel,processModel.getProcessId());
 		    return orchestrator.launchProcess(processModel, airavataCredStoreToken);
 		} catch (Exception e) {
@@ -353,8 +353,8 @@ public class OrchestratorServerHandler implements OrchestratorService.Iface {
             IllegalAccessException {
         Map<String, String> moduleIdFilter = new HashMap<String, String>();
         moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.APP_MODULE_ID, selectedModuleId);
-        if (processModel.getResourceSchedule() != null && processModel.getResourceSchedule().getResourceHostId() != null) {
-            moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, processModel.getResourceSchedule().getResourceHostId());
+        if (processModel.getProcessResourceSchedule() != null && processModel.getProcessResourceSchedule().getResourceHostId() != null) {
+            moduleIdFilter.put(AppCatAbstractResource.ApplicationDeploymentConstants.COMPUTE_HOST_ID, processModel.getProcessResourceSchedule().getResourceHostId());
         }
         List<ApplicationDeploymentDescription> applicationDeployements = appCatalog.getApplicationDeployment().getApplicationDeployements(moduleIdFilter);
         Map<ComputeResourceDescription, ApplicationDeploymentDescription> deploymentMap = new HashMap<ComputeResourceDescription, ApplicationDeploymentDescription>();

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
deleted file mode 100644
index e509b47..0000000
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/Main.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- *
- * 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.core;
-
-import org.apache.airavata.model.user.NSFDemographics;
-import org.apache.airavata.model.workspace.Gateway;
-import org.apache.airavata.model.workspace.GatewayApprovalStatus;
-import org.apache.airavata.model.workspace.Notification;
-import org.apache.airavata.registry.core.entities.workspacecatalog.GatewayEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.NotificationEntity;
-import org.apache.airavata.registry.core.entities.workspacecatalog.UserProfileEntity;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.GatewayRepository;
-import org.apache.airavata.registry.core.repositories.workspacecatalog.NotificationRepository;
-import org.apache.airavata.registry.core.utils.JPAUtils;
-import org.apache.airavata.registry.core.utils.ObjectMapperSingleton;
-import org.dozer.Mapper;
-
-import java.io.IOException;
-import java.util.UUID;
-
-public class Main {
-
-    public static void main(String[] args) throws IOException {
-        org.apache.airavata.model.user.UserProfile userProfile = new org.apache.airavata.model.user.UserProfile();
-        userProfile.setAiravataInternalUserId("I don't know");
-        NSFDemographics nsfDemographics = new NSFDemographics();
-        nsfDemographics.setGender("sdfsf");
-        userProfile.setNsfDemographics(nsfDemographics);
-
-        Mapper mapper = ObjectMapperSingleton.getInstance();
-        UserProfileEntity destObject =
-                mapper.map(userProfile, UserProfileEntity.class);
-
-        System.out.println(destObject.getNsfDemographics().getGender());
-
-        userProfile = mapper.map(destObject, org.apache.airavata.model.user.UserProfile.class);
-        System.out.println(userProfile.getNsfDemographics().getGender());
-
-        JPAUtils.getEntityManager();
-
-        Gateway gateway = new Gateway();
-        gateway.setGatewayApprovalStatus(GatewayApprovalStatus.ACTIVE);
-        gateway.setGatewayId("test.com" + System.currentTimeMillis());
-        gateway.setDomain("test.com");
-
-        GatewayRepository gatewayRepository = new GatewayRepository(Gateway.class, GatewayEntity.class);
-        gateway = gatewayRepository.create(gateway);
-        System.out.println(gateway.getGatewayId());
-
-        Notification notification = new Notification();
-        notification.setNotificationId(UUID.randomUUID().toString());
-        notification.setGatewayId(gateway.getGatewayId());
-
-        NotificationRepository notificationRepository = new NotificationRepository(Notification.class, NotificationEntity.class);
-        notificationRepository.create(notification);
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
index 796253f..a0686f8 100644
--- a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ExperimentEntity.java
@@ -47,6 +47,8 @@ public class ExperimentEntity {
 
     private UserConfigurationEntity userConfigurationData;
 
+    private List<ProcessEntity> processes;
+
     @Id
     @Column(name = "EXPERIMENT_ID")
     public String getExperimentId() {
@@ -210,4 +212,13 @@ public class ExperimentEntity {
     public void setExperimentStatuses(List<ExperimentStatusEntity> experimentStatuses) {
         this.experimentStatuses = experimentStatuses;
     }
+
+    @OneToMany(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, mappedBy = "experiment")
+    public List<ProcessEntity> getProcesses() {
+        return processes;
+    }
+
+    public void setProcesses(List<ProcessEntity> processes) {
+        this.processes = processes;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
new file mode 100644
index 0000000..d7c6cca
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessEntity.java
@@ -0,0 +1,266 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "PROCESS")
+public class ProcessEntity {
+    private String processId;
+    private String experimentId;
+    private long creationTime;
+    private long lastUpdateTime;
+    private String processDetail;
+    private String applicationInterfaceId;
+    private String applicationDeploymentId;
+    private String computeResourceId;
+    private String taskDag;
+    private String gatewayExecutionId;
+    private boolean enableEmailNotification;
+    private List<String> emailAddresses;
+    private String storageResourceId;
+    private String userDn;
+    private boolean generateCert;
+    private String experimentDataDir;
+    private String userName;
+
+    private List<ProcessStatusEntity> processStatus;
+    private List<ProcessErrorEntity> processError;
+    private List<ProcessInputEntity> processInputs;
+    private List<ProcessOutputEntity> processOutputs;
+    private ProcessResourceSchedulingEntity processResourceSchedule;
+
+    private ExperimentEntity experiment;
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "EXPERIMENT_ID")
+    public String getExperimentId() {
+        return experimentId;
+    }
+
+    public void setExperimentId(String experimentId) {
+        this.experimentId = experimentId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "LAST_UPDATE_TIME")
+    public long getLastUpdateTime() {
+        return lastUpdateTime;
+    }
+
+    public void setLastUpdateTime(long lastUpdateTime) {
+        this.lastUpdateTime = lastUpdateTime;
+    }
+
+    @Column(name = "PROCESS_DETAIL")
+    public String getProcessDetail() {
+        return processDetail;
+    }
+
+    public void setProcessDetail(String processDetail) {
+        this.processDetail = processDetail;
+    }
+
+    @Column(name = "APPLICATION_INTERFACE_ID")
+    public String getApplicationInterfaceId() {
+        return applicationInterfaceId;
+    }
+
+    public void setApplicationInterfaceId(String applicationInterfaceId) {
+        this.applicationInterfaceId = applicationInterfaceId;
+    }
+
+    @Column(name = "APPLICATION_DEPLOYMENT_ID")
+    public String getApplicationDeploymentId() {
+        return applicationDeploymentId;
+    }
+
+    public void setApplicationDeploymentId(String applicationDeploymentId) {
+        this.applicationDeploymentId = applicationDeploymentId;
+    }
+
+
+    @Column(name = "COMPUTE_RESOURCE_ID")
+    public String getComputeResourceId() {
+        return computeResourceId;
+    }
+
+    public void setComputeResourceId(String computeResourceId) {
+        this.computeResourceId = computeResourceId;
+    }
+
+    @Column(name = "TASK_DAG")
+    public String getTaskDag() {
+        return taskDag;
+    }
+
+    public void setTaskDag(String taskDag) {
+        this.taskDag = taskDag;
+    }
+
+    @Column(name = "GATEWAY_EXECUTION_ID")
+    public String getGatewayExecutionId() {
+        return gatewayExecutionId;
+    }
+
+    public void setGatewayExecutionId(String gatewayExecutionId) {
+        this.gatewayExecutionId = gatewayExecutionId;
+    }
+
+    @Column(name = "ENABLE_EMAIL_NOTIFICATION")
+    public boolean isEnableEmailNotification() {
+        return enableEmailNotification;
+    }
+
+    public void setEnableEmailNotification(boolean enableEmailNotification) {
+        this.enableEmailNotification = enableEmailNotification;
+    }
+
+    @ElementCollection
+    @CollectionTable(name="PROCESS_EMAIL", joinColumns = @JoinColumn(name="PROCESS_ID"))
+    public List<String> getEmailAddresses() {
+        return emailAddresses;
+    }
+
+    public void setEmailAddresses(List<String> emailAddresses) {
+        this.emailAddresses = emailAddresses;
+    }
+
+    @Column(name = "STORAGE_RESOURCE_ID")
+    public String getStorageResourceId() {
+        return storageResourceId;
+    }
+
+    public void setStorageResourceId(String storageResourceId) {
+        this.storageResourceId = storageResourceId;
+    }
+
+    @Column(name = "USER_DN")
+    public String getUserDn() {
+        return userDn;
+    }
+
+    public void setUserDn(String userDn) {
+        this.userDn = userDn;
+    }
+
+    @Column(name = "GENERATE_CERT")
+    public boolean isGenerateCert() {
+        return generateCert;
+    }
+
+    public void setGenerateCert(boolean generateCert) {
+        this.generateCert = generateCert;
+    }
+
+    @Column(name = "EXPERIMENT_DATA_DIR")
+    public String getExperimentDataDir() {
+        return experimentDataDir;
+    }
+
+    public void setExperimentDataDir(String experimentDataDir) {
+        this.experimentDataDir = experimentDataDir;
+    }
+
+    @Column(name = "USER_NAME")
+    public String getUserName() {
+        return userName;
+    }
+
+    public void setUserName(String userName) {
+        this.userName = userName;
+    }
+
+    @OneToMany(targetEntity = ProcessStatusEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessStatusEntity> getProcessStatus() {
+        return processStatus;
+    }
+
+    public void setProcessStatus(List<ProcessStatusEntity> processStatus) {
+        this.processStatus = processStatus;
+    }
+
+    @OneToMany(targetEntity = ProcessErrorEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessErrorEntity> getProcessError() {
+        return processError;
+    }
+
+    public void setProcessError(List<ProcessErrorEntity> processError) {
+        this.processError = processError;
+    }
+
+    @OneToMany(targetEntity = ProcessInputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessInputEntity> getProcessInputs() {
+        return processInputs;
+    }
+
+    public void setProcessInputs(List<ProcessInputEntity> processInputs) {
+        this.processInputs = processInputs;
+    }
+
+    @OneToMany(targetEntity = ProcessOutputEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public List<ProcessOutputEntity> getProcessOutputs() {
+        return processOutputs;
+    }
+
+    public void setProcessOutputs(List<ProcessOutputEntity> processOutputs) {
+        this.processOutputs = processOutputs;
+    }
+
+    @OneToOne(targetEntity = ProcessResourceSchedulingEntity.class, cascade = CascadeType.ALL, mappedBy = "process")
+    public ProcessResourceSchedulingEntity getProcessResourceSchedule() {
+        return processResourceSchedule;
+    }
+
+    public void setProcessResourceSchedule(ProcessResourceSchedulingEntity proceeResourceSchedule) {
+        this.processResourceSchedule = proceeResourceSchedule;
+    }
+
+    @ManyToOne(targetEntity = ExperimentEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "EXPERIMENT_ID", referencedColumnName = "EXPERIMENT_ID")
+    public ExperimentEntity getExperiment() {
+        return experiment;
+    }
+
+    public void setExperiment(ExperimentEntity experiment) {
+        this.experiment = experiment;
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/171c0425/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
----------------------------------------------------------------------
diff --git a/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
new file mode 100644
index 0000000..bae331f
--- /dev/null
+++ b/modules/registry-refactoring/src/main/java/org/apache/airavata/registry/core/entities/expcatalog/ProcessErrorEntity.java
@@ -0,0 +1,118 @@
+/*
+ *
+ * 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.core.entities.expcatalog;
+
+import javax.persistence.*;
+import java.util.List;
+
+@Entity
+@Table(name = "PROCESS_ERROR")
+@IdClass(ProcessErrorPK.class)
+public class ProcessErrorEntity {
+    private String errorId;
+    private String processId;
+    private long creationTime;
+    private String actualErrorMessage;
+    private String userFriendlyMessage;
+    private boolean transientOrPersistent;
+    private List<String> rootCauseErrorIdList;
+
+    private ProcessEntity process;
+
+    @Id
+    @Column(name = "ERROR_ID")
+    public String getErrorId() {
+        return errorId;
+    }
+
+    public void setErrorId(String errorId) {
+        this.errorId = errorId;
+    }
+
+    @Id
+    @Column(name = "PROCESS_ID")
+    public String getProcessId() {
+        return processId;
+    }
+
+    public void setProcessId(String processId) {
+        this.processId = processId;
+    }
+
+    @Column(name = "CREATION_TIME")
+    public long getCreationTime() {
+        return creationTime;
+    }
+
+    public void setCreationTime(long creationTime) {
+        this.creationTime = creationTime;
+    }
+
+    @Column(name = "ACTUAL_ERROR_MESSAGE")
+    public String getActualErrorMessage() {
+        return actualErrorMessage;
+    }
+
+    public void setActualErrorMessage(String actualErrorMessage) {
+        this.actualErrorMessage = actualErrorMessage;
+    }
+
+    @Column(name = "USER_FRIENDLY_MESSAGE")
+    public String getUserFriendlyMessage() {
+        return userFriendlyMessage;
+    }
+
+    public void setUserFriendlyMessage(String userFriendlyMessage) {
+        this.userFriendlyMessage = userFriendlyMessage;
+    }
+
+
+    @Column(name = "TRANSIENT_OR_PERSISTENT")
+    public boolean isTransientOrPersistent() {
+        return transientOrPersistent;
+    }
+
+    public void setTransientOrPersistent(boolean transientOrPersistent) {
+        this.transientOrPersistent = transientOrPersistent;
+    }
+
+
+    @ElementCollection
+    @CollectionTable(name="EXPERIMENT_ERROR_ROOT_CAUSE_ERROR_ID", joinColumns = @JoinColumn(name="ERROR_ID"))
+    public List<String> getRootCauseErrorIdList() {
+        return rootCauseErrorIdList;
+    }
+
+    public void setRootCauseErrorIdList(List<String> rootCauseErrorIdList) {
+        this.rootCauseErrorIdList = rootCauseErrorIdList;
+    }
+
+
+    @ManyToOne(targetEntity = ProcessEntity.class, cascade = CascadeType.ALL, fetch = FetchType.LAZY)
+    @JoinColumn(name = "PROCESS_ID", referencedColumnName = "PROCESS_ID")
+    public ProcessEntity getProcess() {
+        return process;
+    }
+
+    public void setProcess(ProcessEntity process) {
+        this.process = process;
+    }
+}
\ No newline at end of file