/* * Copyright (C) 2006-2016 DLR, Germany * * All rights reserved * * http://www.rcenvironment.de/ */ package de.rcenvironment.core.component.execution.api; import de.rcenvironment.core.communication.common.InstanceNodeSessionId; import de.rcenvironment.core.utils.common.rpc.RemotableService; import de.rcenvironment.core.utils.common.rpc.RemoteOperationException; /** * Remote-accessible methods for component execution. * * @author Doreen Seider */ @RemotableService public interface RemotableComponentExecutionService { /** * Initializes a new component execution. * * @param executionContext {@link ComponentExecutionContext} providing information about the execution. * @param authToken token which authorizes the caller to execute the component * @param referenceTimestamp current timestamp on workflow node * @return execution identifier of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) * @throws ComponentExecutionException if initializing the component failed */ String init(ComponentExecutionContext executionContext, String authToken, Long referenceTimestamp) throws RemoteOperationException, ComponentExecutionException; /** * Prepares a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void prepare(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Starts a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void start(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Pauses a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void pause(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Resumes a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void resume(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Cancels a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void cancel(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Disposes a component. * * @param executionId execution identifier of the component executed * @param node the hosting node of the component executed * @throws RemoteOperationException if communication error occurs (cannot occur if component runs locally) */ void dispose(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; /** * Gets current component state. * * @param executionId execution identifier (part of {@link ComponentExecutionInformation}) of the component to get the state for * @param node the node of the component controller * @return {@link ComponentState} * @throws RemoteOperationException if communication error occurs (cannot occur if controller and components run locally) */ ComponentState getComponentState(String executionId, InstanceNodeSessionId node) throws RemoteOperationException; }