001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2003 Danet GmbH (www.danet.de), GS-AN.
004: * All rights reserved.
005: *
006: * This program is free software; you can redistribute it and/or modify
007: * it under the terms of the GNU General Public License as published by
008: * the Free Software Foundation; either version 2 of the License, or
009: * (at your option) any later version.
010: *
011: * This program is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
014: * GNU General Public License for more details.
015: *
016: * You should have received a copy of the GNU General Public License
017: * along with this program; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
019: *
020: * $Id: ResourceManagementService.java,v 1.3 2006/09/29 12:32:12 drmlipp Exp $
021: *
022: * $Log: ResourceManagementService.java,v $
023: * Revision 1.3 2006/09/29 12:32:12 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.2 2006/09/28 19:35:13 mlipp
027: * Fixed typos.
028: *
029: * Revision 1.1.1.1 2003/06/30 20:05:17 drmlipp
030: * Initial import
031: *
032: * Revision 1.3 2003/06/27 08:51:44 lipp
033: * Fixed copyright/license information.
034: *
035: * Revision 1.2 2003/04/25 14:50:58 lipp
036: * Fixed javadoc errors and warnings.
037: *
038: * Revision 1.1 2002/12/19 21:37:42 lipp
039: * Reorganized interfaces.
040: *
041: * Revision 1.11 2002/11/26 11:23:29 lipp
042: * Modified RemoteException comment.
043: *
044: * Revision 1.10 2002/01/09 14:48:51 lipp
045: * Changed access to current user as resource.
046: *
047: * Revision 1.9 2002/01/08 18:12:06 lipp
048: * Method to determined currently logged on user moved to resource
049: * management service.
050: *
051: * Revision 1.8 2001/12/20 16:24:25 lipp
052: * Resource assignment extended.
053: *
054: * Revision 1.7 2001/12/17 15:50:36 lipp
055: * New list method.
056: *
057: * Revision 1.6 2001/12/17 15:21:37 robert
058: * Implement asResource and resourceBykey methods
059: *
060: * Revision 1.5 2001/12/09 14:03:08 lipp
061: * Improved design of workflow/resource management interface.
062: *
063: * Revision 1.4 2001/12/05 13:50:54 robert
064: * first working version
065: *
066: * Revision 1.3 2001/12/04 14:03:15 lipp
067: * Changed WfReousource to Resource.
068: *
069: * Revision 1.2 2001/11/30 11:43:26 lipp
070: * javadoc fixes.
071: *
072: * Revision 1.1 2001/11/27 18:26:42 lipp
073: * Resource handling redesigned.
074: *
075: */
076: package de.danet.an.workflow.spis.rms;
077:
078: import java.util.Collection;
079:
080: import java.rmi.RemoteException;
081: import java.security.Principal;
082:
083: import de.danet.an.workflow.omgcore.WfResource;
084:
085: /**
086: * This interface defines the workflow resource management service
087: * used in the workflow package.
088: */
089: public interface ResourceManagementService {
090:
091: /**
092: * Given a {@link java.security.Principal principal}, return the
093: * workflow resource associated with this principal by the
094: * resource management facility.<P>
095: *
096: * This method is usually used to get
097: * a <code>WfResource</code> object corresponding to the current
098: * user. The <code>WfResource</code> object can subsequently be used
099: * to e.g. determine the current user's worklist.
100: *
101: * @param principal the principal.
102: * @return a <code>WfResource</code> object corresponding to the
103: * given principal.
104: * @throws ResourceNotFoundException if the StaffMember with the given key
105: * can't be found or the key is not associate with an StaffMember object.
106: * @throws RemoteException if a system-level error occurs.
107: */
108: WfResource asResource(Principal principal)
109: throws ResourceNotFoundException, RemoteException;
110:
111: /**
112: * Given a {@link de.danet.an.workflow.omgcore.WfResource
113: * <code>WfResource</code> object}, return the collection of
114: * resources this resource is authorized for.<P>
115: *
116: * This method usually returns all groups the resource is a
117: * member of and all roles assigned to the resource.
118: *
119: * @param resource the resource.
120: * @return a collection of <code>WfResource</code> objects, not
121: * including <code>resource</code>
122: * @throws RemoteException if a system-level error occurs.
123: */
124: Collection authorizers(WfResource resource) throws RemoteException;
125:
126: /**
127: * Given a <code>key</code>, return the
128: * workflow resource associated with this key.<P>
129: *
130: * This method is usually used to get
131: * a <code>WfResource</code> object corresponding to the given key.
132: *
133: * @param key the key.
134: * @return a <code>WfResource</code> object corresponding to the
135: * given key.
136: * @throws ResourceNotFoundException if the StaffMember or an StaffGroup
137: * with the given key can't be found.
138: * @throws RemoteException if a system-level error occurs.
139: */
140: WfResource resourceByKey(String key)
141: throws ResourceNotFoundException, RemoteException;
142:
143: /**
144: * List all available resources.
145: *
146: * @return collection of <code>WfResource</code> objects.
147: * @throws RemoteException if a system-level error occurs.
148: */
149: Collection listResources() throws RemoteException;
150:
151: /**
152: * This optional method selects resources based on the resource
153: * selection criteria passed as parameter. <P>
154: *
155: * Usually, criteria for the resource selection must be determined
156: * within the resource assignment, based on the list of resources
157: * obtained with {@link #listResources
158: * <code>listResources</code>}. Implementations of resource
159: * management facilities may, however, support some query
160: * functionality that eases this task for the resource assignment
161: * service. The resource assignment service may have received
162: * such resource selection information from the workflow engine
163: * via {@link
164: * de.danet.an.workflow.spis.ras.ResourceAssignmentService#autoAssignResources
165: * <code>autoAssignResources</code>} (the workflow component has
166: * obtained the information probably as part of the process
167: * description and passed it through transparently).
168: *
169: * @param resSel an object that describes resource selection criteria.
170: * @return collection of <code>WfResource</code> objects.
171: * @throws RemoteException if a system-level error occurs.
172: * @throws UnsupportedOperationException if the resource management
173: * service does not support this feature.
174: */
175: Collection selectResources(Object resSel) throws RemoteException,
176: UnsupportedOperationException;
177:
178: }
|