001: /***************************************************************
002: * This file is part of the [fleXive](R) project.
003: *
004: * Copyright (c) 1999-2008
005: * UCS - unique computing solutions gmbh (http://www.ucs.at)
006: * All rights reserved
007: *
008: * The [fleXive](R) project is free software; you can redistribute
009: * it and/or modify it under the terms of the GNU General Public
010: * License as published by the Free Software Foundation;
011: * either version 2 of the License, or (at your option) any
012: * later version.
013: *
014: * The GNU General Public License can be found at
015: * http://www.gnu.org/copyleft/gpl.html.
016: * A copy is found in the textfile GPL.txt and important notices to the
017: * license from the author are found in LICENSE.txt distributed with
018: * these libraries.
019: *
020: * This library is distributed in the hope that it will be useful,
021: * but WITHOUT ANY WARRANTY; without even the implied warranty of
022: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
023: * GNU General Public License for more details.
024: *
025: * For further information about UCS - unique computing solutions gmbh,
026: * please see the company website: http://www.ucs.at
027: *
028: * For further information about [fleXive](R), please see the
029: * project website: http://www.flexive.org
030: *
031: *
032: * This copyright notice MUST APPEAR in all copies of the file!
033: ***************************************************************/package com.flexive.shared.interfaces;
034:
035: import com.flexive.shared.exceptions.*;
036: import com.flexive.shared.workflow.Step;
037: import com.flexive.shared.workflow.StepPermission;
038:
039: import javax.ejb.Remote;
040: import java.util.List;
041:
042: /**
043: * The StepEngine class represents a step instance within a workflow
044: *
045: * @author Gregor Schober (gregor.schober@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
046: * @author Daniel Lichtenberger (daniel.lichtenberger@flexive.com), UCS - unique computing solutions gmbh (http://www.ucs.at)
047: */
048: @Remote
049: public interface StepEngine {
050: /**
051: * Creates a step in a workflow.
052: * <p/>
053: * The caller must be within ROLE_WORKFLOWMANAGEMENT.<br>
054: * No Exception is thrown if the step already exists within the workflow.<br>
055: * If a unique target step is needed and not defined it will be created using the provided aclId.
056: *
057: * @param step the step to be created
058: * @return the unique id of the new step
059: * @throws FxApplicationException TODO
060: * @throws FxCreateException if the creation of the step failed
061: * @throws FxNoAccessException if the caller lacks the permissions to create the step
062: */
063: long createStep(Step step) throws FxApplicationException;
064:
065: /**
066: * Returns all steps that a user has some kind of access to, combined with the
067: * the permissions for the user on the step.
068: * <p />
069: * The function does not check id the specified user exists, it will return an empty result
070: * for non existing entries.<br>
071: * Only GLOBAL_SUPERVISOR may call this function for all users, other users may only query themselfs.
072: *
073: * @param userId the user to get the steps for
074: * @return a array holding all Steps with its ACLs for the user
075: * @throws FxApplicationException TODO
076: * @throws FxLoadException if the load failed
077: * @throws FxNoAccessException if the calling user may not load the requested steps
078: */
079: List<StepPermission> loadAllStepsForUser(long userId)
080: throws FxApplicationException;
081:
082: /**
083: * Removes all steps within a workflow.
084: * <p/>
085: * The caller has to be within ROLE_WORKFLOWMANAGEMENT.
086: *
087: * @param workflowId the workflow id
088: * @throws FxApplicationException TODO
089: * @throws FxNoAccessException if the caller lacks the permissions to remove the steps
090: * @throws FxNotFoundException if the workflow does not exist
091: * @throws FxRemoveException if the remove failed
092: */
093: void removeSteps(long workflowId) throws FxApplicationException;
094:
095: /**
096: * Removes a step defined by its unique id.
097: * <p/>
098: * The caller has to be within ROLE_WORKFLOWMANAGEMENT.<br>
099: * The function does not throw a Exception if the step does not exist.
100: *
101: * @param stepId the unique step id
102: * @throws FxApplicationException TODO
103: * @throws FxNoAccessException if the caller lacks the permissions to remove the steps
104: * @throws FxRemoveException if the remove failed
105: * @throws FxEntryInUseException if the step is needed by another step as unique target can connot be removed
106: */
107: void removeStep(long stepId) throws FxApplicationException;
108:
109: /**
110: * Updates a step specified by its unique id.
111: * <p/>
112: * The caller must be within ROLE_WORKFLOWMANAGEMENT.
113: *
114: * @param stepId the step to update
115: * @param aclId the ACL of the step
116: * @throws FxApplicationException TODO
117: * @throws FxUpdateException if the update of the step failed
118: * @throws FxNoAccessException if the caller lacks the permissions to create the step
119: * @throws FxNotFoundException if the step does not exist
120: */
121: void updateStep(long stepId, long aclId)
122: throws FxApplicationException;
123:
124: }
|