airavata-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From shame...@apache.org
Subject [1/6] airavata git commit: Fixed some compilation issues with workflow-core model
Date Mon, 01 Feb 2016 17:30:19 GMT
Repository: airavata
Updated Branches:
  refs/heads/develop b5d568d7d -> 97f4ba925


Fixed some compilation issues with workflow-core model


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

Branch: refs/heads/develop
Commit: b65079a75e8a67d4c48832bcd7a168a0aa3b7d99
Parents: b5d568d
Author: Shameera Rathnayaka <shameerainfo@gmail.com>
Authored: Mon Feb 1 12:01:48 2016 -0500
Committer: Shameera Rathnayaka <shameerainfo@gmail.com>
Committed: Mon Feb 1 12:01:48 2016 -0500

----------------------------------------------------------------------
 .../airavata/workflow/core/ProcessContext.java  |  62 -----------
 .../core/SimpleWorkflowInterpreter.java         | 111 +++++++++----------
 .../airavata/workflow/core/WorkflowContext.java |  60 ++++++++++
 .../workflow/core/WorkflowEnactmentService.java |  22 ++--
 .../core/parser/JsonWorkflowParser.java         |  21 ++++
 5 files changed, 140 insertions(+), 136 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
deleted file mode 100644
index cf78f9e..0000000
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/ProcessContext.java
+++ /dev/null
@@ -1,62 +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.workflow.core;
-
-import org.apache.airavata.model.experiment.TaskDetails;
-import org.apache.airavata.model.experiment.WorkflowNodeDetails;
-import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
-
-public class ProcessContext {
-    private WorkflowNode workflowNode;
-    private WorkflowNodeDetails wfNodeDetails;
-    private TaskDetails taskDetails;
-
-    public ProcessContext(WorkflowNode workflowNode, WorkflowNodeDetails wfNodeDetails, TaskDetails
taskDetails) {
-        this.workflowNode = workflowNode;
-        this.wfNodeDetails = wfNodeDetails;
-        this.taskDetails = taskDetails;
-    }
-
-    public WorkflowNode getWorkflowNode() {
-        return workflowNode;
-    }
-
-    public void setWorkflowNode(WorkflowNode workflowNode) {
-        this.workflowNode = workflowNode;
-    }
-
-    public WorkflowNodeDetails getWfNodeDetails() {
-        return wfNodeDetails;
-    }
-
-    public void setWfNodeDetails(WorkflowNodeDetails wfNodeDetails) {
-        this.wfNodeDetails = wfNodeDetails;
-    }
-
-    public TaskDetails getTaskDetails() {
-        return taskDetails;
-    }
-
-    public void setTaskDetails(TaskDetails taskDetails) {
-        this.taskDetails = taskDetails;
-    }
-}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
index 5d00354..defbad4 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/SimpleWorkflowInterpreter.java
@@ -24,23 +24,15 @@ package org.apache.airavata.workflow.core;
 import org.apache.airavata.common.exception.AiravataException;
 import org.apache.airavata.common.utils.AiravataUtils;
 import org.apache.airavata.messaging.core.MessageContext;
-import org.apache.airavata.messaging.core.impl.RabbitMQProcessPublisher;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
-import org.apache.airavata.model.appcatalog.appinterface.OutputDataObjectType;
-import org.apache.airavata.model.messaging.event.MessageType;
-import org.apache.airavata.model.messaging.event.ProcessSubmitEvent;
-import org.apache.airavata.model.messaging.event.TaskIdentifier;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
-import org.apache.airavata.model.util.ExperimentModelUtil;
-import org.apache.airavata.model.experiment.ExecutionUnit;
+import org.apache.airavata.model.application.io.OutputDataObjectType;
 import org.apache.airavata.model.experiment.ExperimentModel;
-import org.apache.airavata.model.experiment.TaskDetails;
-import org.apache.airavata.model.experiment.TaskState;
-import org.apache.airavata.model.experiment.WorkflowNodeDetails;
-import org.apache.airavata.model.experiment.WorkflowNodeState;
-import org.apache.airavata.model.experiment.WorkflowNodeStatus;
+import org.apache.airavata.model.messaging.event.*;
+import org.apache.airavata.model.status.ProcessState;
+import org.apache.airavata.model.util.ExperimentModelUtil;
 import org.apache.airavata.registry.core.experiment.catalog.impl.RegistryFactory;
