View Javadoc

1   /*
2    Copyright (C) 2007 Grid Systems, S.A.
3   
4    This library is free software; you can redistribute it and/or
5    modify it under the terms of the GNU Lesser General Public
6    License as published by the Free Software Foundation; either
7    version 2.1 of the License, or (at your option) any later version.
8   
9    This library is distributed in the hope that it will be useful,
10   but WITHOUT ANY WARRANTY; without even the implied warranty of
11   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12   Lesser General Public License for more details.
13  
14   You should have received a copy of the GNU Lesser General Public
15   License along with this library; if not, write to the Free Software
16   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301 USA
17  */
18  package nextgrid.api.pom;
19  
20  /**
21   * Provides control and monitoring operations for the enaction user.
22   *
23   * @author Rodrigo Ruiz
24   */
25  public interface ProcessController {
26  
27    /**
28     * Workflow state.
29     */
30    public static enum State {
31      /** Default State. */
32      RUNNING,
33      /** Pause state (until resumed or cancelled). */
34      PAUSED,
35      /** Cancelled state. */
36      CANCELLED,
37      /** Finished state. */
38      FINISHED
39    }
40  
41    /**
42     * Pauses a workflow execution.
43     *
44     * @throws ProcessException If an error occurs
45     * @throws InterruptedException If the thread execution is interrupted
46     */
47    void pause() throws ProcessException, InterruptedException;
48  
49    /**
50     * Resumes a workflow execution.
51     *
52     * @throws ProcessException If an error occurs
53     */
54    void resume() throws ProcessException;
55  
56    /**
57     * Gets the current state of the workflow execution.
58     *
59     * @return The workflow execution current state
60     */
61    State getState();
62  
63    /**
64     * Starts the process enaction.
65     *
66     * @throws ProcessException If an error occurs
67     */
68    void start() throws ProcessException;
69  
70    /**
71     * Cancels the process enaction.
72     *
73     * @throws ProcessException If an error occurs
74     * @throws InterruptedException If the thread execution is interrupted
75     */
76    void cancel() throws ProcessException, InterruptedException;
77  
78    /**
79     * Suspends the current thread until the workflow execution finishes.
80     *
81     * @throws ProcessException If an error occurs
82     * @throws InterruptedException If the thread execution is interrupted
83     */
84    void join() throws ProcessException, InterruptedException;
85  
86    /**
87     * Synchronous workflow execution.
88     *
89     * @throws ProcessException If an error occurs
90     * @throws InterruptedException If the thread execution is interrupted
91     */
92    void run() throws ProcessException, InterruptedException;
93  }