@Subscribe public void taskOutputChanged(TaskOutputChangeEvent taskOutputEvent){ String taskId = taskOutputEvent.getTaskIdentity().getTaskId(); if (isTaskAwaiting(taskId)){ WorkflowNodeState state=WorkflowNodeState.COMPLETED; Node node = getAwaitingNodeForTask(taskId); List<OutputDataObjectType> applicationOutputs = taskOutputEvent.getOutput(); Map<String, String> outputData = new HashMap<String, String>(); for (OutputDataObjectType outputObj : applicationOutputs) { List<DataPort> outputPorts = node.getOutputPorts(); for (DataPort dataPort : outputPorts) { if (dataPort.getName().equals(outputObj.getName())){ outputData.put(outputObj.getName(), outputObj.getValue()); } } } nodeOutputData.put(node, outputData); setupNodeDetailsOutput(node); node.setState(NodeExecutionState.FINISHED); try { publishNodeStatusChange(WorkflowNodeState.COMPLETED, node.getID(), experiment.getExperimentID()); updateWorkflowNodeStatus(nodeInstanceList.get(node), state); } catch (RegistryException e) { e.printStackTrace(); } catch (AiravataException e) { e.printStackTrace(); } } }
airavataClient.launchExperiment(experiment.getExperimentID(), "testToken"); hide(); JOptionPane.showMessageDialog(null, "Experiment Launched. You will be alerted on completion."); String status = airavataClient.getExperimentStatus(experiment.getExperimentID()).getExperimentState().toString().trim(); while(!status.equals("COMPLETED") && !status.equals("FAILED")){ try { Thread.sleep(1000); status = airavataClient.getExperimentStatus(experiment.getExperimentID()).getExperimentState().toString().trim(); } catch (InterruptedException e) { output = ""; fullOutput = "Experiment Completed Successfully. Output(s) are shown below:\n"; List<OutputDataObjectType> outputs = airavataClient.getExperimentOutputs(experiment.getExperimentID()); for(int i1=0; i1<outputs.size(); i1++){ output = outputs.get(i1).getValue();
private WorkflowNodeDetails createWorkflowNodeDetails(Node node) throws RegistryException { WorkflowNodeDetails workflowNode = ExperimentModelUtil.createWorkflowNode(node.getName(), null); ExecutionUnit executionUnit = ExecutionUnit.APPLICATION; String executionData = null; if (node instanceof InputNode){ executionUnit = ExecutionUnit.INPUT; } else if (node instanceof OutputNode){ executionUnit = ExecutionUnit.OUTPUT; } if (node instanceof WSNode){ executionUnit = ExecutionUnit.APPLICATION; executionData = ((WSNode)node).getComponent().getApplication().getApplicationId(); } workflowNode.setExecutionUnit(executionUnit); workflowNode.setExecutionUnitData(executionData); workflowNode.setNodeInstanceId((String) getRegistry().add(ChildDataType.WORKFLOW_NODE_DETAIL, workflowNode, getExperiment().getExperimentID())); nodeInstanceList.put(node, workflowNode); setupNodeDetailsInput(node, workflowNode); return workflowNode; }
publishNodeStatusChange(WorkflowNodeState.EXECUTING,node.getID(),experiment.getExperimentID()); if (inputDataStrings.containsKey(node.getID())){ ((InputNode)node).setDefaultValue(inputDataStrings.get(node.getID())); invokedNode.add(node); node.setState(NodeExecutionState.FINISHED); publishNodeStatusChange(WorkflowNodeState.INVOKED, node.getID(), experiment.getExperimentID()); notifyViaInteractor(WorkflowExecutionMessage.NODE_STATE_CHANGED, null); String portId= ((InputNode) node).getID(); getRegistry().update(RegistryModelType.WORKFLOW_NODE_DETAIL, workflowNode, workflowNode.getNodeInstanceId()); updateWorkflowNodeStatus(workflowNode, WorkflowNodeState.COMPLETED); publishNodeStatusChange(WorkflowNodeState.COMPLETED, node.getID(), experiment.getExperimentID()); log.info("Workflow execution "+experiment.getExperimentID()+" is paused."); while (this.getWorkflow().getExecutionState() == WorkflowExecutionState.PAUSED) { try { log.info("Workflow execution "+experiment.getExperimentID()+" is resumed."); publishNodeStatusChange(WorkflowNodeState.INVOKED, node.getID(), experiment.getExperimentID()); threadList.add(th); th.start(); cleanup(); this.getWorkflow().setExecutionState(WorkflowExecutionState.NONE); ExperimentStatusChangeEvent event = new ExperimentStatusChangeEvent(ExperimentState.COMPLETED, experiment.getExperimentID(), gatewayId); MessageContext msgCtx = new MessageContext(event, MessageType.EXPERIMENT, AiravataUtils.getId("EXPERIMENT"), gatewayId); msgCtx.setUpdatedTime(new Timestamp(Calendar.getInstance().getTimeInMillis()));
invokedNode.add(node); updateWorkflowNodeStatus(nodeInstanceList.get(node), WorkflowNodeState.EXECUTING); publishNodeStatusChange(WorkflowNodeState.EXECUTING, node.getID(), experiment.getExperimentID()); Component component = node.getComponent(); if (component instanceof SubWorkflowComponent) {
this.engine.getMonitor().subscribe(experiment.getExperimentID()); this.engine.getMonitor().fireStartMonitoring(workflow.getName()); } catch (MonitorException e) { logger.error("Error while subscribing with experiment Id : " + experiment.getExperimentID(), e); airavataClient.launchExperiment(experiment.getExperimentID(), "testToken");
publishNodeStatusChange(WorkflowNodeState.EXECUTING, node.getID(), experiment.getExperimentID()); publishNodeStatusChange(WorkflowNodeState.COMPLETED, node.getID(), experiment.getExperimentID()); updateWorkflowNodeStatus(workflowNodeDetails, WorkflowNodeState.COMPLETED); notifyViaInteractor(WorkflowExecutionMessage.NODE_STATE_CHANGED, null);