net.kwfgrid.gwes
Interface GWES

All Superinterfaces:
Remote
All Known Implementing Classes:
GWESEngine, RemoteGWES, RestfulGWES, RestfulStructureGWES

public interface GWES
extends Remote

This is the public Interface to the Generic Workflow Execution Service (GWES). This Interface is implemented by the GWESEngine

Version:
$Id: GWES.java 1537 2011-07-27 15:34:04Z hoheisel $
Author:
Andreas Hoheisel (www.andreas-hoheisel.de)
See Also:
GWESEngine

Method Summary
 void abort(String workflowID, String userID)
          Abort a workflow with a certain identifier.
 String[][] getActivityStatusArray(String workflowID, String userID)
          Get the status array of all instantiated activities of a given workflow.
 String[] getAvailableResources(String ofClass, String userID)
          Get a list of all available resources.
 String[] getCheckpoints(String workflowID, String userID)
          Get the path of all available checkpoints for a specific workflow.
 String[] getData(String workflowID, String placeID, String userID)
          Get some data that is hold inside a specific workflow and that is referenced by a data place identifier.
 String getDescription(String workflowID, String userID)
          Get the human-readable description for a specific workflow.
 String[][] getProperties(String workflowID, String userID)
          Get all propertries of a specific workflow.
 String getProperty(String workflowID, String name, String userID)
          Get the value of a specific workflow property.
 String getResourceDescription(String resourceUri, String userID)
          Get the resource description of a specific resource in D-GRDL syntax.
 int getStatus(String workflowID, String userID)
          Get the current status code of the workflow specified by its identifier.
 String getWorkflowDescription(String workflowID, String userID)
          Get the current Generic Workflow Description document of the workflow specified by its identifier.
 String[] getWorkflowIDs(int level, String userID)
          Get the identifiers of all the workflows that are handled by this Generic Workflow Execution Service.
 String[][] getWorkflowStatusArray(int level, String userID)
          Get the workflow status of all currently available workflows.
 String initiate(String gworkflowdl, String userID)
          Initiates a workflow with a certain userID.
 void remove(String workflowID, int level, String userID)
          Remove a specific workflow from memory, database, and/or its temporary data on the Grid nodes.
 String restart(String workflowID, String userID)
          Restart a workflow with a certain identifier from the beginning.
 String restore(String workflowID, String userID)
          Restores a workflow from the XML database.
 void resume(String workflowID, String userID)
          Resume a workflow with a certain identifier.
 void setDescription(String workflowID, String description, String userID)
          Set the human-readable description for a specific workflow.
 void setProperty(String workflowID, String name, String value, String userID)
          Set the value of a specific workflow property.
 void setWorkflowDescription(String workflowID, String gworkflowdl, String userID)
          Overwrite the current Generic Workflow Description document of the workflow specified by its identifier.
 void start(String workflowID, String userID)
          Start a workflow with a certain identifier.
 String store(String workflowID, String userID)
          Store a workflow in the XML workflow database.
 void suspend(String workflowID, String userID)
          Suspend a workflow with a certain identifier.
 int waitForStatusChangeFrom(String workflowID, int oldStatus, String userID)
          Wait for workflow to change its status from an specified status.
 int waitForStatusChangeToCompletedOrTerminated(String workflowID, String userID)
          Wait for workflow to change its status to final states COMPLETED or TERMINATED.
 

Method Detail

initiate

String initiate(String gworkflowdl,
                String userID)
                throws net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                       WorkflowSecurityException,
                       StateTransitionException,
                       LoggingException,
                       GWESException,
                       RemoteException
Initiates a workflow with a certain userID.

Parameters:
gworkflowdl - The description of the workflow.
userID - userID|credential: The ID of the user who owns the workflow. Use the DN of the certificate if available. The optional user credential is separated from userID by "|". user ID MUST NOT contain "|" or spaces!
Returns:
The unique workflow ID.
Throws:
net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
WorkflowSecurityException
StateTransitionException
LoggingException
GWESException
RemoteException

start

void start(String workflowID,
           String userID)
           throws NoSuchWorkflowException,
                  StateTransitionException,
                  LoggingException,
                  GWESException,
                  RemoteException,
                  WorkflowSecurityException
