001: /*
002: * This file is part of the WfMOpen project.
003: * Copyright (C) 2001-2004 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: ToolAgentContext.java,v 1.4 2006/12/12 10:02:35 drmlipp Exp $
021: *
022: * $Log: ToolAgentContext.java,v $
023: * Revision 1.4 2006/12/12 10:02:35 drmlipp
024: * Added access to application id (for name scoping).
025: *
026: * Revision 1.3 2006/10/13 11:45:28 drmlipp
027: * Using ExceptionResult to pass exception information.
028: *
029: * Revision 1.2 2006/09/29 12:32:10 drmlipp
030: * Consistently using WfMOpen as projct name now.
031: *
032: * Revision 1.1.1.1 2004/08/18 15:17:38 drmlipp
033: * Update to 1.2
034: *
035: * Revision 1.1 2004/04/01 09:32:07 lipp
036: * Improved tool agent context implementtaion.
037: *
038: * Revision 1.2 2004/03/31 20:47:21 lipp
039: * Added processDirectory().
040: *
041: * Revision 1.1 2004/03/29 11:45:25 lipp
042: * Made engine context available to tool agents.
043: *
044: */
045: package de.danet.an.workflow.spis.aii;
046:
047: import java.io.Serializable;
048:
049: import java.util.Map;
050:
051: import java.rmi.RemoteException;
052:
053: import de.danet.an.workflow.omgcore.CannotCompleteException;
054: import de.danet.an.workflow.omgcore.InvalidDataException;
055: import de.danet.an.workflow.omgcore.TransitionNotAllowedException;
056: import de.danet.an.workflow.spis.aii.ResultProvider.ExceptionResult;
057:
058: import de.danet.an.workflow.api.Activity;
059: import de.danet.an.workflow.api.ActivityUniqueKey;
060: import de.danet.an.workflow.api.InvalidKeyException;
061:
062: /**
063: * This interface defines methods of the workflow engine that are
064: * available to a tool agent. An agent implementation that wants to
065: * use these methods must implement the {@link ContextRequester
066: * <code>ContextRequester</code>} interface.
067: *
068: * @author <a href="mailto:lipp@danet.de">Michael Lipp</a>
069: * @version $Revision: 1.4 $
070: * @since 1.2
071: */
072: public interface ToolAgentContext extends Serializable {
073:
074: /**
075: * Return the id given to the application in the process definition.
076: * @return the id
077: */
078: String applicationId();
079:
080: /**
081: * Set a result and complete the invoking activity in a new
082: * transaction.<P>
083: *
084: * @param result the tool's result data. If <code>null</code> do
085: * not call <code>setResult</code>.
086: * @throws InvalidDataException see {@link
087: * de.danet.an.workflow.omgcore.WfActivity#setResult
088: * <code>WfActivity.setResult(...)</code>}
089: * @throws CannotCompleteException see {@link
090: * de.danet.an.workflow.omgcore.WfActivity#complete
091: * <code>WfActivity.complete()</code>}
092: */
093: void finishActivity(Map result) throws InvalidDataException,
094: CannotCompleteException;
095:
096: /**
097: * Abandon the invoking activity in a new transaction.<P>
098: *
099: * @param exception the exception to signal
100: * @throws TransitionNotAllowedException see {@link
101: * de.danet.an.workflow.api.Activity#abandon(String)
102: * <code>Activity.abandon()</code>}
103: */
104: void abandonActivity(String exception)
105: throws TransitionNotAllowedException;
106:
107: /**
108: * Abandon the invoking activity in a new transaction
109: * and maybe suspend it.<P>
110: *
111: * @param result the exception information
112: * @throws TransitionNotAllowedException see {@link
113: * de.danet.an.workflow.api.Activity#abandon(String)
114: * <code>Activity.abandon()</code>}
115: */
116: void abandonActivity(ExceptionResult result)
117: throws TransitionNotAllowedException;
118:
119: /**
120: * Lookup the given ativity specified by its unique key.
121: * @param auk the activity's unique key
122: * @return the activity
123: * @throws InvalidKeyException if the activity specified by
124: * <code>auk</code> cannot be found.
125: * @throws RemoteException if a system-level error occurs.
126: */
127: Activity lookupActivity(ActivityUniqueKey auk)
128: throws InvalidKeyException, RemoteException;
129: }
|