| Classes in this File | Line Coverage | Branch Coverage | Complexity | ||||
| RouteNodeService |
|
| 1.0;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 | } |