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: BAForExceptionHandling.java,v 1.5 2007/05/03 21:58:18 mlipp Exp $
021: *
022: * $Log: BAForExceptionHandling.java,v $
023: * Revision 1.5 2007/05/03 21:58:18 mlipp
024: * Internal refactoring for making better use of local EJBs.
025: *
026: * Revision 1.4 2006/12/14 16:05:51 drmlipp
027: * Changed handling of conditions in exception transitions.
028: *
029: * Revision 1.3 2006/09/29 12:32:08 drmlipp
030: * Consistently using WfMOpen as projct name now.
031: *
032: * Revision 1.2 2005/01/05 21:29:22 mlipp
033: * Added method to retrieve handled exceptions.
034: *
035: * Revision 1.1.1.1 2004/08/18 15:17:38 drmlipp
036: * Update to 1.2
037: *
038: * Revision 1.2 2004/05/09 18:42:59 lipp
039: * Finished process instantiation restructuring.
040: *
041: * Revision 1.1 2004/05/06 19:39:18 lipp
042: * Restructured block activity handling.
043: *
044: */
045: package de.danet.an.workflow.domain;
046:
047: import java.io.Serializable;
048:
049: import java.util.ArrayList;
050: import java.util.Collection;
051: import java.util.Iterator;
052: import java.util.List;
053: import java.rmi.RemoteException;
054:
055: import de.danet.an.workflow.api.Activity.JoinAndSplitMode;
056: import de.danet.an.workflow.omgcore.WfExecutionObject.State;
057:
058: /**
059: * This class provides a representation of a block activity for
060: * exception handling. Block activities are not really instantiated;
061: * nevertheless we need a representation for transition management as
062: * they can be the source of an exception.
063: *
064: * @author <a href="mailto:mnl@mnl.de">Michael N. Lipp</a>
065: * @version $Revision: 1.5 $
066: */
067: public class BAForExceptionHandling extends BlockActivity implements
068: Serializable {
069:
070: private static final org.apache.commons.logging.Log logger = org.apache.commons.logging.LogFactory
071: .getLog(BAForExceptionHandling.class);
072:
073: private List definedExceptions = new ArrayList();
074: private State state = RunningState.RUNNING;
075: private Collection predecessors = null;
076:
077: /**
078: * Creates an instance of <code>BAForExceptionHandling</code>
079: * with all attributes initialized to given values.
080: * @param key block activity key
081: */
082: public BAForExceptionHandling(String key) {
083: super (key);
084: }
085:
086: /**
087: * Update the properties of the block activity for handling of a
088: * specific exception.
089: * @param dls the deadlines defined for this block activity
090: * @param state the state to assume
091: * @param pres the predecessors from an execution thread point of
092: * view
093: */
094: public void update(List dls, State state, Collection pres) {
095: for (Iterator i = dls.iterator(); i.hasNext();) {
096: Deadline dl = (Deadline) i.next();
097: definedExceptions.add(dl.getExceptionName());
098: }
099: predecessors = pres;
100: }
101:
102: /**
103: * Return the predecessors passed to the constructor.
104: * @return the predecessors
105: */
106: public Collection predecessors() {
107: return predecessors;
108: }
109:
110: /* Comment copied from interface. */
111: public State typedState() {
112: return state;
113: }
114:
115: /* Comment copied from interface. */
116: public JoinAndSplitMode splitMode() {
117: return JoinAndSplitMode.AND;
118: }
119:
120: /**
121: * Return string representation for debugging purposes.
122: * @return a string representation.
123: */
124: public String toString() {
125: return "BAForExceptionHandling[" + key() + "]";
126: }
127: }
|