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 2015/06/25 23:44:35 UTC

[2/2] airavata git commit: Finishing some of the todo's in ExperimentRegistry.java

Finishing some of the todo's in ExperimentRegistry.java


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

Branch: refs/heads/master
Commit: 6caf4787132b8c2108773d629a8d8f5f1334e85a
Parents: dce0271
Author: Supun Nakandala <sc...@apache.org>
Authored: Fri Jun 26 03:13:35 2015 +0530
Committer: Supun Nakandala <sc...@apache.org>
Committed: Fri Jun 26 03:13:35 2015 +0530

----------------------------------------------------------------------
 .../catalog/impl/ExperimentCatalogImpl.java     |   2 +-
 .../catalog/impl/ExperimentRegistry.java        | 197 ++++++++++++-------
 .../catalog/resources/TaskResource.java         |  27 ++-
 .../src/main/resources/expcatalog-derby.sql     |   2 +-
 .../src/main/resources/expcatalog-mysql.sql     |   2 +-
 .../src/test/resources/expcatalog-derby.sql     |   2 +-
 .../airavata/registry/cpi/utils/Constants.java  |  13 ++
 7 files changed, 164 insertions(+), 81 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
index f9648ff..013b79e 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/impl/ExperimentCatalogImpl.java
@@ -333,7 +333,7 @@ public class ExperimentCatalogImpl implements ExperimentCatalog {
                 case PROCESS:
                     return experimentRegistry.getProcess((String) identifier, null);
                 case PROCESS_RESOURCE_SCHEDULE:
-                    return experimentRegistry.getProcessResourceSchedule((String) identifier, null);
+                    return experimentRegistry.getProcessResourceSchedule((String) identifier);
                 case PROCESS_INPUT:
                     return experimentRegistry.getProcessInputs((String) identifier);
                 case PROCESS_OUTPUT:

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/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 69e3409..0d5e9c5 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
@@ -407,7 +407,8 @@ public class ExperimentRegistry {
     public String addTask(TaskModel task, String processID) throws RegistryException {
         try {
             TaskResource taskResource = new TaskResource();
-            taskResource.setParentProcessId(getProcessID(processID));
+            taskResource.setTaskId(getTaskID(processID));
+            taskResource.setParentProcessId(task.getParentProcessId());
             taskResource.setTaskType(task.getTaskType().toString());
             taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime()));
             taskResource.setLastUpdateTime(AiravataUtils.getTime(task.getLastUpdateTime()));
@@ -806,6 +807,7 @@ public class ExperimentRegistry {
         try {
             ProcessResource processResource = new ProcessResource();
             TaskResource taskResource = processResource.getTask(taskID);
+            taskResource.setTaskId(task.getTaskId());
             taskResource.setParentProcessId(task.getParentProcessId());
             taskResource.setTaskType(task.getTaskType().toString());
             taskResource.setCreationTime(AiravataUtils.getTime(task.getCreationTime()));
@@ -841,7 +843,7 @@ public class ExperimentRegistry {
         try {
             TaskResource taskResource = new TaskResource();
             taskResource.setTaskId(taskId);
-            JobResource jobResource = taskResource.getJob(taskId, jobId);
+            JobResource jobResource = taskResource.getJob(jobId);
             jobResource.setJobId(jobId);
             jobResource.setTaskId(job.getTaskId());
             jobResource.setJobDescription(job.getJobDescription());
@@ -865,7 +867,6 @@ public class ExperimentRegistry {
     }
 
 
-    //TODO
     public void updateExperimentField(String expID, String fieldName, Object value) throws RegistryException {
         try {
             ExperimentResource experiment = gatewayResource.getExperiment(expID);
@@ -934,20 +935,6 @@ public class ExperimentRegistry {
             ExperimentResource resource = gatewayResource.getExperiment(expId);
             if (fieldName == null) {
                 return ThriftDataModelConversion.getExperiment(resource);
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_NAME)) {
-                return resource.getUserName();
-            }else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_ID)) {
-                return resource.getGatewayId();
-            }else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.GATEWAY_EXECUTION_ID)) {
-                return resource.getGatewayExecutionId();
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_NAME)) {
-                return resource.getExperimentName();
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.DESCRIPTION)) {
-                return resource.getDescription();
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXECUTION_ID)) {
-                return resource.getExecutionId();
-            } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.PROJECT_ID)) {
-                return resource.getProjectId();
             } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_INPUTS)) {
                 return ThriftDataModelConversion.getExpInputs(resource.getExperimentInputs());
             } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.EXPERIMENT_OUTPUTS)) {
@@ -959,7 +946,7 @@ public class ExperimentRegistry {
             } else if (fieldName.equals(Constants.FieldConstants.ExperimentConstants.USER_CONFIGURATION_DATA)) {
                 return ThriftDataModelConversion.getUserConfigData(resource.getUserConfigurationDataResource());
             } else {
-                logger.error("Unsupported field name for experiment basic data..");
+                logger.error("Unsupported field name for experiment data..");
             }
         } catch (Exception e) {
             logger.error("Error while getting experiment info...", e);
@@ -990,12 +977,6 @@ public class ExperimentRegistry {
             UserConfigurationDataResource userConfigData = resource.getUserConfigurationDataResource();
             if (fieldName == null) {
                 return ThriftDataModelConversion.getUserConfigData(userConfigData);
-            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.AIRAVATA_AUTO_SCHEDULE)) {
-                return userConfigData.getAiravataAutoSchedule();
-            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.OVERRIDE_MANUAL_PARAMS)) {
-                return userConfigData.getOverrideManualScheduledParams();
-            } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.SHARE_EXP)) {
-                return userConfigData.getShareExperimentPublically();
             } else if (fieldName.equals(Constants.FieldConstants.UserConfigurationDataConstants.COMPUTATIONAL_RESOURCE_SCHEDULING)){
                 return ThriftDataModelConversion.getComputationalResourceScheduling(userConfigData);
             } else {
@@ -1008,15 +989,24 @@ public class ExperimentRegistry {
         return null;
     }
 
-    //Todo
     public Object getProcess(String processId, String fieldName) throws RegistryException {
         try {
             ExperimentResource experimentResource = new ExperimentResource();
             ProcessResource resource = experimentResource.getProcess(processId);
             if (fieldName == null) {
                 return ThriftDataModelConversion.getProcesModel(resource);
+            } else if (fieldName.equals(Constants.FieldConstants.ProcessConstants.PROCESS_ERROR)) {
+                return ThriftDataModelConversion.getErrorModel(resource.getProcessError());
+            } else if (fieldName.equals(Constants.FieldConstants.ProcessConstants.PROCESS_STATUS)) {
+                return ThriftDataModelConversion.getProcessStatus(resource.getProcessStatus());
+            } else if (fieldName.equals(Constants.FieldConstants.ProcessConstants.PROCESS_INPUTS)) {
+                return ThriftDataModelConversion.getProcessInputs(resource.getProcessInputs());
+            } else if (fieldName.equals(Constants.FieldConstants.ProcessConstants.PROCESS_OUTPUTS)) {
+                return ThriftDataModelConversion.getErrorModel(resource.getProcessOutputs());
+            } else if (fieldName.equals(Constants.FieldConstants.ProcessConstants.PROCESS_RESOURCE_SCHEDULE)) {
+                return ThriftDataModelConversion.getProcessResourceSchedule(resource.getProcessResourceSchedule());
             } else {
-                logger.error("Unsupported field name for process basic data..");
+                logger.error("Unsupported field name for process data..");
             }
         }catch (Exception e) {
             logger.error("Error while getting process data..", e);
@@ -1025,24 +1015,24 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public Object getProcessError(String identifier) {
-        return null;
+    public Object getProcessError(String processId) throws RegistryException {
+        return getProcess(processId, Constants.FieldConstants.ProcessConstants.PROCESS_ERROR);
     }
 
-    public Object getProcessStatus(String identifier) {
-        return null;
+    public Object getProcessStatus(String processId) throws RegistryException {
+        return getProcess(processId, Constants.FieldConstants.ProcessConstants.PROCESS_STATUS);
     }
 
-    public Object getProcessInputs(String identifier) {
-        return null;
+    public Object getProcessInputs(String processId) throws RegistryException {
+        return getProcess(processId, Constants.FieldConstants.ProcessConstants.PROCESS_INPUTS);
     }
 
-    public Object getProcessOutputs(String identifier) {
-        return null;
+    public Object getProcessOutputs(String processId) throws RegistryException {
+        return getProcess(processId, Constants.FieldConstants.ProcessConstants.PROCESS_OUTPUTS);
     }
 
-    public Object getProcessResourceSchedule(String identifier, Object o) {
-        return null;
+    public Object getProcessResourceSchedule(String processId) throws RegistryException {
+        return getProcess(processId, Constants.FieldConstants.ProcessConstants.PROCESS_RESOURCE_SCHEDULE);
     }
 
     public Object getTask(String taskId, String fieldName) throws RegistryException {
@@ -1051,8 +1041,12 @@ public class ExperimentRegistry {
             TaskResource resource = processResource.getTask(taskId);
             if (fieldName == null) {
                 return ThriftDataModelConversion.getTaskModel(resource);
+            } else if (fieldName.equals(Constants.FieldConstants.TaskConstants.TASK_ERROR)) {
+                return ThriftDataModelConversion.getErrorModel(resource.getTaskError());
+            } else if (fieldName.equals(Constants.FieldConstants.TaskConstants.TASK_STATUS)) {
+                return ThriftDataModelConversion.getTaskStatus(resource.getTaskStatus());
             } else {
-                logger.error("Unsupported field name for task basic data..");
+                logger.error("Unsupported field name for task data..");
             }
         }catch (Exception e) {
             logger.error("Error while getting task data..", e);
@@ -1061,12 +1055,12 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public Object getTaskError(String identifier) {
-        return null;
+    public Object getTaskError(String taskId) throws RegistryException {
+        return getTask(taskId, Constants.FieldConstants.TaskConstants.TASK_ERROR);
     }
 
-    public Object getTaskStatus(String identifier) {
-        return null;
+    public Object getTaskStatus(String taskId) throws RegistryException {
+        return getTask(taskId, Constants.FieldConstants.TaskConstants.TASK_STATUS);
     }
 
     public Object getJob(CompositeIdentifier cis, String fieldName) throws RegistryException {
@@ -1075,9 +1069,11 @@ public class ExperimentRegistry {
         try {
             TaskResource taskResource = new TaskResource();
             taskResource.setTaskId(taskID);
-            JobResource resource = taskResource.getJob(taskID, jobId);
+            JobResource resource = taskResource.getJob(jobId);
             if (fieldName == null) {
                 return ThriftDataModelConversion.getJobModel(resource);
+            } else if (fieldName.equals(Constants.FieldConstants.JobConstants.JOB_STATUS)) {
+                return ThriftDataModelConversion.getJobStatus(resource.getJobStatus());
             } else {
                 logger.error("Unsupported field name for job basic data..");
             }
@@ -1088,8 +1084,8 @@ public class ExperimentRegistry {
         return null;
     }
 
-    public Object getJobStatus(CompositeIdentifier cis) {
-        return null;
+    public Object getJobStatus(CompositeIdentifier cis) throws RegistryException {
+        return getJob(cis, Constants.FieldConstants.JobConstants.JOB_STATUS);
     }
 
 
@@ -1130,17 +1126,70 @@ public class ExperimentRegistry {
         return experiments;
     }
 
-    //Todo
-    public List<ProcessModel> getProcessList(String fieldName, Object value) {
-        return null;
+    public List<ProcessModel> getProcessList(String fieldName, Object value) throws RegistryException {
+        List<ProcessModel> processes = new ArrayList<ProcessModel>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.ProcessConstants.EXPERIMENT_ID)) {
+                ExperimentResource experimentResource = new ExperimentResource();
+                experimentResource.setExperimentId((String) value);
+                List<ProcessResource> resources = experimentResource.getProcessList();
+                for (ProcessResource processResource : resources) {
+                    ProcessModel processModel = ThriftDataModelConversion.getProcesModel(processResource);
+                    processes.add(processModel);
+                }
+                return processes;
+            } else {
+                logger.error("Unsupported field name to retrieve process list...");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting process list...", e);
+            throw new RegistryException(e);
+        }
+        return processes;
     }
 
-    public List<TaskModel> getTaskList(String fieldName, Object value) {
-        return null;
+    public List<TaskModel> getTaskList(String fieldName, Object value) throws RegistryException {
+        List<TaskModel> tasks = new ArrayList<TaskModel>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.TaskConstants.PARENT_PROCESS_ID)) {
+                ProcessResource processResource = new ProcessResource();
+                processResource.setProcessId((String) value);
+                List<TaskResource> resources = processResource.getTaskList();
+                for (TaskResource taskResource : resources) {
+                    TaskModel taskModel = ThriftDataModelConversion.getTaskModel(taskResource);
+                    tasks.add(taskModel);
+                }
+                return tasks;
+            } else {
+                logger.error("Unsupported field name to retrieve task list...");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting task list...", e);
+            throw new RegistryException(e);
+        }
+        return tasks;
     }
 
-    public List<JobModel> getJobList(String fieldName, Object value) {
-        return null;
+    public List<JobModel> getJobList(String fieldName, Object value) throws RegistryException {
+        List<JobModel> jobs = new ArrayList<JobModel>();
+        try {
+            if (fieldName.equals(Constants.FieldConstants.JobConstants.TASK_ID)) {
+                TaskResource taskResource = new TaskResource();
+                taskResource.setTaskId((String) value);
+                List<JobResource> resources = taskResource.getJobList();
+                for (JobResource jobResource : resources) {
+                    JobModel jobModel = ThriftDataModelConversion.getJobModel(jobResource);
+                    jobs.add(jobModel);
+                }
+                return jobs;
+            } else {
+                logger.error("Unsupported field name to retrieve job list...");
+            }
+        } catch (Exception e) {
+            logger.error("Error while getting job list...", e);
+            throw new RegistryException(e);
+        }
+        return jobs;
     }
 
     public List<ExperimentModel> getExperimentList(String fieldName, Object value, int limit, int offset,
@@ -1481,11 +1530,6 @@ public class ExperimentRegistry {
         return taskId + "_" + UUID.randomUUID();
     }
 
-    public String getJobID(String taskId) {
-        String jobId = taskId.replaceAll("\\s", "");
-        return jobId + "_" + UUID.randomUUID();
-    }
-
     public String getStatusID(String parentId) {
         String status = parentId.replaceAll("\\s", "");
         return status + "_" + UUID.randomUUID();
@@ -1542,37 +1586,40 @@ public class ExperimentRegistry {
             if (nextState == null) {
                 return false;
             }
-            //TODO
-            switch (oldState) {
-                case CREATED:
-                    return true;
-                default:
-                    return false;
-            }
+            return true;
+//            TODO - need the state machine to complete these data
+//            switch (oldState) {
+//                case CREATED:
+//                    return true;
+//                default:
+//                    return false;
+//            }
         } else if (object1 instanceof TaskState && object2 instanceof TaskState) {
             TaskState oldState = (TaskState) object1;
             TaskState nextState = (TaskState) object2;
             if (nextState == null) {
                 return false;
             }
-            //TODO
-            switch (oldState) {
-                case CREATED:
-                    return true;
-                default:
-                    return false;
-            }
+            return true;
+//            TODO - need the state machine to complete these data
+//            switch (oldState) {
+//                case CREATED:
+//                    return true;
+//                default:
+//                    return false;
+//            }
         }else if (object1 instanceof JobState && object2 instanceof JobState) {
             JobState oldState = (JobState) object1;
             JobState nextState = (JobState) object2;
             if (nextState == null) {
                 return false;
             }
-            //TODO
-            switch (oldState) {
-                default:
-                    return false;
-            }
+            return true;
+//            TODO - need the state machine to complete these data
+//            switch (oldState) {
+//                default:
+//                    return false;
+//            }
         }
         return false;
     }

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
index 5d69bc1..f0e5dec 100644
--- a/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
+++ b/modules/registry/registry-core/src/main/java/org/apache/airavata/registry/core/experiment/catalog/resources/TaskResource.java
@@ -269,6 +269,20 @@ public class TaskResource extends AbstractExpCatResource {
                         }
                     }
                     break;
+                case JOB:
+                    generator = new QueryGenerator(JOB);
+                    generator.setParameter(JobConstants.TASK_ID, taskId);
+                    q = generator.selectQuery(em);
+                    results = q.getResultList();
+                    if (results.size() != 0) {
+                        for (Object result : results) {
+                            Job job = (Job) result;
+                            JobResource jobResource =
+                                    (JobResource) Utils.getResource(ResourceType.JOB, job);
+                            resourceList.add(jobResource);
+                        }
+                    }
+                    break;
                 default:
                     em.getTransaction().commit();
                     em.close();
@@ -374,8 +388,17 @@ public class TaskResource extends AbstractExpCatResource {
         }
     }
 
-    public JobResource getJob(String taskId, String jobId) throws RegistryException {
-        this.taskId = taskId;
+    public JobResource getJob(String jobId) throws RegistryException {
         return (JobResource) get(ResourceType.JOB, jobId);
     }
+
+    public List<JobResource> getJobList() throws RegistryException {
+        List<JobResource> jobResources = new ArrayList();
+        List<ExperimentCatResource> resources = get(ResourceType.JOB);
+        for (ExperimentCatResource resource : resources) {
+            JobResource jobResource = (JobResource) resource;
+            jobResources.add(jobResource);
+        }
+        return jobResources;
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
index 22c047b..2f49394 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-derby.sql
@@ -317,7 +317,7 @@ CREATE TABLE JOB_STATUS (
   TIME_OF_STATE_CHANGE  timestamp DEFAULT '0000-00-00 00:00:00',
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
-  FOREIGN KEY (JOB_ID) REFERENCES JOB(JOB_ID) ON DELETE CASCADE
+  FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE CONFIGURATION

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
index b056482..f9bafae 100644
--- a/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
+++ b/modules/registry/registry-core/src/main/resources/expcatalog-mysql.sql
@@ -319,7 +319,7 @@ CREATE TABLE JOB_STATUS (
   TIME_OF_STATE_CHANGE timestamp DEFAULT '0000-00-00 00:00:00' ON UPDATE CURRENT_TIMESTAMP,
   REASON LONGTEXT,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
-  FOREIGN KEY (JOB_ID) REFERENCES JOB(JOB_ID) ON DELETE CASCADE
+  FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
 );
 
 

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql
----------------------------------------------------------------------
diff --git a/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql b/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql
index 22c047b..2f49394 100644
--- a/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql
+++ b/modules/registry/registry-core/src/test/resources/expcatalog-derby.sql
@@ -317,7 +317,7 @@ CREATE TABLE JOB_STATUS (
   TIME_OF_STATE_CHANGE  timestamp DEFAULT '0000-00-00 00:00:00',
   REASON CLOB,
   PRIMARY KEY (STATUS_ID, JOB_ID, TASK_ID),
-  FOREIGN KEY (JOB_ID) REFERENCES JOB(JOB_ID) ON DELETE CASCADE
+  FOREIGN KEY (JOB_ID, TASK_ID) REFERENCES JOB(JOB_ID, TASK_ID) ON DELETE CASCADE
 );
 
 CREATE TABLE CONFIGURATION

http://git-wip-us.apache.org/repos/asf/airavata/blob/6caf4787/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
----------------------------------------------------------------------
diff --git a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
index e466f21..ab56285 100644
--- a/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
+++ b/modules/registry/registry-cpi/src/main/java/org/apache/airavata/registry/cpi/utils/Constants.java
@@ -65,11 +65,24 @@ public class Constants {
         public final class ProcessConstants {
             public static final String EXPERIMENT_ID = "experimentId";
             public static final String PROCESS_ID = "processId";
+            public static final String PROCESS_STATUS = "processStatus";
+            public static final String PROCESS_ERROR = "processError";
+            public static final String PROCESS_INPUTS = "processInputs";
+            public static final String PROCESS_OUTPUTS = "processOutputs";
+            public static final String PROCESS_RESOURCE_SCHEDULE = "processResourceSchedule";
         }
 
         public final class TaskConstants {
             public static final String PARENT_PROCESS_ID = "parentProcessId";
             public static final String TASK_ID = "taskId";
+            public static final String TASK_STATUS = "taskStatus";
+            public static final String TASK_ERROR = "taskError";
+        }
+
+        public final class JobConstants {
+            public static final String JOB_ID = "jobId";
+            public static final String TASK_ID = "taskId";
+            public static final String JOB_STATUS = "taskStatus";
         }
     }
 }