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: ActivityBase.java,v 1.15 2007/05/03 21:58:18 mlipp Exp $
021: *
022: * $Log: ActivityBase.java,v $
023: * Revision 1.15 2007/05/03 21:58:18 mlipp
024: * Internal refactoring for making better use of local EJBs.
025: *
026: * Revision 1.14 2007/02/27 14:34:15 drmlipp
027: * Some refactoring to reduce cyclic dependencies.
028: *
029: * Revision 1.13 2007/01/30 11:56:15 drmlipp
030: * Merged Wf-XML branch.
031: *
032: * Revision 1.12 2006/12/14 16:05:51 drmlipp
033: * Changed handling of conditions in exception transitions.
034: *
035: * Revision 1.11 2006/10/17 22:58:39 mlipp
036: * Continuing implementation of suspended exception handling.
037: *
038: * Revision 1.10 2006/10/13 11:41:58 drmlipp
039: * New attribute for saving exception name.
040: *
041: * Revision 1.9 2006/09/29 12:32:08 drmlipp
042: * Consistently using WfMOpen as projct name now.
043: *
044: * Revision 1.8 2006/03/08 14:46:43 drmlipp
045: * Synchronized with 1.3.3p5.
046: *
047: * Revision 1.7 2005/10/15 21:19:38 mlipp
048: * Added support for providing WfAssignment
049: * implementations based purely on methods of Activity.
050: *
051: * Revision 1.6 2005/08/25 13:24:22 drmlipp
052: * Synchronized with 1.3.1p6.
053: *
054: * Revision 1.5 2005/02/04 14:25:26 drmlipp
055: * Synchronized with 1.3rc2.
056: *
057: * Revision 1.4.2.3 2005/02/01 21:15:52 drmlipp
058: * Fixed audit event generation for deferred choice.
059: *
060: * Revision 1.4.2.2 2005/02/01 16:08:44 drmlipp
061: * Implemented deferred choice.
062: *
063: * Revision 1.4.2.1 2005/01/31 15:41:12 drmlipp
064: * Started implementation of deferred choice.
065: *
066: * Revision 1.4 2005/01/09 21:32:42 mlipp
067: * Added support for debugging exceptions and deadlines.
068: *
069: * Revision 1.3 2005/01/05 21:29:22 mlipp
070: * Added method to retrieve handled exceptions.
071: *
072: * Revision 1.2 2005/01/02 20:49:13 mlipp
073: * First version of debug mode.
074: *
075: * Revision 1.1.1.1 2004/08/18 15:17:38 drmlipp
076: * Update to 1.2
077: *
078: * Revision 1.2 2004/06/14 19:37:20 lipp
079: * Fixed assignment functions and cleaned up assignment related
080: * interfaces.
081: *
082: * Revision 1.1 2004/05/06 19:39:18 lipp
083: * Restructured block activity handling.
084: *
085: */
086: package de.danet.an.workflow.domain;
087:
088: import java.io.Serializable;
089:
090: import java.util.Collection;
091: import java.util.Date;
092: import java.util.List;
093: import java.util.Map;
094:
095: import de.danet.an.workflow.internalapi.ExtActivityLocal;
096: import de.danet.an.workflow.internalapi.ExtApplication;
097: import de.danet.an.workflow.internalapi.ThreadInfo;
098: import de.danet.an.workflow.localapi.ProcessLocal;
099: import de.danet.an.workflow.localcoreapi.WfProcessLocal;
100: import de.danet.an.workflow.omgcore.AlreadyRunningException;
101: import de.danet.an.workflow.omgcore.AlreadySuspendedException;
102: import de.danet.an.workflow.omgcore.CannotCompleteException;
103: import de.danet.an.workflow.omgcore.CannotResumeException;
104: import de.danet.an.workflow.omgcore.CannotStopException;
105: import de.danet.an.workflow.omgcore.CannotSuspendException;
106: import de.danet.an.workflow.omgcore.HistoryNotAvailableException;
107: import de.danet.an.workflow.omgcore.InvalidDataException;
108: import de.danet.an.workflow.omgcore.InvalidPerformerException;
109: import de.danet.an.workflow.omgcore.InvalidPriorityException;
110: import de.danet.an.workflow.omgcore.InvalidResourceException;
111: import de.danet.an.workflow.omgcore.InvalidStateException;
112: import de.danet.an.workflow.omgcore.NotAssignedException;
113: import de.danet.an.workflow.omgcore.NotRunningException;
114: import de.danet.an.workflow.omgcore.NotSuspendedException;
115: import de.danet.an.workflow.omgcore.ProcessData;
116: import de.danet.an.workflow.omgcore.ResultNotAvailableException;
117: import de.danet.an.workflow.omgcore.TransitionNotAllowedException;
118: import de.danet.an.workflow.omgcore.UpdateNotAllowedException;
119: import de.danet.an.workflow.omgcore.WfAssignment;
120: import de.danet.an.workflow.omgcore.WfAuditEvent;
121: import de.danet.an.workflow.omgcore.WfProcess;
122: import de.danet.an.workflow.omgcore.WfResource;
123: import de.danet.an.workflow.omgcore.WfExecutionObject.State;
124:
125: import de.danet.an.workflow.api.Activity;
126: import de.danet.an.workflow.api.ActivityUniqueKey;
127: import de.danet.an.workflow.api.AlreadyAssignedException;
128: import de.danet.an.workflow.api.Activity.DeadlineInfo;
129: import de.danet.an.workflow.api.Activity.Implementation;
130: import de.danet.an.workflow.api.Activity.Info;
131: import de.danet.an.workflow.api.Activity.JoinAndSplitMode;
132:
133: import de.danet.an.workflow.spis.aii.ResultProvider.ExceptionResult;
134: import de.danet.an.workflow.spis.ras.ActivityFinder;
135:
136: /**
137: * This class provides an implementation of <code>ExtActivity</code>
138: * with all methods except <code>key()</code> throwing
139: * <code>UnsupportedOprationException</code>. This class can be used
140: * as a base class for incomplete activity implementations.
141: *
142: * @author <a href="mailto:mnl@mnl.de">Michael N. Lipp</a>
143: * @version $Revision: 1.15 $
144: */
145:
146: public abstract class ActivityBase implements ExtActivityLocal,
147: Serializable {
148:
149: private String key;
150:
151: /**
152: * Creates an instance of <code>ActivityBase</code>
153: * with all attributes initialized to given values.
154: * @param key activity key
155: */
156: public ActivityBase(String key) {
157: this .key = key;
158: }
159:
160: // Code for implementing de.danet.an.workflow.omgcore.WfRequester
161:
162: /* Comment copied from interface. */
163: public Collection performers() {
164: throw new UnsupportedOperationException();
165: }
166:
167: /* Comment copied from interface. */
168: public Date startTime() throws NotRunningException {
169: throw new UnsupportedOperationException();
170: }
171:
172: /* Comment copied from interface. */
173: public boolean isMemberOfPerformers(WfProcess member) {
174: throw new UnsupportedOperationException();
175: }
176:
177: // Code for implementing de.danet.an.workflow.api.Activity methods to ref
178:
179: /* Comment copied from interface. */
180: public ActivityUniqueKey uniqueKey() {
181: throw new UnsupportedOperationException();
182: }
183:
184: /* Comment copied from interface. */
185: public ActivityFinder activityFinder() {
186: throw new UnsupportedOperationException();
187: }
188:
189: /* Comment copied from interface. */
190: public Implementation[] implementation() {
191: throw new UnsupportedOperationException();
192: }
193:
194: /* Comment copied from interface. */
195: public DeadlineInfo[] deadlines() {
196: throw new UnsupportedOperationException();
197: }
198:
199: /* Comment copied from interface. */
200: public void invokeTool(ExtApplication appl, Map params) {
201: throw new UnsupportedOperationException();
202: }
203:
204: /* Comment copied from interface. */
205: public void abortRequester() {
206: throw new UnsupportedOperationException();
207: }
208:
209: /* Comment copied from interface. */
210: public String performer() {
211: throw new UnsupportedOperationException();
212: }
213:
214: /* Comment copied from interface. */
215: public Implementation executor() {
216: throw new UnsupportedOperationException();
217: }
218:
219: /* Comment copied from interface. */
220: public void setJoinMode(JoinAndSplitMode joinMode) {
221: throw new UnsupportedOperationException();
222: }
223:
224: /* Comment copied from interface. */
225: public JoinAndSplitMode joinMode() {
226: throw new UnsupportedOperationException();
227: }
228:
229: /* Comment copied from interface. */
230: public void setSplitMode(JoinAndSplitMode splitMode) {
231: throw new UnsupportedOperationException();
232: }
233:
234: /* Comment copied from interface. */
235: public JoinAndSplitMode splitMode() {
236: throw new UnsupportedOperationException();
237: }
238:
239: /* Comment copied from interface. */
240: public void setDebugEnabled(boolean debug)
241: throws InvalidStateException {
242: throw new UnsupportedOperationException();
243: }
244:
245: /* Comment copied from interface. */
246: public boolean debugEnabled() {
247: throw new UnsupportedOperationException();
248: }
249:
250: /* Comment copied from interface. */
251: public boolean deferChoiceOnSplit() {
252: return false;
253: }
254:
255: /* Comment copied from interface. */
256: public boolean preliminarilyChosen() {
257: throw new UnsupportedOperationException();
258: }
259:
260: /* Comment copied from interface. */
261: public void withdrawPreliminaryChoice(boolean reset)
262: throws TransitionNotAllowedException {
263: throw new UnsupportedOperationException();
264: }
265:
266: /* Comment copied from interface. */
267: public List nextActivities() {
268: throw new UnsupportedOperationException();
269: }
270:
271: /* Comment copied from interface. */
272: public Info activityInfo() {
273: throw new UnsupportedOperationException();
274: }
275:
276: /* Comment copied from interface. */
277: public void receiveEvent(WfAuditEvent evt)
278: throws InvalidPerformerException {
279: throw new UnsupportedOperationException();
280: }
281:
282: /* Comment copied from interface. */
283: public WfResource getResource(WfAssignment asnmnt) {
284: throw new UnsupportedOperationException();
285: }
286:
287: /* Comment copied from interface. */
288: public void changeAssignment(WfResource oldResource,
289: WfResource newResource) throws InvalidResourceException,
290: AlreadyAssignedException, NotAssignedException {
291: throw new UnsupportedOperationException();
292: }
293:
294: /* Comment copied from interface. */
295: public void removeAssignment(WfResource resource)
296: throws InvalidResourceException, NotAssignedException {
297: throw new UnsupportedOperationException();
298: }
299:
300: // Code for implementing de.danet.an.workflow.omgcore.WfActivity
301:
302: /* Comment copied from interface. */
303: public Collection assignments() {
304: throw new UnsupportedOperationException();
305: }
306:
307: /* Comment copied from interface. */
308: public boolean isMemberOfAssignments(WfAssignment member) {
309: throw new UnsupportedOperationException();
310: }
311:
312: /* Comment copied from interface. */
313: public WfProcessLocal containerLocal() {
314: throw new UnsupportedOperationException();
315: }
316:
317: /* Comment copied from interface. */
318: public ProcessData result() throws ResultNotAvailableException {
319: throw new UnsupportedOperationException();
320: }
321:
322: /* Comment copied from interface. */
323: public void setResult(ProcessData result)
324: throws InvalidDataException {
325: throw new UnsupportedOperationException();
326: }
327:
328: /* Comment copied from interface. */
329: public void complete() throws CannotCompleteException {
330: throw new UnsupportedOperationException();
331: }
332:
333: // Code for implementing de.danet.an.workflow.api.ExecutionObject
334:
335: /* Comment copied from interface. */
336: public State typedState() {
337: throw new UnsupportedOperationException();
338: }
339:
340: /* Comment copied from interface. */
341: public void changeState(State newState)
342: throws InvalidStateException, TransitionNotAllowedException {
343: throw new UnsupportedOperationException();
344: }
345:
346: // Code for implementing de.danet.an.workflow.omgcore.WfExecutionObject
347:
348: /* Comment copied from interface. */
349: public State workflowState() {
350: return typedState().workflowState();
351: }
352:
353: /* Comment copied from interface. */
354: public State whileOpen() {
355: return typedState().whileOpenState();
356: }
357:
358: /* Comment copied from interface. */
359: public State whyNotRunning() {
360: return typedState().whyNotRunningState();
361: }
362:
363: /* Comment copied from interface. */
364: public State howClosed() {
365: return typedState().howClosedState();
366: }
367:
368: /* Comment copied from interface. */
369: public Collection validStates() {
370: throw new UnsupportedOperationException();
371: }
372:
373: /* Comment copied from interface. */
374: public String state() {
375: return typedState().toString();
376: }
377:
378: /* Comment copied from interface. */
379: public void changeState(String newState)
380: throws InvalidStateException, TransitionNotAllowedException {
381: throw new UnsupportedOperationException();
382: }
383:
384: /* Comment copied from interface. */
385: public void doCloseActivity(State closedState) {
386: throw new UnsupportedOperationException();
387: }
388:
389: /* Comment copied from interface. */
390: public String name() {
391: throw new UnsupportedOperationException();
392: }
393:
394: /* Comment copied from interface. */
395: public void setName(String newValue) {
396: throw new UnsupportedOperationException();
397: }
398:
399: /* Comment copied from interface. */
400: public String key() {
401: return key;
402: }
403:
404: /* Comment copied from interface. */
405: public String description() {
406: throw new UnsupportedOperationException();
407: }
408:
409: /* Comment copied from interface. */
410: public void setDescription(String newValue) {
411: throw new UnsupportedOperationException();
412: }
413:
414: /* Comment copied from interface. */
415: public ProcessData processContext() {
416: throw new UnsupportedOperationException();
417: }
418:
419: /* Comment copied from interface. */
420: public void setProcessContext(ProcessData newValue)
421: throws InvalidDataException, UpdateNotAllowedException {
422: throw new UnsupportedOperationException();
423: }
424:
425: /* Comment copied from interface. */
426: public int priority() {
427: throw new UnsupportedOperationException();
428: }
429:
430: /* Comment copied from interface. */
431: public void setPriority(int newValue)
432: throws InvalidPriorityException, UpdateNotAllowedException {
433: throw new UnsupportedOperationException();
434: }
435:
436: /* Comment copied from interface. */
437: public Date lastStateTime() {
438: throw new UnsupportedOperationException();
439: }
440:
441: /* Comment copied from interface. */
442: public void resume() throws CannotResumeException,
443: NotRunningException, NotSuspendedException {
444: throw new UnsupportedOperationException();
445: }
446:
447: /* Comment copied from interface. */
448: public void suspend() throws CannotSuspendException,
449: NotRunningException, AlreadySuspendedException {
450: throw new UnsupportedOperationException();
451: }
452:
453: /* Comment copied from interface. */
454: public void terminate() throws CannotStopException,
455: NotRunningException {
456: throw new UnsupportedOperationException();
457: }
458:
459: /* Comment copied from interface. */
460: public void abort() throws CannotStopException, NotRunningException {
461: throw new UnsupportedOperationException();
462: }
463:
464: /* Comment copied from interface. */
465: public boolean initiateAbandoning(boolean blockException,
466: String exceptionName) {
467: throw new UnsupportedOperationException();
468: }
469:
470: /* Comment copied from interface. */
471: public Collection history() throws HistoryNotAvailableException {
472: throw new UnsupportedOperationException();
473: }
474:
475: /* Comment copied from interface. */
476: public void start() throws AlreadyRunningException {
477: throw new UnsupportedOperationException();
478: }
479:
480: /* Comment copied from interface. */
481: public void setStartable(Collection triggers,
482: boolean preliminaryChoice) {
483: throw new UnsupportedOperationException();
484: }
485:
486: /* Comment copied from interface. */
487: public void reset(boolean preserveThreadInfo, boolean publishChange) {
488: throw new UnsupportedOperationException();
489: }
490:
491: /* Comment copied from interface. */
492: public ThreadInfo threadInfo() {
493: return new ThreadInfo(null);
494: }
495:
496: /* Comment copied from interface. */
497: public WfAuditEvent auditEventBase() {
498: throw new UnsupportedOperationException();
499: }
500:
501: /* Comment copied from interface. */
502: public void handleAuditEvent(WfAuditEvent event) {
503: throw new UnsupportedOperationException();
504: }
505:
506: /* Comment copied from interface. */
507: public void updateProcessName(String newName) {
508: throw new UnsupportedOperationException();
509: }
510:
511: /* Coment copied from interface. */
512: public String[] handledExceptions() {
513: throw new UnsupportedOperationException();
514: }
515:
516: /* Comment copied from interface. */
517: public String blockActivity() {
518: throw new UnsupportedOperationException();
519: }
520:
521: /* Comment copied from interface. */
522: public void abandon(String exception)
523: throws TransitionNotAllowedException {
524: throw new UnsupportedOperationException();
525: }
526:
527: /* Comment copied from interface. */
528: public void abandon(ExceptionResult result)
529: throws TransitionNotAllowedException {
530: throw new UnsupportedOperationException();
531: }
532:
533: /* Comment copied from interface. */
534: public boolean choose() throws TransitionNotAllowedException {
535: throw new UnsupportedOperationException();
536: }
537:
538: /* Comment copied from interface. */
539: public void waitOnChannel(ProcessLocal proc, String channel) {
540: throw new UnsupportedOperationException();
541: }
542:
543: /* Comment copied from interface. */
544: public Activity toActivity() {
545: throw new UnsupportedOperationException();
546: }
547:
548: /**
549: * Return string representation for debugging purposes.
550: * @return a string representation.
551: */
552: public String toString() {
553: return "ActivityBase[" + key + "]";
554: }
555: }
|