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: SubProcRequester.java,v 1.4.2.1 2007/11/02 16:00:32 drmlipp Exp $
021: *
022: * $Log: SubProcRequester.java,v $
023: * Revision 1.4.2.1 2007/11/02 16:00:32 drmlipp
024: * Merged bug fixes from HEAD.
025: *
026: * Revision 1.5 2007/09/20 21:27:56 mlipp
027: * Removed superfluous import.
028: *
029: * Revision 1.4 2007/05/03 21:58:16 mlipp
030: * Internal refactoring for making better use of local EJBs.
031: *
032: * Revision 1.3 2006/09/29 12:32:08 drmlipp
033: * Consistently using WfMOpen as projct name now.
034: *
035: * Revision 1.2 2004/09/10 10:47:55 drmlipp
036: * Fixed deserialization code.
037: *
038: * Revision 1.1.1.2 2004/08/18 15:17:38 drmlipp
039: * Update to 1.2
040: *
041: * Revision 1.5 2004/03/20 19:28:02 lipp
042: * Keeping relationship to super-flow both for sync and asynch call.
043: *
044: * Revision 1.4 2003/06/27 08:51:45 lipp
045: * Fixed copyright/license information.
046: *
047: * Revision 1.3 2003/05/14 13:05:05 lipp
048: * Made creator of subprocess inherited attribute.
049: *
050: * Revision 1.2 2003/05/07 09:48:34 lipp
051: * Completed asynchronous subflow implementation.
052: *
053: * Revision 1.1 2003/05/05 15:31:01 lipp
054: * Creating sub-process now.
055: *
056: */
057: package de.danet.an.workflow.domain;
058:
059: import java.io.IOException;
060: import java.io.ObjectInputStream;
061: import java.io.Serializable;
062:
063: import java.util.Collection;
064:
065: import de.danet.an.workflow.api.Activity.SubFlowImplementation;
066: import de.danet.an.workflow.internalapi.ExtActivityLocal;
067: import de.danet.an.workflow.internalapi.ExtProcessLocal;
068: import de.danet.an.workflow.localapi.ActivityLocal;
069: import de.danet.an.workflow.localcoreapi.WfProcessLocal;
070: import de.danet.an.workflow.omgcore.InvalidPerformerException;
071: import de.danet.an.workflow.omgcore.WfAuditEvent;
072: import de.danet.an.workflow.omgcore.WfProcess;
073: import de.danet.an.workflow.omgcore.WfRequester;
074:
075: /**
076: * This class provides ...
077: *
078: * @author <a href="mailto:lipp@danet.de">Michael Lipp</a>
079: * @version $Revision: 1.4.2.1 $
080: */
081:
082: public class SubProcRequester implements WfRequester, Serializable {
083:
084: /** Version for serialization. */
085: static final long serialVersionUID = 4711225038693081511L;
086:
087: private String activityKey = null;
088: private String creator = null;
089: private int execMode;
090:
091: /**
092: * Special handling to ensure backward compatibility.
093: */
094: private void readObject(ObjectInputStream stream)
095: throws IOException, ClassNotFoundException {
096: ObjectInputStream.GetField gf = stream.readFields();
097: activityKey = (String) gf.get("activityKey", null);
098: creator = (String) gf.get("creator", null);
099: // old version used activity to denote mode
100: execMode = gf.get("execMode",
101: activityKey == null ? SubFlowImplementation.ASYNCHR
102: : SubFlowImplementation.SYNCHR);
103: }
104:
105: /**
106: * Creates an instance of <code>SubProcRequester</code> with the
107: * given activity. This is used for synchronous execution.
108: * @param act the requesting activity
109: * @param execution invocation mode, either {@link
110: * ActivityLocal.SubFlowImplementation.SYNCHR <code>SYNCHR</code>} or
111: * {@link ActivityLocal.SubFlowImplementation.ASYNCHR
112: * <code>ASYNCHR</code>}.
113: */
114: public SubProcRequester(ExtActivityLocal act, int execution) {
115: activityKey = act.key();
116: this .creator = ((ExtProcessLocal) act.containerLocal())
117: .processCreator().getName();
118: execMode = execution;
119: }
120:
121: /**
122: * Return the key of the activity that initiated this process.
123: * @return the key
124: */
125: public String requestingActivity() {
126: return activityKey;
127: }
128:
129: /**
130: * Return the creator of the invoking process.
131: * @return the creator
132: */
133: public String creator() {
134: return creator;
135: }
136:
137: /**
138: * Return the execution mode
139: * @return the execution mode
140: */
141: public int execution() {
142: return execMode;
143: }
144:
145: /* Comment copied from interface. */
146: public Collection performers() {
147: throw new UnsupportedOperationException();
148: }
149:
150: /* Comment copied from interface. */
151: public boolean isMemberOfPerformers(WfProcess member) {
152: throw new UnsupportedOperationException();
153: }
154:
155: /* Comment copied from interface. */
156: public void receiveEvent(WfAuditEvent e)
157: throws InvalidPerformerException {
158: throw new UnsupportedOperationException();
159: }
160:
161: }
|