Start a workflow with a certain identifier.

Parameters:
workflowID - The unique workflow identifier.
userID -
Throws:
NoSuchWorkflowException
StateTransitionException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

suspend

void suspend(String workflowID,
             String userID)
             throws NoSuchWorkflowException,
                    StateTransitionException,
                    LoggingException,
                    GWESException,
                    RemoteException,
                    WorkflowSecurityException
Suspend a workflow with a certain identifier. This method returns after the workflow has been fully suspended. This may need some time.

Parameters:
workflowID - The unique workflow identifier.
userID -
Throws:
NoSuchWorkflowException
StateTransitionException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

resume

void resume(String workflowID,
            String userID)
            throws NoSuchWorkflowException,
                   StateTransitionException,
                   LoggingException,
                   GWESException,
                   RemoteException,
                   WorkflowSecurityException
Resume a workflow with a certain identifier.

Parameters:
workflowID - The unique workflow identifier.
userID -
Throws:
NoSuchWorkflowException
StateTransitionException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

abort

void abort(String workflowID,
           String userID)
           throws NoSuchWorkflowException,
                  StateTransitionException,
                  LoggingException,
                  GWESException,
                  RemoteException,
                  WorkflowSecurityException
Abort a workflow with a certain identifier.

Parameters:
workflowID - The unique workflow identifier.
userID -
Throws:
NoSuchWorkflowException
StateTransitionException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

restart

String restart(String workflowID,
               String userID)
               throws NoSuchWorkflowException,
                      net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                      WorkflowSecurityException,
                      DatabaseException,
                      StateTransitionException,
                      LoggingException,
                      GWESException,
                      RemoteException
Restart a workflow with a certain identifier from the beginning. The restarted workflow will have a new ID. This method looks for the earliest snapshot of the workflow in the database. Then the GWES initiates the workflow.

Parameters:
workflowID - The unique identifier of the workflow to restart.
userID - The user identifier of the user who owns the workflow.
Returns:
The new workflowID.
Throws:
NoSuchWorkflowException - If the workflow identifier is not available in the workflow database
net.kwfgrid.gworkflowdl.structure.WorkflowFormatException - If the workflow stored in the database has the wrong format
DatabaseException - If there is a problem with retrieving the workflow from the database
StateTransitionException - If the state of the workflow is not INITIATED at the beginning.
WorkflowSecurityException
LoggingException
GWESException
RemoteException

getWorkflowDescription

String getWorkflowDescription(String workflowID,
                              String userID)
                              throws NoSuchWorkflowException,
                                     DatabaseException,
                                     LoggingException,
                                     GWESException,
                                     RemoteException,
                                     WorkflowSecurityException
Get the current Generic Workflow Description document of the workflow specified by its identifier.

Parameters:
workflowID - The unique workflow identifier.
userID -
Returns:
The current workflow description as String.
Throws:
NoSuchWorkflowException
DatabaseException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

setWorkflowDescription

void setWorkflowDescription(String workflowID,
                            String gworkflowdl,
                            String userID)
                            throws NoSuchWorkflowException,
                                   StateTransitionException,
                                   net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                                   LoggingException,
                                   GWESException,
                                   RemoteException,
                                   WorkflowSecurityException
Overwrite the current Generic Workflow Description document of the workflow specified by its identifier. The status of the workflow should be SUSPENDED or INITIATED.

Parameters:
workflowID - The unique workflow identifier.
gworkflowdl - The GWorkflowDL description of the workflow.
userID -
Throws:
NoSuchWorkflowException
StateTransitionException
net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
LoggingException
GWESException
RemoteException
WorkflowSecurityException

getStatus

int getStatus(String workflowID,
              String userID)
              throws NoSuchWorkflowException,
                     DatabaseException,
                     LoggingException,
                     GWESException,
                     RemoteException,
                     WorkflowSecurityException
