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.env;
19
20 import java.io.Serializable;
21 import java.net.URI;
22 import java.util.Collection;
23 import java.util.List;
24 import java.util.Map;
25
26 import nextgrid.api.pem.POMListener;
27
28 /**
29 * Provides environment context and services to the processes involved in
30 * a workflow enaction.
31 * <p>
32 * It also provides control and monitoring operations for the enaction user.
33 *
34 * @author Rodrigo Ruiz
35 */
36 public interface ProcessEnvironment extends Serializable {
37
38 // ==========================================================================
39 // Discoverers management
40 // ==========================================================================
41
42 /**
43 * Gets the discoverer instances registered in this environment.
44 *
45 * @return A list of discoverers
46 */
47 List<ProcessDiscoverer> getDiscoverers();
48
49 /**
50 * Gets a discoverer for the specified process id.
51 * <p>
52 * The selection of the appropriate instance is up to the implementation.
53 *
54 * @param id A process id
55 * @return A discoverer
56 * @throws DiscoveryException If an error occurs selecting a discoverer
57 */
58 ProcessDiscoverer getDiscovererFor(URI id) throws DiscoveryException;
59
60 /**
61 * Sets the discoverer associated to a given URI.
62 *
63 * @param id A process id
64 * @param discoverer A discoverer instance
65 */
66 void setDiscovererFor(URI id, ProcessDiscoverer discoverer);
67
68 /**
69 * Sets the discoverer instance associated to all processes without
70 * an explicit one.
71 *
72 * @param discoverer A discoverer instance
73 */
74 void setDefaultDiscoverer(ProcessDiscoverer discoverer);
75
76 // ==========================================================================
77 // Prioritisers management
78 // ==========================================================================
79
80 /**
81 * Gets the prioritiser instances.
82 *
83 * @return A list of prioritisers
84 */
85 List<Prioritiser> getPrioritisers();
86
87 /**
88 * Gets a prioritiser for the specified process id.
89 * <p>
90 * The selection of the appropriate instance is up to the implementation.
91 *
92 * @param id A process id
93 * @return A prioritiser
94 */
95 Prioritiser getPrioritiserFor(URI id);
96
97 /**
98 * Sets the prioritiser associated to a given URI.
99 *
100 * @param id A process id
101 * @param prioritiser A prioritiser instance
102 */
103 void setPrioritiser(URI id, Prioritiser prioritiser);
104
105 /**
106 * Sets the prioritiser instance associated to all processes without
107 * an explicit one.
108 *
109 * @param prioritiser A prioritiser instance
110 */
111 void setDefaultPrioritiser(Prioritiser prioritiser);
112
113 // ==========================================================================
114 // Selectors management
115 // ==========================================================================
116
117 /**
118 * Gets the selector instances registered in this environment.
119 *
120 * @return A list of selectors
121 */
122 List<ProcessSelector> getSelectors();
123
124 /**
125 * Gets a selector for the specified process id.
126 * <p>
127 * The selection of the appropriate instance is up to the implementation.
128 *
129 * @param id A process id
130 * @return A selector
131 */
132 ProcessSelector getSelectorFor(URI id);
133
134 /**
135 * Sets the selector associated to a given URI.
136 *
137 * @param id A process id
138 * @param selector A selector instance
139 */
140 void setSelectorFor(URI id, ProcessSelector selector);
141
142 /**
143 * Sets the selector instance associated to all processes without
144 * an explicit one.
145 *
146 * @param selector A selector instance
147 */
148 void setDefaultSelector(ProcessSelector selector);
149
150 // ==========================================================================
151 // Security management
152 // added by Nikolaos Matskanis, IT Innovation
153 // ==========================================================================
154
155 /**
156 * Gets the security module.
157 * <p>
158 * The security token service client module implementation.
159 *
160 * @return Security module instance
161 */
162 STSModule getSTSModule();
163
164 /**
165 * Sets the security module implementation.
166 *
167 * @param stsmod A STS module instance
168 */
169 void setSTSModule(STSModule stsmod);
170
171 // ==========================================================================
172 // Listeners management
173 // ==========================================================================
174
175 /**
176 * Adds one or more listeners to a given process.
177 *
178 * @param id The id of the Process to attach these listeners to
179 * @param listeners The listeners to attach
180 */
181 void addListenersFor(URI id, POMListener... listeners);
182
183 /**
184 * Gets a collection of listeners to be attached to the given Process id.
185 *
186 * @param id The id of the Process
187 * @return A collection of listeners
188 */
189 Collection<POMListener> getListenersFor(URI id);
190
191 /**
192 * Removes one or more listeners from the attachment map.
193 *
194 * @param id The id of the Process to detach these listeners from
195 * @param listeners The listeners to detach
196 */
197 void removeListenersFrom(URI id, POMListener... listeners);
198
199 /**
200 * Clears all listeners registered in this environment instance.
201 */
202 void clearListeners();
203
204 /**
205 * Clears all listeners registered for a given Process in this environment
206 * instance.
207 *
208 * @param id The id of the Process
209 */
210 void clearListenersFor(URI id);
211
212 /**
213 * Registers an arbitrary object in any collection it fits in. The interfaces
214 * <tt>obj</tt> implements will determine in which collections it is set.
215 * <p>
216 * If the object does not implement any relevant interface, nothing should
217 * be done. In particular, exceptions should never be thrown.
218 *
219 * @param id The Process URI to associate the component to
220 * @param obj Component
221 */
222 void setComponentFor(URI id, Object obj);
223
224
225 // ==========================================================================
226 // Attribute management
227 // ==========================================================================
228
229 /**
230 * Gets an environment attribute value.
231 *
232 * @param name Attribute name
233 * @return Attribute value
234 */
235 Serializable getAttribute(String name);
236
237 /**
238 * Sets an environment attribute value.
239 *
240 * @param name Attribute name
241 * @param value Attribute value
242 */
243 void setAttribute(String name, Serializable value);
244
245 /**
246 * Gets a map containing all attributes.
247 *
248 * @return A map with all attributes in this environment
249 */
250 Map<String, Serializable> getAttributes();
251 }