/*
* Copyright (C) 2006-2016 DLR, Germany
*
* All rights reserved
*
* http://www.rcenvironment.de/
*/
package de.rcenvironment.core.component.execution.api;
import de.rcenvironment.core.utils.common.rpc.RemotableService;
import de.rcenvironment.core.utils.common.rpc.RemoteOperationException;
/**
* Controls execution of workflows or components. There is one {@link RemotableExecutionControllerService} per node, which delegates
* requests to {@link ExecutionController}s.
*
* @author Doreen Seider
*/
@RemotableService
public interface RemotableExecutionControllerService {
/**
* Disposes a workflow/component.
*
* @param executionId execution identifier of the component/workflow
* @throws RemoteOperationException if called from remote and remote method call failed
* @throws ExecutionControllerException if {@link ExecutionController} is not available (anymore)
*/
void performDispose(String executionId) throws ExecutionControllerException, RemoteOperationException;
/**
* Starts a workflow/component.
*
* @param executionId execution identifier of the component/workflow
* @throws RemoteOperationException if called from remote and remote method call failed
* @throws ExecutionControllerException if {@link ExecutionController} is not available (anymore)
*/
void performStart(String executionId) throws ExecutionControllerException, RemoteOperationException;
/**
* Cancels a workflow/component.
*
* @param executionId execution identifier of the component/workflow
* @throws RemoteOperationException if called from remote and remote method call failed
* @throws ExecutionControllerException if {@link ExecutionController} is not available (anymore)
*/
void performCancel(String executionId) throws ExecutionControllerException, RemoteOperationException;
/**
* Pauses a workflow/component.
*
* @param executionId execution identifier of the component/workflow
* @throws RemoteOperationException if called from remote and remote method call failed
* @throws ExecutionControllerException if {@link ExecutionController} is not available (anymore)
*/
void performPause(String executionId) throws ExecutionControllerException, RemoteOperationException;
/**
* Resumes a workflow/component if it is paused.
*
* @param executionId execution identifier of the component/workflow
* @throws RemoteOperationException if called from remote and remote method call failed
* @throws ExecutionControllerException if {@link ExecutionController} is not available (anymore)
*/
void performResume(String executionId) throws ExecutionControllerException, RemoteOperationException;
}