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: WfRequester.java,v 1.2 2006/09/29 12:32:09 drmlipp Exp $
021: *
022: * $Log: WfRequester.java,v $
023: * Revision 1.2 2006/09/29 12:32:09 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.1.1.2 2004/08/18 15:17:38 drmlipp
027: * Update to 1.2
028: *
029: * Revision 1.13 2004/02/27 09:59:03 schlue
030: * Spelling error.
031: *
032: * Revision 1.12 2003/06/27 08:51:45 lipp
033: * Fixed copyright/license information.
034: *
035: * Revision 1.11 2003/04/25 14:50:58 lipp
036: * Fixed javadoc errors and warnings.
037: *
038: * Revision 1.10 2003/02/06 12:47:14 lipp
039: * Implemented Requester (no event handling yet).
040: *
041: * Revision 1.9 2002/11/26 11:23:29 lipp
042: * Modified RemoteException comment.
043: *
044: * Revision 1.8 2002/04/03 12:53:05 lipp
045: * JavaDoc fixes.
046: *
047: * Revision 1.7 2001/12/13 20:58:14 lipp
048: * Comments improved.
049: *
050: * Revision 1.6 2001/10/09 14:01:23 lipp
051: * Minor javadoc errors fixed.
052: *
053: * Revision 1.5 2001/10/06 11:40:29 lipp
054: * Some javadoc fixes.
055: *
056: * Revision 1.4 2001/08/24 12:58:30 lipp
057: * CR/NL fixes
058: *
059: * Revision 1.3 2001/08/09 16:11:07 montag
060: * one step closer to deployment
061: *
062: * Revision 1.2 2001/07/26 15:57:40 lipp
063: * Methods returning Collections renamed.
064: *
065: * Revision 1.1 2001/07/06 08:51:49 lipp
066: * Moved from domain to omgcore
067: *
068: * Revision 1.3 2001/07/05 14:15:10 lipp
069: * Rather complete version.
070: *
071: * Revision 1.2 2001/07/04 09:51:02 lipp
072: * Fixed Copyright notice
073: *
074: */
075: package de.danet.an.workflow.omgcore;
076:
077: import java.util.Collection;
078:
079: import java.rmi.RemoteException;
080:
081: /**
082: * <code>WfRequester</code> is the interface that has a direct concern
083: * with the execution and results of a workflow process. It represents
084: * the request for some work to be done. Its performer, a {@link
085: * de.danet.an.workflow.omgcore.WfProcess <code>WfProcess</code>} is
086: * expected to handle its request and communicate significant status
087: * changes; in particular to inform the requester when it has
088: * completed performing the request work.<P>
089: *
090: * The support of <code>WfRequester</code>s in a workflow engine
091: * implementation is complicated because the {@link
092: * WfAuditHandler#receiveEvent <code>receiveEvent</code>} method
093: * reverses the client server relationship and because an object from
094: * the application space must be stored by the server.<P>
095: *
096: * Implementations of <code>WfRequester</code> are therefore subject
097: * to the following restrictions:
098: * <ul>
099: * <li>The implementation must implement
100: * {@link java.io.Serializable <code>java.io.Serializable</code>}.
101: * Make sure not to use any attributes that are not serializable.
102: * </li>
103: * <li>In order for deserialization to work, the implementation's
104: * class file must be in the classpath of the application server.
105: * </li>
106: * <li>The implementation must provide proper {@link Object#equals
107: * <code>equals</code>} and {@link Object#hashCode <code>hashCode</code>}
108: * methods.
109: * </li>
110: * </ul>
111: *
112: * Most applications will simply use the requester provided as {@link
113: * de.danet.an.workflow.api.DefaultRequester
114: * <code>DefaultRequester</code>}.
115: */
116: public interface WfRequester extends WfObject, WfAuditHandler {
117:
118: /**
119: * Return all performers associated with this requester.
120: *
121: * @return A {@link java.util.Collection collection} of
122: * associated performers.
123: * @throws RemoteException if a system-level error occurs.
124: **/
125: Collection performers() throws RemoteException;
126:
127: /**
128: * Check if the given process is among the performers of this requester.
129: *
130: * @param member the process in question.
131: * @return <code>true</code> if the <code>process</code> is among
132: * the performers of this requester.
133: * @throws RemoteException if a system-level error occurs.
134: */
135: boolean isMemberOfPerformers(WfProcess member)
136: throws RemoteException;
137:
138: /**
139: * @clientCardinality 0..1
140: * @supplierCardinality 0..*
141: * @clientQualifier requester
142: * @supplierQualifier performer
143: */
144: /*#WfProcess lnkWfProcess;*/
145: }
|