Get the current status code of the workflow specified by its identifier. Valid codes are:
  • STATUS_UNDEFINED = 0
  • STATUS_INITIATED = 1
  • STATUS_RUNNING = 2
  • STATUS_SUSPENDED = 3
  • STATUS_ACTIVE = 4
  • STATUS_TERMINATED = 5
  • STATUS_COMPLETED = 6

    Parameters:
    workflowID - The unique workflow identifier.
    userID -
    Returns:
    The current state of the workflow.
    Throws:
    NoSuchWorkflowException
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

  • waitForStatusChangeFrom

    int waitForStatusChangeFrom(String workflowID,
                                int oldStatus,
                                String userID)
                                throws NoSuchWorkflowException,
                                       InterruptedException,
                                       LoggingException,
                                       GWESException,
                                       RemoteException,
                                       WorkflowSecurityException
    Wait for workflow to change its status from an specified status.

    Parameters:
    workflowID - The workflow identifier
    oldStatus - The old status of the workflow
    userID -
    Returns:
    the new status
    Throws:
    NoSuchWorkflowException
    InterruptedException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    waitForStatusChangeToCompletedOrTerminated

    int waitForStatusChangeToCompletedOrTerminated(String workflowID,
                                                   String userID)
                                                   throws NoSuchWorkflowException,
                                                          InterruptedException,
                                                          LoggingException,
                                                          GWESException,
                                                          RemoteException,
                                                          WorkflowSecurityException
    Wait for workflow to change its status to final states COMPLETED or TERMINATED.

    Parameters:
    workflowID - The workflow identifier
    userID -
    Returns:
    the new status
    Throws:
    NoSuchWorkflowException
    InterruptedException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    getWorkflowIDs

    String[] getWorkflowIDs(int level,
                            String userID)
                            throws DatabaseException,
                                   LoggingException,
                                   GWESException,
                                   RemoteException,
                                   WorkflowSecurityException
    Get the identifiers of all the workflows that are handled by this Generic Workflow Execution Service. The level denotes from where to get the workflow IDs:
  • level = 1: workflows handled in main memory
  • level = 2: workflows stored in workflow database
  • level = 3: workflows handled in main memory AND stored in workflow database

    Parameters:
    level - The level from where to get the workflowIDs.
    userID -
    Returns:
    An array of strings with the workflowIDs.
    Throws:
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

  • getWorkflowStatusArray

    String[][] getWorkflowStatusArray(int level,
                                      String userID)
                                      throws DatabaseException,
                                             LoggingException,
                                             GWESException,
                                             RemoteException,
                                             WorkflowSecurityException
    Get the workflow status of all currently available workflows. Example for each workflow:
     "ID=hoheisel_f2968050-1d6a-11db-bacc-ad353bc1f9b1"
     "status=COMPLETED"
     "birthdayMs=1154003111126"
     "durationUndefinedMs=527"
     "durationInitiatedMs=792"
     "durationRunningMs=0"
     "durationActiveMs=0"
     "durationSuspendedMs=0"
     "durationTotalMs=1351"
     "endTimeMs=1154003112477"
     "level=MEMORY"
     "description=test workflow"
     

    The level denotes from where to get the workflow IDs:

  • level = 1: workflows handled in main memory
  • level = 2: workflows stored in workflow database
  • level = 3: workflows handled in main memory AND stored in workflow database

    Parameters:
    level - The level from where to get the workflowIDs.
    userID -
    Returns:
    The current workflow status as an array of string arrays
    Throws:
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

  • store

    String store(String workflowID,
                 String userID)
                 throws NoSuchWorkflowException,
                        DatabaseException,
                        LoggingException,
                        GWESException,
                        RemoteException,
                        WorkflowSecurityException
    Store a workflow in the XML workflow database. If the workflow is running or active, then the GWES first suspends the workflow, second it stores the workflow description in the database, and third it resumes the workflow. The workflow can be restored using the restore method.

    Parameters:
    workflowID - The unique workflow identifier.
    userID -
    Returns:
    An identifier within the XML database where the workflow is stored
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException - If there is a problem with the XML database
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException
    See Also:
    restore(String,String)

    restore

    String restore(String workflowID,
                   String userID)
                   throws NoSuchWorkflowException,
                          net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                          WorkflowSecurityException,
                          DatabaseException,
                          StateTransitionException,
                          LoggingException,
                          GWESException,
                          RemoteException
    Restores a workflow from the XML database. If the input is the clean workflowID (without version number), then the GWES will restore the latest available workflow snapshot. If the workflowID string contains the whole XML database collection identifier, then the GWES will restore the given workflow (e.g. /db/gworkflowdl/[workflowID]/0000000221.xml. The method call returns the new workflow ID of the restored workflow.

    A restored workflow has the status INITIATED and needs to be started using the start() method.

    Workflows are stored, e.g., by using the store method.

    Parameters:
    workflowID - The old workflow ID of the stored workflow.
    userID - The user ID.
    Returns:
    The new workflow ID of the restored workflow.
    Throws:
    NoSuchWorkflowException
    net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
    WorkflowSecurityException
    DatabaseException
    StateTransitionException
    LoggingException
    GWESException
    RemoteException
    See Also:
    store(String, String), start(String, String)

    getData

    String[] getData(String workflowID,
                     String placeID,
                     String userID)
                     throws NoSuchWorkflowException,
                            DatabaseException,
                            LoggingException,
                            GWESException,
                            RemoteException,
                            WorkflowSecurityException
    Get some data that is hold inside a specific workflow and that is referenced by a data place identifier. The format of the place identifier may differ depending on the implementation of the workflow handler. An other alternative to get the data hold by the workflow is to retrieve to whole workflow description.

    Parameters:
    workflowID - The workflow identifier
    placeID - The place identifier that refers to the data
    userID -
    Returns:
    The data as an array of Strings.
    Throws:
    NoSuchWorkflowException
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    setDescription

    void setDescription(String workflowID,
                        String description,
                        String userID)
                        throws NoSuchWorkflowException,
                               DatabaseException,
                               LoggingException,
                               GWESException,
                               RemoteException,
                               WorkflowSecurityException
    Set the human-readable description for a specific workflow. If the description already exists it will be replaced by the new description.

    Parameters:
    workflowID - The workflow identifier
    description - The human-readable description
    userID -
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    getDescription

    String getDescription(String workflowID,
                          String userID)
                          throws NoSuchWorkflowException,
                                 DatabaseException,
                                 LoggingException,
                                 GWESException,
                                 RemoteException,
                                 WorkflowSecurityException
    Get the human-readable description for a specific workflow.

    Parameters:
    workflowID - The workflow identifier
    userID -
    Returns:
    The human-readable description
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    setProperty

    void setProperty(String workflowID,
                     String name,
                     String value,
                     String userID)
                     throws NoSuchWorkflowException,
                            DatabaseException,
                            LoggingException,
                            net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                            GWESException,
                            RemoteException,
                            WorkflowSecurityException
    Set the value of a specific workflow property. If a property with the same name already exists in this worklfow, the old property value will be replaced by the new one.

    Parameters:
    workflowID - The workflow identifier
    name - Name of the property
    value - Value of the property
    userID -
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
    GWESException
    RemoteException
    WorkflowSecurityException

    getProperty

    String getProperty(String workflowID,
                       String name,
                       String userID)
                       throws NoSuchWorkflowException,
                              DatabaseException,
                              LoggingException,
                              net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                              GWESException,
                              RemoteException,
                              WorkflowSecurityException
    Get the value of a specific workflow property.

    Parameters:
    workflowID - The workflow identifier
    name - Name of the property
    userID -
    Returns:
    Value of the property
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
    GWESException
    RemoteException
    WorkflowSecurityException

    getProperties

    String[][] getProperties(String workflowID,
                             String userID)
                             throws NoSuchWorkflowException,
                                    DatabaseException,
                                    LoggingException,
                                    net.kwfgrid.gworkflowdl.structure.WorkflowFormatException,
                                    GWESException,
                                    RemoteException,
                                    WorkflowSecurityException
    Get all propertries of a specific workflow. The properties are encoded in a two dimensional String array containing the name and the value for each property. Example:
     properties = getProperties(workflowID);
     properties[0][0] //Name of the first workflow property
     properties[0][1] //Value of the first workflow property
     properties[1][0] //Name of the second worklfow property
     properties[1][1] //Value of the second workflow property
     

    Parameters:
    workflowID -
    userID -
    Returns:
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    net.kwfgrid.gworkflowdl.structure.WorkflowFormatException
    GWESException
    RemoteException
    WorkflowSecurityException

    getCheckpoints

    String[] getCheckpoints(String workflowID,
                            String userID)
                            throws NoSuchWorkflowException,
                                   DatabaseException,
                                   LoggingException,
                                   GWESException,
                                   RemoteException,
                                   WorkflowSecurityException
    Get the path of all available checkpoints for a specific workflow.

    Parameters:
    workflowID - The workflow identifier.
    userID -
    Returns:
    A String array containing the checkpoint paths.
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    remove

    void remove(String workflowID,
                int level,
                String userID)
                throws NoSuchWorkflowException,
                       DatabaseException,
                       LoggingException,
                       GWESException,
                       RemoteException,
                       WorkflowSecurityException
    Remove a specific workflow from memory, database, and/or its temporary data on the Grid nodes. The level denotes from where to remove the workflow:
  • level = 1: main memory
  • level = 2: workflow database
  • level = 3: main memory AND workflow database
  • level = 4: temporary data on Grid nodes
  • level = 5: main memory AND temporary data on Grid nodes
  • level = 6: workflow database AND temporary data on Grid nodes
  • level = 7: main memory AND workflow database AND temporary data on Grid nodes

    Parameters:
    workflowID - The workflow identifier.
    level - From where to remove the workflow data.
    userID - The user ID.
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

  • getActivityStatusArray

    String[][] getActivityStatusArray(String workflowID,
                                      String userID)
                                      throws LoggingException,
                                             NoSuchWorkflowException,
                                             GWESException,
                                             RemoteException,
                                             WorkflowSecurityException
    Get the status array of all instantiated activities of a given workflow. Example String array for one activity:
     ID=hoheisel_2addc790-416a-11de-97f3-9cdc141524de_0000000025
     status=ACTIVE
     activityClass=net.kwfgrid.gwes.wsgramactivity.GRAMActivity
     operationName=software:makeload100
     resourceName=hardware:quadro.first.fhrg.fraunhofer.de
     timeoutActive=7200000
     timeoutRunning=86400000
     birthdayMs=1242403824742
     durationUndefinedMs=1
     durationInitiatedMs=1
     durationRunningMs=1886
     durationActiveMs=0
     durationSuspendedMs=0
     durationTotalMs=0
     endTimeMs=0
         

    Parameters:
    workflowID - The workflow identifier.
    userID -
    Returns:
    The current activity status as an array of string arrays
    Throws:
    NoSuchWorkflowException - If the workflow identifier is unknown to this GWES.
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    getAvailableResources

    String[] getAvailableResources(String ofClass,
                                   String userID)
                                   throws DatabaseException,
                                          LoggingException,
                                          GWESException,
                                          RemoteException,
                                          WorkflowSecurityException
    Get a list of all available resources. The information is returned in an Array of XML Strings: Example:
     String[] resources = getAvailableResources("urn:dgrdl:software");
     resources[0]=
     <resource>
       <uri>software:cat-fhrg</uri>                     // Operation URI
       <classUri>urn:dgrdl:software:cat</classUri>      // Operation Class URI (workflow: operationClass name="...")
       <name>cat</name>                                 // Operation Name
       <description>Program that concatenates two files<description> // Operation Description
     </resource>
     

    Parameters:
    ofClass - The class which this resource should be part of. This method only checkes whether the class starts with the given ofClass parameter, e.g., "urn:dgrdl:software" would match both classes: "urn:dgrdl:software:A" as well as "urn:dgrdl:software:B". If ofClass is null then all classes of resources are returned.
    userID -
    Returns:
    The list of resources of a certain class as array of XML strings.
    Throws:
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException

    getResourceDescription

    String getResourceDescription(String resourceUri,
                                  String userID)
                                  throws DatabaseException,
                                         LoggingException,
                                         GWESException,
                                         RemoteException,
                                         WorkflowSecurityException
    Get the resource description of a specific resource in D-GRDL syntax.

    Parameters:
    resourceUri - The resource URI.
    userID -
    Returns:
    A String which contains the D-GRDL document of the resource.
    Throws:
    DatabaseException
    LoggingException
    GWESException
    RemoteException
    WorkflowSecurityException


    Copyright © 2005-2011 Fraunhofer FIRST. All Rights Reserved.