+import org.apache.airavata.registry.core.experiment.catalog.model.Experiment;
 import org.apache.airavata.registry.cpi.*;
 import org.apache.airavata.workflow.core.dag.edge.Edge;
 import org.apache.airavata.workflow.core.dag.nodes.ApplicationNode;
@@ -69,7 +61,7 @@ class SimpleWorkflowInterpreter{
     private static final Logger log = LoggerFactory.getLogger(SimpleWorkflowInterpreter.class);
     private List<WorkflowInputNode> workflowInputNodes;
 
-    private Experiment experiment;
+    private ExperimentModel experiment;
 
     private String credentialToken;
 
@@ -77,23 +69,23 @@ class SimpleWorkflowInterpreter{
 
     private Map<String, WorkflowNode> readyList = new ConcurrentHashMap<String,
WorkflowNode>();
     private Map<String, WorkflowNode> waitingList = new ConcurrentHashMap<String,
WorkflowNode>();
-    private Map<String, ProcessContext> processingQueue = new ConcurrentHashMap<String,
ProcessContext>();
-    private Map<String, ProcessContext> completeList = new HashMap<String, ProcessContext>();
+    private Map<String, WorkflowContext> processingQueue = new ConcurrentHashMap<String,
WorkflowContext>();
+    private Map<String, WorkflowContext> completeList = new HashMap<String, WorkflowContext>();
     private Registry registry;
     private List<WorkflowOutputNode> completeWorkflowOutputs = new ArrayList<WorkflowOutputNode>();
-    private RabbitMQProcessPublisher publisher;
+    private RabbitMQProcessLaunchPublisher publisher;
     private RabbitMQStatusConsumer statusConsumer;
     private String consumerId;
     private boolean continueWorkflow = true;
 
-    public SimpleWorkflowInterpreter(String experimentId, String credentialToken, String
gatewayName, RabbitMQProcessPublisher publisher) throws RegistryException {
+    public SimpleWorkflowInterpreter(String experimentId, String credentialToken, String
gatewayName, RabbitMQProcessLaunchPublisher publisher) throws RegistryException {
         this.gatewayName = gatewayName;
         setExperiment(experimentId);
         this.credentialToken = credentialToken;
         this.publisher = publisher;
     }
 
-    public SimpleWorkflowInterpreter(Experiment experiment, String credentialStoreToken,
String gatewayName, RabbitMQProcessPublisher publisher) {
+    public SimpleWorkflowInterpreter(ExperimentModel experiment, String credentialStoreToken,
String gatewayName, RabbitMQProcessLaunchPublisher publisher) {
         this.gatewayName = gatewayName;
         this.experiment = experiment;
         this.credentialToken = credentialStoreToken;
@@ -106,7 +98,7 @@ class SimpleWorkflowInterpreter{
      */
     void launchWorkflow() throws Exception {
         WorkflowFactoryImpl wfFactory = WorkflowFactoryImpl.getInstance();
-        WorkflowParser workflowParser = wfFactory.getWorkflowParser(experiment.getExperimentID(),
credentialToken);
+        WorkflowParser workflowParser = wfFactory.getWorkflowParser(experiment.getExperimentId(),
credentialToken);
         log.debug("Initialized workflow parser");
         setWorkflowInputNodes(workflowParser.parse());
         log.debug("Parsed the workflow and got the workflow input nodes");
@@ -144,8 +136,8 @@ class SimpleWorkflowInterpreter{
             }
             WorkflowNodeDetails workflowNodeDetails = createWorkflowNodeDetails(readyNode);
             TaskDetails process = getProcess(workflowNodeDetails);
-            ProcessContext processContext = new ProcessContext(readyNode, workflowNodeDetails,
process);
-            addToProcessingQueue(processContext);
+            WorkflowContext workflowContext = new WorkflowContext(readyNode, workflowNodeDetails,
process);
+            addToProcessingQueue(workflowContext);
             publishToProcessQueue(process);
         }
         if (processingQueue.isEmpty()) {
@@ -277,16 +269,16 @@ class SimpleWorkflowInterpreter{
     /**
      * First remove the node from ready list and then add the WfNodeContainer to the process
queue.
      * Note that underline data structure of the process queue is a Map.
-     * @param processContext - has both workflow and correspond workflowNodeDetails and TaskDetails
+     * @param workflowContext - has both workflow and correspond workflowNodeDetails and
TaskDetails
      */
-    private synchronized void addToProcessingQueue(ProcessContext processContext) {
-        readyList.remove(processContext.getWorkflowNode().getId());
-        processingQueue.put(processContext.getTaskDetails().getTaskID(), processContext);
+    private synchronized void addToProcessingQueue(WorkflowContext workflowContext) {
+        readyList.remove(workflowContext.getWorkflowNode().getId());
+        processingQueue.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
     }
 
-    private synchronized void addToCompleteQueue(ProcessContext processContext) {
-        processingQueue.remove(processContext.getTaskDetails().getTaskID());
-        completeList.put(processContext.getTaskDetails().getTaskID(), processContext);
+    private synchronized void addToCompleteQueue(WorkflowContext workflowContext) {
+        processingQueue.remove(workflowContext.getTaskDetails().getTaskID());
+        completeList.put(workflowContext.getTaskDetails().getTaskID(), workflowContext);
     }
 
 
@@ -309,10 +301,10 @@ class SimpleWorkflowInterpreter{
         String taskId = taskOutputChangeEvent.getTaskIdentity().getTaskId();
         log.debug("Task Output changed event received for workflow node : " +
                 taskOutputChangeEvent.getTaskIdentity().getWorkflowNodeId() + ", task : "
+ taskId);
-        ProcessContext processContext = processingQueue.get(taskId);
+        WorkflowContext workflowContext = processingQueue.get(taskId);
         Set<WorkflowNode> tempWfNodeSet = new HashSet<WorkflowNode>();
-        if (processContext != null) {
-            WorkflowNode workflowNode = processContext.getWorkflowNode();
+        if (workflowContext != null) {
+            WorkflowNode workflowNode = workflowContext.getWorkflowNode();
             if (workflowNode instanceof ApplicationNode) {
                 ApplicationNode applicationNode = (ApplicationNode) workflowNode;
                 // Workflow node can have one to many output ports and each output port can
have one to many links
@@ -331,7 +323,7 @@ class SimpleWorkflowInterpreter{
                     }
                 }
             }
-            addToCompleteQueue(processContext);
+            addToCompleteQueue(workflowContext);
             log.debug("removed task from processing queue : " + taskId);
             try {
                 processReadyList();
@@ -342,67 +334,64 @@ class SimpleWorkflowInterpreter{
         }
     }
 
-    void handleTaskStatusChangeEvent(TaskStatusChangeEvent taskStatusChangeEvent) {
-        TaskState taskState = taskStatusChangeEvent.getState();
-        TaskIdentifier taskIdentity = taskStatusChangeEvent.getTaskIdentity();
-        String taskId = taskIdentity.getTaskId();
-        ProcessContext processContext = processingQueue.get(taskId);
-        if (processContext != null) {
+    void handleProcessStatusChangeEvent(ProcessStatusChangeEvent processStatusChangeEvent)
{
+        ProcessState processState = processStatusChangeEvent.getState();
+        ProcessIdentifier processIdentity = processStatusChangeEvent.getProcessIdentity();
+        String processId = processIdentity.getProcessId();
+        WorkflowContext workflowContext = processingQueue.get(processId);
+        if (workflowContext != null) {
             WorkflowNodeState wfNodeState = WorkflowNodeState.INVOKED;
-            switch (taskState) {
-                case WAITING:
-                    break;
+            switch (processState) {
+                case CREATED:
+                case VALIDATED:
                 case STARTED:
                     break;
+                case CONFIGURING_WORKSPACE:
+                    wfNodeState = WorkflowNodeState.COMPLETED;
+                    break;
                 case PRE_PROCESSING:
                     wfNodeState = WorkflowNodeState.INVOKED;
-                    processContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
                     break;
                 case INPUT_DATA_STAGING:
                     wfNodeState = WorkflowNodeState.INVOKED;
-                    processContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.PRE_PROCESSING);
                     break;
                 case EXECUTING:
                     wfNodeState = WorkflowNodeState.EXECUTING;
-                    processContext.getWorkflowNode().setState(NodeState.EXECUTING);
+                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTING);
                     break;
                 case OUTPUT_DATA_STAGING:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
                     break;
                 case POST_PROCESSING:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
+                    workflowContext.getWorkflowNode().setState(NodeState.POST_PROCESSING);
                     break;
                 case COMPLETED:
                     wfNodeState = WorkflowNodeState.COMPLETED;
-                    processContext.getWorkflowNode().setState(NodeState.EXECUTED);
+                    workflowContext.getWorkflowNode().setState(NodeState.EXECUTED);
                     break;
                 case FAILED:
                     wfNodeState = WorkflowNodeState.FAILED;
-                    processContext.getWorkflowNode().setState(NodeState.FAILED);
-                    break;
-                case UNKNOWN:
-                    wfNodeState = WorkflowNodeState.UNKNOWN;
-                    break;
-                case CONFIGURING_WORKSPACE:
-                    wfNodeState = WorkflowNodeState.COMPLETED;
+                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
                     break;
                 case CANCELED:
-                case CANCELING:
+                case CANCELLING:
                     wfNodeState = WorkflowNodeState.CANCELED;
-                    processContext.getWorkflowNode().setState(NodeState.FAILED);
+                    workflowContext.getWorkflowNode().setState(NodeState.FAILED);
                     break;
                 default:
                     break;
             }
             if (wfNodeState != WorkflowNodeState.UNKNOWN) {
                 try {
-                    updateWorkflowNodeStatus(processContext.getWfNodeDetails(), wfNodeState);
+                    updateWorkflowNodeStatus(workflowContext.getWfNodeDetails(), wfNodeState);
                 } catch (RegistryException e) {
                     log.error("Error while updating workflow node status update to the registry.
nodeInstanceId :"
-                            + processContext.getWfNodeDetails().getNodeInstanceId() + " status
to: "
-                            + processContext.getWfNodeDetails().getWorkflowNodeStatus().toString()
, e);
+                            + workflowContext.getWfNodeDetails().getNodeInstanceId() + "
status to: "
+                            + workflowContext.getWfNodeDetails().getWorkflowNodeStatus().toString()
, e);
                 }
             }
         }

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
new file mode 100644
index 0000000..47bd9ca
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowContext.java
@@ -0,0 +1,60 @@
+/*
+ *
+ * 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.workflow.core;
+
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowNode;
+
+public class WorkflowContext {
+    private WorkflowNode workflowNode;
+    private WorkflowNodeDetails wfNodeDetails;
+    private TaskDetails taskDetails;
+
+    public WorkflowContext(WorkflowNode workflowNode, WorkflowNodeDetails wfNodeDetails,
TaskDetails taskDetails) {
+        this.workflowNode = workflowNode;
+        this.wfNodeDetails = wfNodeDetails;
+        this.taskDetails = taskDetails;
+    }
+
+    public WorkflowNode getWorkflowNode() {
+        return workflowNode;
+    }
+
+    public void setWorkflowNode(WorkflowNode workflowNode) {
+        this.workflowNode = workflowNode;
+    }
+
+    public WorkflowNodeDetails getWfNodeDetails() {
+        return wfNodeDetails;
+    }
+
+    public void setWfNodeDetails(WorkflowNodeDetails wfNodeDetails) {
+        this.wfNodeDetails = wfNodeDetails;
+    }
+
+    public TaskDetails getTaskDetails() {
+        return taskDetails;
+    }
+
+    public void setTaskDetails(TaskDetails taskDetails) {
+        this.taskDetails = taskDetails;
+    }
+}

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
index 7795296..8ca0706 100644
--- a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/WorkflowEnactmentService.java
@@ -26,12 +26,9 @@ import org.apache.airavata.common.utils.ServerSettings;
 import org.apache.airavata.messaging.core.MessageContext;
 import org.apache.airavata.messaging.core.MessageHandler;
 import org.apache.airavata.messaging.core.MessagingConstants;
-import org.apache.airavata.messaging.core.impl.RabbitMQProcessPublisher;
+import org.apache.airavata.messaging.core.impl.RabbitMQProcessLaunchPublisher;
 import org.apache.airavata.messaging.core.impl.RabbitMQStatusConsumer;
-import org.apache.airavata.model.messaging.event.MessageType;
-import org.apache.airavata.model.messaging.event.TaskIdentifier;
-import org.apache.airavata.model.messaging.event.TaskOutputChangeEvent;
-import org.apache.airavata.model.messaging.event.TaskStatusChangeEvent;
+import org.apache.airavata.model.messaging.event.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -74,7 +71,7 @@ public class WorkflowEnactmentService {
     public void submitWorkflow(String experimentId,
                                   String credentialToken,
                                   String gatewayName,
-                                  RabbitMQProcessPublisher publisher) throws Exception {
+                                  RabbitMQProcessLaunchPublisher publisher) throws Exception
{
 
         SimpleWorkflowInterpreter simpleWorkflowInterpreter = new SimpleWorkflowInterpreter(
                 experimentId, credentialToken,gatewayName, publisher);
@@ -129,18 +126,17 @@ public class WorkflowEnactmentService {
         private void process() {
             String message;
             SimpleWorkflowInterpreter simpleWorkflowInterpreter;
-            if (msgCtx.getType() == MessageType.TASK) {
-                TaskStatusChangeEvent event = (TaskStatusChangeEvent) msgCtx.getEvent();
-                TaskIdentifier taskIdentifier = event.getTaskIdentity();
-                simpleWorkflowInterpreter = getInterpreter(taskIdentifier.getExperimentId());
+            if (msgCtx.getType() == MessageType.PROCESS) {
+                ProcessStatusChangeEvent event = ((ProcessStatusChangeEvent) msgCtx.getEvent());
+                ProcessIdentifier processIdentity = event.getProcessIdentity();
+                simpleWorkflowInterpreter = getInterpreter(processIdentity.getExperimentId());
                 if (simpleWorkflowInterpreter != null) {
-                    simpleWorkflowInterpreter.handleTaskStatusChangeEvent(event);
+                    simpleWorkflowInterpreter.handleProcessStatusChangeEvent(event);
                 } else {
                     // this happens when Task status messages comes after the Taskoutput
messages,as we have worked on
                     // output changes it is ok to ignore this.
                 }
-                message = "Received task output change event , expId : " + taskIdentifier.getExperimentId()
+ ", taskId : " + taskIdentifier.getTaskId() + ", workflow node Id : " + taskIdentifier.getWorkflowNodeId();
-                log.debug(message);
+
             }else if (msgCtx.getType() == MessageType.TASKOUTPUT) {
                 TaskOutputChangeEvent event = (TaskOutputChangeEvent) msgCtx.getEvent();
                 TaskIdentifier taskIdentifier = event.getTaskIdentity();

http://git-wip-us.apache.org/repos/asf/airavata/blob/b65079a7/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
----------------------------------------------------------------------
diff --git a/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
new file mode 100644
index 0000000..6c839e7
--- /dev/null
+++ b/modules/workflow/workflow-core/src/main/java/org/apache/airavata/workflow/core/parser/JsonWorkflowParser.java
@@ -0,0 +1,21 @@
+package org.apache.airavata.workflow.core.parser;
+
+import org.apache.airavata.workflow.core.WorkflowParser;
+import org.apache.airavata.workflow.core.dag.nodes.WorkflowInputNode;
+
+import java.util.List;
+
+/**
+ * Created by syodage on 1/27/16.
+ */
+public class JsonWorkflowParser implements WorkflowParser {
+
+    public JsonWorkflowParser(String workflowDescription) {
+
+    }
+
+    @Override
+    public List<WorkflowInputNode> parse() throws Exception {
+        return null;
+    }
+}


Mime
View raw message