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: ProcessDefinitionDirectoryLocal.java,v 1.1 2007/05/03 21:58:24 mlipp Exp $
021: *
022: * $Log: ProcessDefinitionDirectoryLocal.java,v $
023: * Revision 1.1 2007/05/03 21:58:24 mlipp
024: * Internal refactoring for making better use of local EJBs.
025: *
026: */
027: package de.danet.an.workflow.localapi;
028:
029: import java.util.Collection;
030: import java.util.List;
031:
032: import de.danet.an.workflow.api.ImportException;
033: import de.danet.an.workflow.api.InvalidKeyException;
034: import de.danet.an.workflow.api.ProcessDefinition;
035: import de.danet.an.workflow.localcoreapi.WfObjectLocal;
036: import de.danet.an.workflow.localcoreapi.WfProcessLocal;
037: import de.danet.an.workflow.omgcore.InvalidRequesterException;
038: import de.danet.an.workflow.omgcore.NotEnabledException;
039: import de.danet.an.workflow.omgcore.RequesterRequiredException;
040: import de.danet.an.workflow.omgcore.WfRequester;
041:
042: /**
043: * This interface defines a process definiton directory.
044: */
045: public interface ProcessDefinitionDirectoryLocal extends WfObjectLocal {
046:
047: /**
048: * This operation method import new process definitions from an
049: * XPDL description. <P>
050: *
051: * Note that importing an XPDL description automatically removes
052: * any existing process definitions that have the same package id
053: * as the imported package.
054: *
055: * @param processDefinitions document describing the process definitions.
056: * @return list of prioritized message
057: * {@link de.danet.an.workflow.api.PrioritizedMessage
058: * <code>PrioritizedMessage</code>}. This list only includes
059: * messages of priority INFO or WARN. If any (fatal) error has occured, an
060: * {@link de.danet.an.workflow.api.ImportException
061: * <code>ImportException</code>}will be thrown and the error
062: * message can be taken from there.
063: * @throws ImportException if the input is not a correct.
064: */
065: List importProcessDefinitions(String processDefinitions)
066: throws ImportException;
067:
068: /**
069: * This operation method import new process definitions from an
070: * XPDL description.
071: *
072: * Note that importing an XPDL description automatically removes
073: * any existing process definitions that have the same package id
074: * as the imported package.
075: *
076: * @param processDefinitions byte array resulting from an
077: * InputStream that describes the process definitions.
078: * @return list of prioritized message
079: * {@link de.danet.an.workflow.api.PrioritizedMessage
080: * <code>PrioritizedMessage</code>}. This list only includes
081: * messages of priority INFO or WARN. If any (fatal) error has occured, an
082: * {@link de.danet.an.workflow.api.ImportException
083: * <code>ImportException</code>}will be thrown and the error
084: * message can be taken from there.
085: * @throws ImportException if the input is not a correct.
086: */
087: List importProcessDefinitions(byte[] processDefinitions)
088: throws ImportException;
089:
090: /**
091: * This operation method removes a process definition with the
092: * given ids from the database. If called for a definition that
093: * does not exist, it does nothing.
094: *
095: * @param packageId Id attribute of the process package.
096: * @param processId Id attribute of the process.
097: * @throws InvalidKeyException if packageId or processId are
098: * (formally) invalid ids.
099: */
100: void removeProcessDefinition(String packageId, String processId)
101: throws InvalidKeyException;
102:
103: /**
104: * This operation method delivers a collection of all
105: * defined process definitions. The elements of the list
106: * are of the type
107: * {@link ProcessDefinition <code>ProcessDefinition</code>}
108: *
109: * @return collection
110: */
111: Collection processDefinitions();
112:
113: /**
114: * This method checks if a process definiton with the given ids
115: * exists.
116: *
117: * @param packageId Id attribute of the process package.
118: * @param processId Id attribute of the process.
119: * @return <code>true</code> if a process definition with the given
120: * <code>id</code> exists.
121: */
122: boolean processDefinitionExists(String packageId, String processId);
123:
124: /**
125: * This method delivers the process definition for the
126: * given ids. If no process definition with the ids exist, it
127: * throws an <code>IllegalArgumentException</code>.
128: *
129: * @param packageId Id attribute of the process package.
130: * @param processId Id attribute of the process.
131: * @return the found ProcessDefinition object.
132: * @throws InvalidKeyException if no process definition with
133: * the given ids exists.
134: */
135: ProcessDefinition lookupProcessDefinition(String packageId,
136: String processId) throws InvalidKeyException;
137:
138: /**
139: * This operation method returns true if the process definition
140: * with the given ids is enabled.
141: *
142: * @param packageId Id attribute of the process package.
143: * @param processId Id attribute of the process.
144: * @return if the process definition is enabled.
145: * @throws InvalidKeyException if no process definition with
146: * the given ids exists.
147: */
148: boolean isEnabled(String packageId, String processId)
149: throws InvalidKeyException;
150:
151: /**
152: * This operation method set the process definition with the given
153: * ids as enabled or disabled.
154: *
155: * @param packageId Id attribute of the process package.
156: * @param processId Id attribute of the process.
157: * @param enabled enable the process definition or not.
158: * @throws InvalidKeyException if no process definition with
159: * the given ids exists.
160: */
161: void setEnabled(String packageId, String processId, boolean enabled)
162: throws InvalidKeyException;
163:
164: /**
165: * Create a process of the given type with the given requester.
166: * @param packageId Id attribute of the process package.
167: * @param processId Id attribute of the process.
168: * @param requester the requester.
169: * @return the new process.
170: * @throws NotEnabledException if processes of this type may not be created.
171: * @throws InvalidRequesterException if the requester is not valid.
172: * @throws RequesterRequiredException if no requester is passed
173: * (i.e. parameter is <code>null</code>.
174: * @throws InvalidKeyException if no process definition with the
175: * given ids exists.
176: */
177: WfProcessLocal createProcessLocal(String packageId,
178: String processId, WfRequester requester)
179: throws NotEnabledException, InvalidRequesterException,
180: RequesterRequiredException, InvalidKeyException;
181: }
|