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: ProcessDefinitionDirectory.java,v 1.2 2006/09/29 12:32:07 drmlipp Exp $
021: *
022: * $Log: ProcessDefinitionDirectory.java,v $
023: * Revision 1.2 2006/09/29 12:32:07 drmlipp
024: * Consistently using WfMOpen as projct name now.
025: *
026: * Revision 1.1.1.1 2003/06/30 20:05:13 drmlipp
027: * Initial import
028: *
029: * Revision 1.19 2003/06/27 08:51:46 lipp
030: * Fixed copyright/license information.
031: *
032: * Revision 1.18 2003/06/03 12:43:16 schlue
033: * Description of importProcessDefinition enhanced.
034: *
035: * Revision 1.17 2003/05/14 08:30:07 lipp
036: * Package import behaviour changed.
037: *
038: * Revision 1.16 2003/03/03 12:18:23 lipp
039: * Comment fixes.
040: *
041: * Revision 1.15 2002/12/03 13:46:44 huaiyang
042: * importProcessDefinitions method return list of prioritized message.
043: *
044: * Revision 1.14 2002/12/02 15:55:31 huaiyang
045: * Replace ParseException with ImportException.
046: *
047: * Revision 1.13 2002/11/26 11:23:30 lipp
048: * Modified RemoteException comment.
049: *
050: * Revision 1.12 2002/09/19 14:37:37 lipp
051: * Using WorkflowService.release now and optimized process definition
052: * storage.
053: *
054: * Revision 1.11 2002/09/08 18:49:17 lipp
055: * Proper use of packageId and processId.
056: *
057: * Revision 1.10 2002/08/26 20:23:13 lipp
058: * Lots of method renames.
059: *
060: * Revision 1.9 2002/08/22 08:47:29 lipp
061: * Some minor optimizations.
062: *
063: * Revision 1.8 2002/08/21 22:06:47 lipp
064: * Finished transition to ProcessMgrStub.
065: *
066: * Revision 1.7 2002/07/24 05:48:16 huaiyang
067: * javadocs added.
068: *
069: * Revision 1.6 2002/07/08 19:37:59 lipp
070: * New import process definition method.
071: *
072: * Revision 1.5 2002/02/06 18:26:01 huaiyang
073: * Add the methods of isEnabled/setEnabled.
074: *
075: * Revision 1.4 2002/02/01 14:30:36 lipp
076: * Added error handling for process definition parsing.
077: *
078: * Revision 1.3 2002/01/22 08:58:04 lipp
079: * Javadoc fixes.
080: *
081: * Revision 1.2 2002/01/17 16:45:06 lipp
082: * ProcessDefinition moved to workflow.api.
083: *
084: * Revision 1.1 2002/01/15 16:10:51 robert
085: * replace ProcessDefinitionDirectory interface from workflow/domain
086: * to workflow/api
087: *
088: * Revision 1.3 2002/01/15 12:20:43 robert
089: * add getProcessTypes
090: *
091: * Revision 1.2 2002/01/11 14:42:35 robert
092: * add IllegalArgumentException to getProcessDefinition
093: *
094: * Revision 1.1 2001/12/14 13:28:25 lipp
095: * Cleaned up implementation structure of ProcessDefinitionDirectory,
096: * renamed Package to ProcessDirectoryPackage and restored initial load
097: * of process definitions.
098: *
099: */
100: package de.danet.an.workflow.api;
101:
102: import java.util.Collection;
103: import java.util.List;
104:
105: import java.rmi.RemoteException;
106:
107: import de.danet.an.workflow.omgcore.WfObject;
108:
109: /**
110: * This interface defines a process definiton directory.
111: */
112: public interface ProcessDefinitionDirectory extends WfObject {
113:
114: /**
115: * This operation method import new process definitions from an
116: * XPDL description. <P>
117: *
118: * Note that importing an XPDL description automatically removes
119: * any existing process definitions that have the same package id
120: * as the imported package.
121: *
122: * @param processDefinitions document describing the process definitions.
123: * @return list of prioritized message
124: * {@link de.danet.an.workflow.api.PrioritizedMessage
125: * <code>PrioritizedMessage</code>}. This list only includes
126: * messages of priority INFO or WARN. If any (fatal) error has occured, an
127: * {@link de.danet.an.workflow.api.ImportException
128: * <code>ImportException</code>}will be thrown and the error
129: * message can be taken from there.
130: * @throws RemoteException if a system-level error occurs. The
131: * import has been aborted.
132: * @throws ImportException if the input is not a correct.
133: */
134: List importProcessDefinitions(String processDefinitions)
135: throws RemoteException, ImportException;
136:
137: /**
138: * This operation method import new process definitions from an
139: * XPDL description.
140: *
141: * Note that importing an XPDL description automatically removes
142: * any existing process definitions that have the same package id
143: * as the imported package.
144: *
145: * @param processDefinitions byte array resulting from an
146: * InputStream that describes the process definitions.
147: * @return list of prioritized message
148: * {@link de.danet.an.workflow.api.PrioritizedMessage
149: * <code>PrioritizedMessage</code>}. This list only includes
150: * messages of priority INFO or WARN. If any (fatal) error has occured, an
151: * {@link de.danet.an.workflow.api.ImportException
152: * <code>ImportException</code>}will be thrown and the error
153: * message can be taken from there.
154: * @throws RemoteException if a system-level error occurs. The
155: * import has been aborted.
156: * @throws ImportException if the input is not a correct.
157: */
158: List importProcessDefinitions(byte[] processDefinitions)
159: throws RemoteException, ImportException;
160:
161: /**
162: * This operation method removes a process definition with the
163: * given ids from the database. If called for a definition that
164: * does not exist, it does nothing.
165: *
166: * @param packageId Id attribute of the process package.
167: * @param processId Id attribute of the process.
168: * @throws RemoteException if a system-level error occurs.
169: * @throws InvalidKeyException if packageId or processId are
170: * (formally) invalid ids.
171: */
172: void removeProcessDefinition(String packageId, String processId)
173: throws RemoteException, InvalidKeyException;
174:
175: /**
176: * This operation method delivers a collection of all
177: * defined process definitions. The elements of the list
178: * are of the type
179: * {@link ProcessDefinition <code>ProcessDefinition</code>}
180: *
181: * @return collection
182: * @throws RemoteException if a system-level error occurs.
183: */
184: Collection processDefinitions() throws RemoteException;
185:
186: /**
187: * This method checks if a process definiton with the given ids
188: * exists.
189: *
190: * @param packageId Id attribute of the process package.
191: * @param processId Id attribute of the process.
192: * @return <code>true</code> if a process definition with the given
193: * <code>id</code> exists.
194: * @throws RemoteException if a system-level error occurs.
195: */
196: boolean processDefinitionExists(String packageId, String processId)
197: throws RemoteException;
198:
199: /**
200: * This method delivers the process definition for the
201: * given ids. If no process definition with the ids exist, it
202: * throws an <code>IllegalArgumentException</code>.
203: *
204: * @param packageId Id attribute of the process package.
205: * @param processId Id attribute of the process.
206: * @return the found ProcessDefinition object.
207: * @throws InvalidKeyException if no process definition with
208: * the given ids exists.
209: * @throws RemoteException if a system-level error occurs.
210: */
211: ProcessDefinition lookupProcessDefinition(String packageId,
212: String processId) throws InvalidKeyException,
213: RemoteException;
214:
215: /**
216: * This operation method returns true if the process definition
217: * with the given ids is enabled.
218: *
219: * @param packageId Id attribute of the process package.
220: * @param processId Id attribute of the process.
221: * @return if the process definition is enabled.
222: * @throws InvalidKeyException if no process definition with
223: * the given ids exists.
224: * @throws RemoteException if a system-level error occurs.
225: */
226: boolean isEnabled(String packageId, String processId)
227: throws RemoteException, InvalidKeyException;
228:
229: /**
230: * This operation method set the process definition with the given
231: * ids as enabled or disabled.
232: *
233: * @param packageId Id attribute of the process package.
234: * @param processId Id attribute of the process.
235: * @param enabled enable the process definition or not.
236: * @throws InvalidKeyException if no process definition with
237: * the given ids exists.
238: * @throws RemoteException if a system-level error occurs.
239: */
240: void setEnabled(String packageId, String processId, boolean enabled)
241: throws RemoteException, InvalidKeyException;
242:
243: /**
244: * This method delivers the process manager for the process
245: * definition with the given ids.
246: *
247: * @param packageId Id attribute of the process package.
248: * @param processId Id attribute of the process.
249: * @return the process manager for the process type.
250: * @throws InvalidKeyException if not process definition with
251: * the given ids exists.
252: * @throws RemoteException if a system-level error occurs.
253: */
254: ProcessMgr processMgr(String packageId, String processId)
255: throws InvalidKeyException, RemoteException;
256:
257: }
|