001: /*
002: * Copyright 2005-2006 The Kuali Foundation.
003: *
004: *
005: * Licensed under the Educational Community License, Version 1.0 (the "License");
006: * you may not use this file except in compliance with the License.
007: * You may obtain a copy of the License at
008: *
009: * http://www.opensource.org/licenses/ecl1.php
010: *
011: * Unless required by applicable law or agreed to in writing, software
012: * distributed under the License is distributed on an "AS IS" BASIS,
013: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: * See the License for the specific language governing permissions and
015: * limitations under the License.
016: */
017: package edu.iu.uis.eden.clientapp;
018:
019: import java.rmi.RemoteException;
020:
021: import edu.iu.uis.eden.DocumentRouteStatusChange;
022: import edu.iu.uis.eden.clientapp.vo.ActionTakenEventVO;
023: import edu.iu.uis.eden.clientapp.vo.DeleteEventVO;
024: import edu.iu.uis.eden.clientapp.vo.DocumentRouteLevelChangeVO;
025: import edu.iu.uis.eden.clientapp.vo.DocumentRouteStatusChangeVO;
026: import edu.iu.uis.eden.exception.ResourceUnavailableException;
027:
028: /**
029: * A PostProcessor listens for events from the Workflow routing engine for it's DocumentType.
030: * It gives clients hooks into the routing process to perform operations at the various stages.
031: * Implementations of this Interface are potentially remotable, so this Interface uses
032: * value objects.
033: *
034: * @author ewestfal
035: */
036: public interface PostProcessorRemote {
037:
038: /**
039: * The document has changed route status. The docEvent contains the information about the change.
040: * This method should do what ever is appropriate for various route status changes to a document.
041: * The method should return true if the change is correct and all application actions as a result
042: * of the change are successful. It should return false if the application considers this an
043: * incorrect change.
044: *
045: * The method can throw a ResourceUnavailableException in order to get EDEN to requeue the
046: * document and try again later.
047: * @param statusChangeEvent
048: * @param msg any error message to be propagated back to users should be set here
049: * @return true if the status change is correct and application actions are successful
050: * later if this exception is thrown
051: * @see DocumentRouteStatusChange
052: */
053: public boolean doRouteStatusChange(
054: DocumentRouteStatusChangeVO statusChangeEvent)
055: throws RemoteException;
056:
057: /**
058: * The document has changed route level. The docEvent contains the information about the change.
059: * This method should do what ever is appropriate for various route level changes to a document.
060: * The method should return true if the change is correct and all application actions as a result
061: * of the change are successful. It should return false if the application considers this an
062: * incorrect change.
063: *
064: * The method can throw a ResourceUnavailableException in order to get EDEN to requeue the
065: * document and try again later.
066: * @param levelChangeEvent
067: * @param msg any error message to be propagated back to users should be set here
068: * @return true if the status change is correct and application actions are successful
069: * @throws java.lang.Exception A general Exception will cause EDEN to put the document into Exception routing
070: * @throws ResourceUnavailableException EDEN will requeue the document and try the change again
071: * later if this exception is thrown
072: * @see DocumentRouteLevelChangeVO
073: */
074: public boolean doRouteLevelChange(
075: DocumentRouteLevelChangeVO levelChangeEvent)
076: throws RemoteException;
077:
078: /**
079: * KEW is signaling that the document should be deleted. The application can reject this by
080: * returning false. If the EdenException is thrown the docuemnt will go to exception routing. If
081: * a ResourceUnavailableException is thrown, the doc will be requeued and will try again later to
082: * delete the document.
083: * @param event
084: * @param message
085: * @return
086: * @throws java.lang.Exception A general Exception will cause EDEN to put the document into Exception routing
087: * @throws ResourceUnavailableException EDEN will requeue the document and try the change again
088: */
089: public boolean doDeleteRouteHeader(DeleteEventVO event)
090: throws RemoteException;
091:
092: /**
093: * KEW is signaling that the document has had an action taken on it by a user
094: *
095: * @param event
096: * @return
097: * @throws RemoteException
098: */
099: public boolean doActionTaken(ActionTakenEventVO event)
100: throws RemoteException;
101:
102: }
|