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: WfActivityLocal.java,v 1.1 2007/05/03 21:58:19 mlipp Exp $
021: *
022: * $Log: WfActivityLocal.java,v $
023: * Revision 1.1 2007/05/03 21:58:19 mlipp
024: * Internal refactoring for making better use of local EJBs.
025: *
026: */
027: package de.danet.an.workflow.localcoreapi;
028:
029: import java.util.Collection;
030:
031: import de.danet.an.workflow.omgcore.CannotCompleteException;
032: import de.danet.an.workflow.omgcore.InvalidDataException;
033: import de.danet.an.workflow.omgcore.ProcessData;
034: import de.danet.an.workflow.omgcore.ResultNotAvailableException;
035: import de.danet.an.workflow.omgcore.WfAssignment;
036: import de.danet.an.workflow.omgcore.WfRequester;
037:
038: /**
039: * <code>WfActivity</code> is a step in a process that is associated,
040: * as part of an aggregation, with a single
041: * {@link de.danet.an.workflow.localcoreapi.WfProcessLocal <code>WfProcess</code>}.
042: * It represents a request for work in the context of the containing
043: * <code>WfProcess</code>.
044: **/
045: public interface WfActivityLocal extends WfExecutionObjectLocal {
046:
047: /**
048: * Returns all the <code>WfAssignment</code> associated with a
049: * <code>WfActivity</code>.
050: * @return the collection of all the WfAssignment.
051: */
052: Collection assignments();
053:
054: /**
055: * Check if the given assignment is among the assignments of this
056: * activity.
057: * @param member the assignment in question.
058: * @return true if the assignment is among the assignments of this
059: * activity.
060: */
061: boolean isMemberOfAssignments(WfAssignment member);
062:
063: /**
064: * Returns the <code>WfProcess</code> that this activity is a part of.
065: * @return the process.
066: */
067: WfProcessLocal containerLocal();
068:
069: /**
070: * Returns the result produced by the realization of the work request
071: * represented by an activity.
072: * @return the process data as result
073: * @throws ResultNotAvailableException if accessing to the result of an
074: * activity is not supported or the result data are not available yet.
075: */
076: ProcessData result() throws ResultNotAvailableException;
077:
078: /**
079: * Passes result data back to the workflow process. The data item
080: * names must be the names of formal IN or OUT parameters of the
081: * currently invoked tool or subflow.
082: *
083: * @param result the result data.
084: * @throws InvalidDataException if the data do not match the signature of
085: * the activity or when an invalid attempt is made to update the results
086: * of an activity; lack of access rights might be one of those reasons.
087: */
088: void setResult(ProcessData result) throws InvalidDataException;
089:
090: /**
091: * This method is used by an application to signal the completion
092: * of an activity. Note that this does not necessarily imply that
093: * the activity's state changes to
094: * <code>closed.completed</code>.<P>
095: *
096: * XPDL allows an activity to be implemented by several tools that
097: * are executed in sequence. Only if <code>complete</code> is
098: * called after the last tool has been started will the workflow
099: * engine change the activity's state to
100: * <code>closed.completed</code>. Else the activity will remain in
101: * the <code>open.running</code> state and the next tool will be started.
102: * If <code>complete</code> is called while the activity's state has been
103: * set to <code>open.not_running.suspended</code>
104: * the next tool will not be started until the activity is resumed.<P>
105: *
106: * The {@link de.danet.an.workflow.localapi.ActivityLocal extended API}
107: * provides methods for finding out which tool is currently being
108: * executed.
109: * @throws CannotCompleteException if the activity cannot be completed yet.
110: */
111: void complete() throws CannotCompleteException;
112: }
|