Coverage Report - org.kuali.rice.kew.engine.node.service.RouteNodeService
 
Classes in this File Line Coverage Branch Coverage Complexity
RouteNodeService
N/A
N/A
1
 
 1  
 /*
 2  
  * Copyright 2005-2008 The Kuali Foundation
 3  
  * 
 4  
  * 
 5  
  * Licensed under the Educational Community License, Version 2.0 (the "License");
 6  
  * you may not use this file except in compliance with the License.
 7  
  * You may obtain a copy of the License at
 8  
  * 
 9  
  * http://www.opensource.org/licenses/ecl2.php
 10  
  * 
 11  
  * Unless required by applicable law or agreed to in writing, software
 12  
  * distributed under the License is distributed on an "AS IS" BASIS,
 13  
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 14  
  * See the License for the specific language governing permissions and
 15  
  * limitations under the License.
 16  
  */
 17  
 package org.kuali.rice.kew.engine.node.service;
 18  
 
 19  
 import org.kuali.rice.kew.doctype.bo.DocumentType;
 20  
 import org.kuali.rice.kew.engine.node.*;
 21  
 import org.kuali.rice.kew.engine.node.Process;
 22  
 import org.kuali.rice.kew.routeheader.DocumentRouteHeaderValue;
 23  
 
 24  
 import java.util.List;
 25  
 import java.util.Set;
 26  
 
 27  
 
 28  
 /**
 29  
  * A service which provides data access for {@link RouteNode}, {@link RouteNodeInstance}, 
 30  
  * {@link NodeState}, and {@link Branch} objects.
 31  
  * 
 32  
  * @author Kuali Rice Team (rice.collab@kuali.org)
 33  
  */
 34  
 public interface RouteNodeService {
 35  
 
 36  
     public void save(RouteNode node);
 37  
     public void save(RouteNodeInstance nodeInstance);
 38  
     public void save(NodeState nodeState);
 39  
     public void save(Branch branch);
 40  
     public RouteNode findRouteNodeById(String nodeId);
 41  
     public RouteNodeInstance findRouteNodeInstanceById(String nodeInstanceId);
 42  
     
 43  
     /**
 44  
      * 
 45  
      * This method looks though the passed in DocumentRouteHeaderValue and retrieves a nodeInstance that
 46  
      * matches the ID passed in. 
 47  
      * 
 48  
      * @param nodeInstanceId
 49  
      * @param document
 50  
      * @return
 51  
      */
 52  
     public RouteNodeInstance findRouteNodeInstanceById(String nodeInstanceId, DocumentRouteHeaderValue document);
 53  
 
 54  
     /**
 55  
      * Retrieves the initial node instances of the given document.  The initial node instances are 
 56  
      * those node instances which are at the very beginning of the route.  Usually, this will
 57  
      * just be a single node instance.
 58  
      */
 59  
     public List getInitialNodeInstances(String documentId);
 60  
 
 61  
     /**
 62  
      * Retrieves the active node instances of the given Document.  The active node instances
 63  
      * represent where in the route path the document is currently located.
 64  
      * @param documentId of the document
 65  
      * @return list of route node instances
 66  
      */
 67  
     public List<RouteNodeInstance> getActiveNodeInstances(String documentId);
 68  
     
 69  
     public List<RouteNodeInstance> getActiveNodeInstances(DocumentRouteHeaderValue document);
 70  
     
 71  
     /**
 72  
      * Retrieves the terminal node instances of the given Document.  The terminal node instances
 73  
      * are nodes in the route path which are both inactive and complete and have no next nodes
 74  
      * in their path.  Terminal node instances will typically only exist on documents which are no
 75  
      * longer Enroute.
 76  
      * @param documentId for the given Document
 77  
      * @return list of terminal node instances
 78  
      */
 79  
     public List<RouteNodeInstance> getTerminalNodeInstances(String documentId);
 80  
     
 81  
     /**
 82  
      * Returns the node instances representing the most recent node instances in the document.
 83  
      * The algorithm for locating the current nodes is as follows: If the document has
 84  
      * active node instances, return those, otherwise return it's terminal node instances.
 85  
      */
 86  
     public List<RouteNodeInstance> getCurrentNodeInstances(String documentId);
 87  
 
 88  
     public NodeState findNodeState(Long nodeInstanceId, String key);
 89  
     public RouteNode findRouteNodeByName(String documentTypeId, String name);
 90  
     public List findFinalApprovalRouteNodes(String documentTypeId);
 91  
     public List findNextRouteNodesInPath(RouteNodeInstance nodeInstance, String nodeName);
 92  
     public boolean isNodeInPath(DocumentRouteHeaderValue document, String nodeName);
 93  
     public List findRouteNodeInstances(String documentId);
 94  
     public List findProcessNodeInstances(RouteNodeInstance process);
 95  
     public Set findPreviousNodeNames(String documentId);
 96  
     
 97  
     /**
 98  
      * Returns a List of the distinct node names through which this document might pass in it's future 
 99  
      * routing.  In certain cases this will be an approximation based on what the system knows at the
 100  
      * time of execution. 
 101  
      */
 102  
     public List<String> findFutureNodeNames(String documentId);
 103  
     
 104  
     /**
 105  
      * Flatten all the document types route nodes into a single List.  This includes all processes 
 106  
      * on the DocumentType.
 107  
      * 
 108  
      * @param documentType DocumentType who's nodes will be flattened.
 109  
      * @param climbHierarchy whether to include the parents nodes if the passed in DocumentType contains no nodes
 110  
      * @return List or empty List
 111  
      */
 112  
     public List<RouteNode> getFlattenedNodes(DocumentType documentType, boolean climbHierarchy);
 113  
     public List<RouteNode> getFlattenedNodes(Process process);
 114  
     
 115  
     /**
 116  
      * Returns a flattened list of RouteNodeInstances on the given document.  If the includeProcesses flag is
 117  
      * true than this method includes process RouteNodeInstances, otherwise they are excluded.
 118  
      * which are processes.
 119  
      * @param document route header value
 120  
      * @param includeProcesses flag
 121  
      * @return list of routeNodeInstances
 122  
      */
 123  
     public List<RouteNodeInstance> getFlattenedNodeInstances(DocumentRouteHeaderValue document, boolean includeProcesses);
 124  
     
 125  
     public NodeGraphSearchResult searchNodeGraph(NodeGraphSearchCriteria criteria);
 126  
     
 127  
     /**
 128  
      * Returns a list of active node instances associated with the document that are active
 129  
      * @param document
 130  
      * @param nodeName
 131  
      * @return
 132  
      */
 133  
     public List<RouteNodeInstance> getActiveNodeInstances(DocumentRouteHeaderValue document, String nodeName);
 134  
         public void deleteByRouteNodeInstance(RouteNodeInstance routeNodeInstance);
 135  
     public void deleteNodeStateById(Long nodeStateId);
 136  
     public void deleteNodeStates(List statesToBeDeleted);
 137  
     
 138  
     /**
 139  
          * Record that the given RouteNodeInstance on the Document was revoked.  This will happen when an 
 140  
          * action such as Return to Previous or Move Document bypasses the given RouteNodeInstance on it's
 141  
          * path back to a previous point in the history of the document's route path. 
 142  
          */
 143  
     public void revokeNodeInstance(DocumentRouteHeaderValue document, RouteNodeInstance nodeInstance);
 144  
     
 145  
     /**
 146  
      * Returns a List of the revoked RouteNodeInstances on the given Document.
 147  
      * 
 148  
      * @see revokeNodeInstance
 149  
      */
 150  
     public List getRevokedNodeInstances(DocumentRouteHeaderValue document);
 151  
     
 152  
 }