/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.workflow.execution.headless.api;
import java.io.File;
import de.rcenvironment.core.component.execution.api.SingleConsoleRowsProcessor;
import de.rcenvironment.core.component.workflow.execution.headless.api.HeadlessWorkflowExecutionService.DeletionBehavior;
import de.rcenvironment.core.component.workflow.execution.headless.api.HeadlessWorkflowExecutionService.DisposalBehavior;
import de.rcenvironment.core.utils.common.textstream.TextOutputReceiver;
/**
* Encapsulates data used for headless workflow execution.
*
* @author Doreen Seider
* @author Robert Mischke (added fail-on-update flag)
*/
public interface HeadlessWorkflowExecutionContext {
/**
* @return the workflow file
*/
File getWorkflowFile();
/**
* @return JSON file containing componentId->(key->value) placeholder values. Is optional and can be <code>null</code>
*/
File getPlaceholdersFile();
/**
* @return location for workflow log files. Is optional and can be <code>null</code>
*/
File getLogDirectory();
/**
* @return aggregated workflow log files (temporary and final ones if existent). Is optional and can be <code>null</code>
*/
File[] getLogFiles();
/**
* @return the {@link TextOutputReceiver} to write status messages to. Is optional and can be <code>null</code>
*/
TextOutputReceiver getTextOutputReceiver();
/**
* @return listener for all received {@link ConsoleRow}s. Is optional and can be <code>null</code>
*/
SingleConsoleRowsProcessor getSingleConsoleRowReceiver();
/**
* @return {@link DisposalBehavior}
*/
DisposalBehavior getDisposalBehavior();
/**
* @return {@link DeletionBehavior}
*/
DeletionBehavior getDeletionBehavior();
/**
* Enables a fail-fast mechanism for workflow files generated from internal templates, where a required update indicates that the
* template is out of date and should be updated instead.
*
* @return true if workflow execution should abort if the workflow file would require an update
*/
boolean shouldAbortIfWorkflowUpdateRequired();
/**
* @return <code>true</code> if output should be compact. Default is <code>false</code>
*/
boolean isCompactOutput();
}