| /* |
| * Copyright (C) 2010-2011 The University of Manchester |
| * |
| * See the file "LICENSE" for license terms. |
| */ |
| package org.taverna.server.localworker.remote; |
| |
| import java.net.URL; |
| import java.rmi.Remote; |
| import java.rmi.RemoteException; |
| import java.util.Date; |
| import java.util.List; |
| |
| import javax.annotation.Nonnull; |
| import javax.annotation.Nullable; |
| |
| public interface RemoteSingleRun extends Remote { |
| /** |
| * @return The name of the Baclava file to use for all inputs, or |
| * <tt>null</tt> if no Baclava file is set. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nullable |
| public String getInputBaclavaFile() throws RemoteException; |
| |
| /** |
| * Sets the Baclava file to use for all inputs. This overrides the use of |
| * individual inputs. |
| * |
| * @param filename |
| * The filename to use. Must not start with a <tt>/</tt> or |
| * contain any <tt>..</tt> segments. Will be interpreted relative |
| * to the run's working directory. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| public void setInputBaclavaFile(@Nonnull String filename) |
| throws RemoteException; |
| |
| /** |
| * @return The list of input assignments. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public List<RemoteInput> getInputs() throws RemoteException; |
| |
| /** |
| * Create an input assignment. |
| * |
| * @param name |
| * The name of the port that this will be an input for. |
| * @return The assignment reference. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public RemoteInput makeInput(@Nonnull String name) throws RemoteException; |
| |
| /** |
| * @return The file (relative to the working directory) to write the outputs |
| * of the run to as a Baclava document, or <tt>null</tt> if they are |
| * to be written to non-Baclava files in a directory called |
| * <tt>out</tt>. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nullable |
| public String getOutputBaclavaFile() throws RemoteException; |
| |
| /** |
| * Sets where the output of the run is to be written to. This will cause the |
| * output to be generated as a Baclava document, rather than a collection of |
| * individual non-Baclava files in the subdirectory of the working directory |
| * called <tt>out</tt>. |
| * |
| * @param filename |
| * Where to write the Baclava file (or <tt>null</tt> to cause the |
| * output to be written to individual files); overwrites any |
| * previous setting of this value. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| public void setOutputBaclavaFile(@Nullable String filename) |
| throws RemoteException; |
| |
| /** |
| * @return The current status of the run. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public RemoteStatus getStatus() throws RemoteException; |
| |
| /** |
| * Set the status of the run, which should cause it to move into the given |
| * state. This may cause some significant changes. |
| * |
| * @param s |
| * The state to try to change to. |
| * @throws IllegalStateTransitionException |
| * If the requested state change is impossible. (Note that it is |
| * always legal to set the status to the current status.) |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| * @throws ImplementationException |
| * If something goes horribly wrong on the back end. |
| * @throws StillWorkingOnItException |
| * If the startup time of the workflow implementation exceeds a |
| * built-in threshold. |
| */ |
| public void setStatus(@Nonnull RemoteStatus s) |
| throws IllegalStateTransitionException, RemoteException, |
| ImplementationException, StillWorkingOnItException; |
| |
| /** |
| * @return When this workflow run was found to have finished, or |
| * <tt>null</tt> if it has never finished (either still running or |
| * never started). |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nullable |
| public Date getFinishTimestamp() throws RemoteException; |
| |
| /** |
| * @return When this workflow run was started, or <tt>null</tt> if it has |
| * never been started. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nullable |
| public Date getStartTimestamp() throws RemoteException; |
| |
| /** |
| * @return Handle to the main working directory of the run. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public RemoteDirectory getWorkingDirectory() throws RemoteException; |
| |
| /** |
| * @return The list of listener instances attached to the run. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public List<RemoteListener> getListeners() throws RemoteException; |
| |
| /** |
| * Add a listener to the run. |
| * |
| * @param listener |
| * The listener to add. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| * @throws ImplementationException |
| * If something goes wrong when adding the listener. |
| */ |
| public void addListener(@Nonnull RemoteListener listener) |
| throws RemoteException, ImplementationException; |
| |
| /** |
| * @return The security context structure for this run. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| * @throws ImplementationException |
| * If something goes wrong when getting the context. |
| */ |
| @Nonnull |
| public RemoteSecurityContext getSecurityContext() throws RemoteException, |
| ImplementationException; |
| |
| /** |
| * Kill off this run, removing all resources which it consumes. |
| * |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| * @throws ImplementationException |
| * If something goes horribly wrong when destroying the run. |
| */ |
| public void destroy() throws RemoteException, ImplementationException; |
| |
| /** |
| * Get the types of listener supported by this run. |
| * |
| * @return A list of listener type names. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public List<String> getListenerTypes() throws RemoteException; |
| |
| /** |
| * Create a listener that can be attached to this run. |
| * |
| * @param type |
| * The type name of the listener to create; it must be one of the |
| * names returned by the {@link #getListenerTypes()} operation. |
| * @param configuration |
| * The configuration document for this listener. The nature of |
| * the contents of this are determined by the type. |
| * @return A handle for the listener. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| @Nonnull |
| public RemoteListener makeListener(@Nonnull String type, |
| @Nonnull String configuration) throws RemoteException; |
| |
| /** |
| * Configures the details to use when setting up the workflow run's |
| * connnection to the interaction feed. |
| * |
| * @param interactionFeed |
| * The location of the interaction feed. If <tt>null</tt>, |
| * defaults from the factory will be used instead. |
| * @param webdavPath |
| * The location used for pushing web pages to support the feed. |
| * If <tt>null</tt>, a default from the factory will be used |
| * instead. |
| * @param publishUrlBase |
| * Where to <i>actually</i> publish to, if this needs to be |
| * different from the location presented in the published HTML |
| * and Feed entries. Necessary in complex network scenarios. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| void setInteractionServiceDetails(@Nonnull URL interactionFeed, |
| @Nonnull URL webdavPath, @Nullable URL publishUrlBase) throws RemoteException; |
| |
| /** |
| * A do-nothing method, used to check the general reachability of the |
| * workflow run. |
| * |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| void ping() throws RemoteException; |
| |
| /** |
| * Sets whether we should generate provenance information from a run. |
| * |
| * @param generateProvenance |
| * Boolean flag, true for do the generation. Must be set before |
| * starting the run for this to have an effect. |
| * @throws RemoteException |
| * If anything goes wrong with the communication. |
| */ |
| void setGenerateProvenance(boolean generateProvenance) |
| throws RemoteException; |
| } |