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: ExecutionObject.java,v 1.3 2006/09/29 12:32:07 drmlipp Exp $
021: *
022: * $Log: ExecutionObject.java,v $
023: * Revision 1.3 2006/09/29 12:32:07 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.2 2005/01/05 21:29:21 mlipp
027: * Added method to retrieve handled exceptions.
028: *
029: * Revision 1.1.1.2 2003/12/19 13:01:24 drmlipp
030: * Updated to 1.1rc1
031: *
032: * Revision 1.12 2003/09/23 14:27:37 lipp
033: * Moved definition of closed.completed substates to activity (only used
034: * there).
035: *
036: * Revision 1.11 2003/09/19 13:09:08 lipp
037: * Added substate for closed.completed.
038: *
039: * Revision 1.10 2003/06/27 08:51:46 lipp
040: * Fixed copyright/license information.
041: *
042: * Revision 1.9 2003/04/26 16:11:15 lipp
043: * Moved some classes to reduce package dependencies.
044: *
045: * Revision 1.8 2003/04/25 14:50:59 lipp
046: * Fixed javadoc errors and warnings.
047: *
048: * Revision 1.7 2003/03/04 10:02:04 lipp
049: * Moved typed priority out of public API.
050: *
051: * Revision 1.6 2002/11/26 11:23:30 lipp
052: * Modified RemoteException comment.
053: *
054: * Revision 1.5 2002/09/24 15:53:04 lipp
055: * Fixed param tape of changeState.
056: *
057: * Revision 1.4 2002/09/20 20:23:38 lipp
058: * Declaring type-safe state methods in interface.
059: *
060: * Revision 1.3 2002/09/18 09:47:01 huaiyang
061: * Use readResolve method to make enumerations typesafe.
062: *
063: * Revision 1.2 2002/01/22 08:58:04 lipp
064: * Javadoc fixes.
065: *
066: * Revision 1.1 2002/01/15 14:25:01 robert
067: * replace from workflow/domain to workflow/api
068: *
069: * Revision 1.5 2002/01/10 15:46:13 lipp
070: * Made fromInt static.
071: *
072: * Revision 1.4 2002/01/10 15:36:53 lipp
073: * Cleaned up definition of Priority.
074: *
075: */
076: package de.danet.an.workflow.api;
077:
078: import java.rmi.RemoteException;
079:
080: import de.danet.an.workflow.omgcore.InvalidStateException;
081: import de.danet.an.workflow.omgcore.TransitionNotAllowedException;
082: import de.danet.an.workflow.omgcore.WfExecutionObject;
083:
084: /**
085: * Interface <code>ExecutionObject</code> extends the {@link
086: * de.danet.an.workflow.omgcore.WfExecutionObject OMG execution
087: * object} with additional methods that allow the type-safe {@link
088: * de.danet.an.workflow.omgcore.WfExecutionObject.State state class}
089: * to be used to query and set state. The OMG API provides string
090: * based methods only to enable vendors to define additional
091: * sub-states. The type-safe equivalent is to define new subclasses of
092: * the state classes.
093: */
094: public interface ExecutionObject extends WfExecutionObject {
095:
096: /**
097: * Type-safe equivalent to {@link
098: * de.danet.an.workflow.omgcore.WfExecutionObject#state
099: * <code>WfExecutionObject.state()</code>}.
100: *
101: * @return the state.
102: * @throws RemoteException if a system-level error occurs.
103: */
104: State typedState() throws RemoteException;
105:
106: /**
107: * Type-safe equivalent to {@link
108: * de.danet.an.workflow.omgcore.WfExecutionObject#changeState
109: * <code>WfExecutionObject.changeState()</code>}.
110: *
111: * @param newState state to change to.
112: * @throws InvalidStateException if <code>newState</code> is an invalid
113: * state for the execution object.
114: * @throws TransitionNotAllowedException if the transition from the current
115: * state to <code>newState</code> is not allowed.
116: * @throws RemoteException if a system-level error occurs.
117: */
118: void changeState(State newState) throws RemoteException,
119: InvalidStateException, TransitionNotAllowedException;
120:
121: /**
122: * Checks if the execution object is in debugging mode.
123: *
124: * @return <code>true</code> if the execution object is in
125: * debugging mode
126: * @throws RemoteException if a system-level error occurs
127: */
128: boolean debugEnabled() throws RemoteException;
129: }
|