1 /** 2 * Copyright 2005-2016 The Kuali Foundation 3 * 4 * Licensed under the Educational Community License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.opensource.org/licenses/ecl2.php 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package org.kuali.rice.kew.api.document; 17 18 import org.joda.time.DateTime; 19 import org.kuali.rice.core.api.exception.RiceIllegalArgumentException; 20 import org.kuali.rice.core.api.exception.RiceIllegalStateException; 21 import org.kuali.rice.core.api.util.jaxb.DateTimeAdapter; 22 import org.kuali.rice.core.api.util.jaxb.MapStringStringAdapter; 23 import org.kuali.rice.kew.api.KewApiConstants; 24 import org.kuali.rice.kew.api.action.ActionRequest; 25 import org.kuali.rice.kew.api.action.ActionTaken; 26 import org.kuali.rice.kew.api.document.search.DocumentSearchCriteria; 27 import org.kuali.rice.kew.api.document.search.DocumentSearchResults; 28 import org.kuali.rice.kew.api.document.node.RouteNodeInstance; 29 30 import javax.jws.WebMethod; 31 import javax.jws.WebParam; 32 import javax.jws.WebResult; 33 import javax.jws.WebService; 34 import javax.jws.soap.SOAPBinding; 35 import javax.xml.bind.annotation.XmlElement; 36 import javax.xml.bind.annotation.XmlElementWrapper; 37 import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter; 38 import java.math.BigDecimal; 39 import java.util.List; 40 import java.util.Map; 41 42 /** 43 * TODO ... annotate for JAX-WS! 44 * 45 * @author Kuali Rice Team (rice.collab@kuali.org) 46 */ 47 @WebService(name = "workflowDocumentService", targetNamespace = KewApiConstants.Namespaces.KEW_NAMESPACE_2_0) 48 @SOAPBinding(style = SOAPBinding.Style.DOCUMENT, use = SOAPBinding.Use.LITERAL, parameterStyle = SOAPBinding.ParameterStyle.WRAPPED) 49 public interface WorkflowDocumentService { 50 51 /** 52 * Gets a {@link Document} from a documentId. 53 * 54 * <p> 55 * This method will return null if the Document does not exist. 56 * </p> 57 * 58 * @param documentId the unique id of the document to return 59 * @return the document with the passed in id value 60 * @throws RiceIllegalArgumentException if {@code documentId} is null 61 */ 62 @WebMethod(operationName = "getDocument") 63 @WebResult(name = "document") 64 Document getDocument(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 65 66 /** 67 * Returns a boolean depending on if a {@link Document} exists with the specified documentId 68 * 69 * <p> 70 * This method will return false if the responsibility does not exist. 71 * </p> 72 * 73 * @param documentId the unique id of the document to check for existence 74 * @return boolean value representative of whether the document exists 75 * @throws RiceIllegalArgumentException if {@code documentId} is null 76 */ 77 @WebMethod(operationName = "doesDocumentExist") 78 @WebResult(name = "document") 79 boolean doesDocumentExist(@WebParam(name = "documentId") String documentId) 80 throws RiceIllegalArgumentException; 81 82 /** 83 * Gets {@link DocumentContent} from a documentId. 84 * 85 * <p> 86 * This method will return null if the document does not exist. 87 * </p> 88 * 89 * @param documentId the unique id of the document content to return 90 * @return the documentContent with the passed in id value 91 * @throws RiceIllegalArgumentException if {@code documentId} is null 92 */ 93 @WebMethod(operationName = "getDocumentContent") 94 @WebResult(name = "documentContent") 95 DocumentContent getDocumentContent(@WebParam(name = "documentId") String documentId) 96 throws RiceIllegalArgumentException; 97 98 /** 99 * Returns the name of the document type used by the document with the given id. 100 * 101 * @param documentId the id of the document for which to fetch the document type name, must not be null or blank 102 * @return the name of the document type for the document with the given id, will never return a null or blank value 103 * @throws RiceIllegalArgumentException if {@code documentId} is null or if the document id does not resolve to a 104 * valid document from which a document type name can be fetched 105 * 106 * @since 2.4 107 */ 108 @WebMethod(operationName = "getDocumentTypeName") 109 @WebResult(name = "documentTypeName") 110 String getDocumentTypeName(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 111 112 /** 113 * Gets a list of root ActionRequests for a given documentId 114 * 115 * @param documentId the unique id of a document 116 * 117 * @return the list of root ActionRequests for a given documentId 118 * 119 * @throws RiceIllegalArgumentException if {@code documentId} is null 120 */ 121 @WebMethod(operationName = "getRootActionRequests") 122 @XmlElementWrapper(name = "rootActionRequests", required = true) 123 @XmlElement(name = "rootActionRequest", required = false) 124 @WebResult(name = "rootActionRequests") 125 List<ActionRequest> getRootActionRequests(@WebParam(name = "documentId") String documentId) 126 throws RiceIllegalArgumentException; 127 128 /** 129 * Gets a list of ActionRequests which are pending for a given documentId 130 * 131 * @since 2.1 132 * @param documentId the unique id of a document 133 * @return the list of pending ActionRequests for a given documentId 134 * @throws RiceIllegalArgumentException if {@code documentId} is null 135 */ 136 @WebMethod(operationName = "getPendingActionRequests") 137 @XmlElementWrapper(name = "pendingActionRequests", required = true) 138 @XmlElement(name = "pendingActionRequest", required = false) 139 @WebResult(name = "pendingActionRequests") 140 List<ActionRequest> getPendingActionRequests(String documentId); 141 142 /** 143 * Gets a list of ActionRequests for a given documentId, nodeName and principalId 144 * 145 * @param documentId the unique id of a document 146 * @param nodeName the name of a RouteNode 147 * @param principalId the unique id of a principal 148 * 149 * @return the list of ActionRequests for a given documentId, nodeName, and principalId 150 * 151 * @throws RiceIllegalArgumentException if {@code documentId} is null 152 */ 153 @WebMethod(operationName = "getActionRequestsForPrincipalAtNode") 154 @XmlElementWrapper(name = "actionRequests", required = true) 155 @XmlElement(name = "actionRequests", required = false) 156 @WebResult(name = "actionRequests") 157 List<ActionRequest> getActionRequestsForPrincipalAtNode(@WebParam(name = "documentId") String documentId, 158 @WebParam(name = "nodeName") String nodeName, @WebParam(name = "principalId") String principalId) 159 throws RiceIllegalArgumentException; 160 161 /** 162 * Gets a list of past {@link ActionTaken} of a {@link Document} with the given documentId 163 * 164 * @param documentId the unique id of a document 165 * 166 * @return the list of past ActionTakens for a given documentId 167 * 168 * @throws RiceIllegalArgumentException if {@code documentId} is null 169 */ 170 @WebMethod(operationName = "getActionsTaken") 171 @XmlElementWrapper(name = "actionsTaken", required = true) 172 @XmlElement(name = "actionTaken", required = false) 173 @WebResult(name = "actionsTaken") 174 List<ActionTaken> getActionsTaken(@WebParam(name = "documentId") String documentId) 175 throws RiceIllegalArgumentException; 176 177 /** 178 * @deprecated mistaken operation name...use getActionsTaken instead 179 * 180 * @param documentId the unique id of a document 181 * 182 * @return the list of past ActionTakens for a given documentId 183 * 184 * @throws RiceIllegalArgumentException if {@code documentId} is null 185 */ 186 @WebMethod(operationName = "getActionRequests") 187 @XmlElementWrapper(name = "actionsTaken", required = true) 188 @XmlElement(name = "actionTaken", required = false) 189 @WebResult(name = "actionsTaken") 190 @Deprecated 191 List<ActionTaken> _getActionsTaken(@WebParam(name = "documentId") String documentId) 192 throws RiceIllegalArgumentException; 193 194 195 /** 196 * Gets a list of all {@link ActionTaken} of a {@link Document} with the given documentId 197 * 198 * @since 2.0.2 199 * 200 * @param documentId the unique id of a document 201 * 202 * @return the list of ActionTakens (both current and not) for a given documentId 203 * 204 * @throws RiceIllegalArgumentException if {@code documentId} is null 205 */ 206 @WebMethod(operationName = "getAllActionRequests") 207 @XmlElementWrapper(name = "actionsTaken", required = true) 208 @XmlElement(name = "actionTaken", required = false) 209 @WebResult(name = "actionsTaken") 210 List<ActionTaken> getAllActionsTaken(@WebParam(name = "documentId") String documentId) 211 throws RiceIllegalArgumentException; 212 213 214 /** 215 * Gets a {@link DocumentDetail} of a {@link Document} with the given documentTypeName and appId 216 * 217 * @param documentTypeName the name of the DocumentType 218 * @param appId the unique id of the application 219 * 220 * @return a {@link DocumentDetail} for with the given documentTypeName and appId 221 * 222 * @throws RiceIllegalArgumentException if {@code documentTypeName} is null 223 * @throws RiceIllegalArgumentException if {@code appId} is null 224 */ 225 @WebMethod(operationName = "getDocumentDetailByAppId") 226 @WebResult(name = "documentDetail") 227 DocumentDetail getDocumentDetailByAppId(@WebParam(name = "documentTypeName") String documentTypeName, 228 @WebParam(name = "appId") String appId) 229 throws RiceIllegalArgumentException; 230 231 /** 232 * Gets a {@link DocumentDetail} of a {@link Document} with the given documentId 233 * 234 * @param documentId the unique id of the Document 235 * 236 * @return a {@link DocumentDetail} for with the given documentId 237 * 238 * @throws RiceIllegalArgumentException if {@code documentId} is null 239 */ 240 @WebMethod(operationName = "getDocumentDetail") 241 @WebResult(name = "documentDetail") 242 DocumentDetail getDocumentDetail(@WebParam(name = "documentId") String documentId); 243 244 245 /** 246 * Gets a {@link RouteNodeInstance} with the given nodeInstanceId 247 * 248 * @param routeNodeInstanceId the unique id of the {@link RouteNodeInstance} 249 * 250 * @return a {@link DocumentDetail} for with the given documentId 251 * 252 * @throws RiceIllegalArgumentException if {@code nodeInstanceId} is null 253 */ 254 @WebMethod(operationName = "getRouteNodeInstance") 255 @WebResult(name = "routeNodeInstance") 256 RouteNodeInstance getRouteNodeInstance(@WebParam(name = "routeNodeInstanceId") String routeNodeInstanceId) 257 throws RiceIllegalArgumentException; 258 259 /** 260 * Gets a value application document id of a {@link Document} with the given documentId 261 * 262 * @param documentId the unique id of the Document 263 * 264 * @return the value of the applicationDocumentId for the {@link Document} with the given documentId 265 * 266 * @throws RiceIllegalArgumentException if {@code documentId} is null 267 */ 268 @WebMethod(operationName = "getApplicationDocumentId") 269 @WebResult(name = "applicationDocumentId") 270 String getApplicationDocumentId(@WebParam(name = "documentId") String documentId) 271 throws RiceIllegalArgumentException; 272 273 /** 274 * Gets a value application document status of a {@link org.kuali.rice.kew.api.document.Document} with the given documentId 275 * 276 * @param documentId the unique id of the Document 277 * 278 * @return the value of the applicationDocumentStatus for the {@link org.kuali.rice.kew.api.document.Document} with the given documentId 279 * 280 * @throws org.kuali.rice.core.api.exception.RiceIllegalArgumentException if {@code documentId} is null 281 */ 282 @WebMethod(operationName = "getApplicationDocumentStatus") 283 @WebResult(name = "applicationDocumentStatus") 284 String getApplicationDocumentStatus(@WebParam(name = "documentId") String documentId) 285 throws RiceIllegalArgumentException; 286 287 /** 288 * Executes a search for workflow documents using the given criteria and as the principal with the given id. Since 289 * documents can define security which permits access to view certain search results, the given principal id will 290 * be used when evaluating which documents should be filtered from the results because of lack of access. 291 * 292 * @param principalId the id of the principal to execute the search as, if this value is non-null then security 293 * filtering will be executed against the results, if it is null then no filtering will be performed 294 * @param criteria the criteria to use when executing the search 295 * 296 * @return the results of the search, this will never be null but may contain an empty list of results 297 * 298 * @throws RiceIllegalArgumentException if the given criteria is null 299 */ 300 @WebMethod(operationName = "documentSearch") 301 @WebResult(name = "documentSearchResults") 302 DocumentSearchResults documentSearch( 303 @WebParam(name = "principalId") String principalId, 304 @WebParam(name = "criteria") DocumentSearchCriteria criteria) 305 throws RiceIllegalArgumentException; 306 307 /** 308 * Executes a search for workflow documents using the given criteria and as the principal with the given id. Since 309 * documents can define security which permits access to view certain search results, the given principal id will 310 * be used when evaluating which documents should be filtered from the results because of lack of access. 311 * 312 * @param principalId the id of the principal to execute the search as, if this value is non-null then security 313 * filtering will be executed against the results, if it is null then no filtering will be performed 314 * @param criteria the criteria to use when executing the search 315 * @param boolean to represent whether the document search details should be saved to the users preferences 316 * 317 * @return the results of the search, this will never be null but may contain an empty list of results 318 * 319 * @throws RiceIllegalArgumentException if the given criteria is null 320 */ 321 @WebMethod(operationName = "documentSearchSaveable") 322 @WebResult(name = "documentSearchResults") 323 DocumentSearchResults documentSearchSaveable( 324 @WebParam(name = "principalId") String principalId, 325 @WebParam(name = "criteria") DocumentSearchCriteria criteria, 326 @WebParam(name = "saveSearch") boolean saveSearch) 327 throws RiceIllegalArgumentException; 328 329 /** 330 * Gets a list of all {@link RouteNodeInstance} for a {@link Document} with the given documentId 331 * 332 * @param documentId the unique id of a Document 333 * 334 * @return the list of {@link RouteNodeInstance}s for the {@link Document} with the given documentId 335 * 336 * @throws RiceIllegalArgumentException if {@code documentId} is null 337 */ 338 @WebMethod(operationName = "getRouteNodeInstances") 339 @XmlElementWrapper(name = "routeNodeInstances", required = true) 340 @XmlElement(name = "routeNodeInstance", required = false) 341 @WebResult(name = "routeNodeInstances") 342 List<RouteNodeInstance> getRouteNodeInstances(@WebParam(name = "documentId") String documentId) 343 throws RiceIllegalArgumentException; 344 345 /** 346 * Gets a list of active {@link RouteNodeInstance} for a {@link Document} with the given documentId 347 * 348 * @param documentId the unique id of a Document 349 * 350 * @return the list of active {@link RouteNodeInstance}s for the {@link Document} with the given documentId 351 * 352 * @throws RiceIllegalArgumentException if {@code documentId} is null 353 */ 354 @WebMethod(operationName = "getActiveRouteNodeInstances") 355 @XmlElementWrapper(name = "routeNodeInstances", required = true) 356 @XmlElement(name = "routeNodeInstance", required = false) 357 @WebResult(name = "routeNodeInstances") 358 List<RouteNodeInstance> getActiveRouteNodeInstances(@WebParam(name = "documentId") String documentId) 359 throws RiceIllegalArgumentException; 360 361 /** 362 * Gets a list of terminal {@link RouteNodeInstance}s for a {@link Document} with the given documentId 363 * 364 * @param documentId the unique id of a Document 365 * 366 * @return the list of terminal {@link RouteNodeInstance}s for the {@link Document} with the given documentId 367 * 368 * @throws RiceIllegalArgumentException if {@code documentId} is null 369 */ 370 @WebMethod(operationName = "getTerminalRouteNodeInstances") 371 @XmlElementWrapper(name = "routeNodeInstances", required = true) 372 @XmlElement(name = "routeNodeInstance", required = false) 373 @WebResult(name = "routeNodeInstances") 374 List<RouteNodeInstance> getTerminalRouteNodeInstances(@WebParam(name = "documentId") String documentId) 375 throws RiceIllegalArgumentException; 376 377 /** 378 * Gets a list of current {@link RouteNodeInstance}s for a {@link Document} with the given documentId 379 * 380 * @param documentId the unique id of a Document 381 * 382 * @return the list of current {@link RouteNodeInstance}s for the {@link Document} with the given documentId 383 * 384 * @throws RiceIllegalArgumentException if {@code documentId} is null 385 */ 386 @WebMethod(operationName = "getCurrentRouteNodeInstances") 387 @XmlElementWrapper(name = "routeNodeInstances", required = true) 388 @XmlElement(name = "routeNodeInstance", required = false) 389 @WebResult(name = "routeNodeInstances") 390 List<RouteNodeInstance> getCurrentRouteNodeInstances(@WebParam(name = "documentId") String documentId) 391 throws RiceIllegalArgumentException; 392 393 /** 394 * Gets a list of all previous {@link RouteNodeInstance}'s node names for a {@link Document} with the given documentId 395 * 396 * @param documentId the unique id of a Document 397 * 398 * @return the list of all previous {@link RouteNodeInstance}'s node names for the {@link Document} with the 399 * given documentId 400 * 401 * @throws RiceIllegalArgumentException if {@code documentId} is null 402 */ 403 @WebMethod(operationName = "getPreviousRouteNodeNames") 404 @XmlElementWrapper(name = "previousRouteNodeNames", required = true) 405 @XmlElement(name = "previousRouteNodeName", required = false) 406 @WebResult(name = "previousRouteNodeNames") 407 List<String> getPreviousRouteNodeNames(@WebParam(name = "documentId") String documentId) 408 throws RiceIllegalArgumentException; 409 410 /** 411 * Gets the status value for a {@link Document} with the given documentId 412 * 413 * @param documentId the unique id of a Document 414 * 415 * @return the current status of the {@link Document} with the 416 * given documentId 417 * 418 * @throws RiceIllegalArgumentException if {@code documentId} is null 419 */ 420 @WebMethod(operationName = "getDocumentStatus") 421 @WebResult(name = "documentStatus") 422 DocumentStatus getDocumentStatus(@WebParam(name = "documentId") String documentId) 423 throws RiceIllegalArgumentException; 424 425 426 /** 427 * Gets a list of principalId values for a {@link Document} with the given documentId 428 * and action request code that have pending action requests 429 * 430 * @param actionRequestedCd code for the pending action requested 431 * @param documentId the unique id of a Document 432 * 433 * @return a list of principalIds for the {@link Document} with the 434 * given parameters and have a pending action request 435 * 436 * @throws RiceIllegalArgumentException if {@code documentId} is null 437 * @throws RiceIllegalArgumentException if {@code actionRequestCd} is null 438 */ 439 @WebMethod(operationName = "getPrincipalIdsWithPendingActionRequestByActionRequestedAndDocId") 440 @XmlElementWrapper(name = "principalIds", required = true) 441 @XmlElement(name = "principalId", required = false) 442 @WebResult(name = "principalIds") 443 List<String> getPrincipalIdsWithPendingActionRequestByActionRequestedAndDocId( 444 @WebParam(name = "actionRequestedCd") String actionRequestedCd, 445 @WebParam(name = "documentId") String documentId) 446 throws RiceIllegalArgumentException; 447 448 449 /** 450 * Gets the {@link Document} initiator's principalId with the given documentId 451 * 452 * @param documentId the unique id of a Document 453 * 454 * @return the {@link Document} initiator's principalId 455 * 456 * @throws RiceIllegalArgumentException if {@code documentId} is null 457 */ 458 @WebMethod(operationName = "getDocumentInitiatorPrincipalId") 459 @WebResult(name = "principalId") 460 String getDocumentInitiatorPrincipalId(@WebParam(name = "documentId") String documentId) 461 throws RiceIllegalArgumentException; 462 463 /** 464 * Gets the {@link Document}'s 'routed by' principalId with the given documentId 465 * Returns null if the document is not found 466 * 467 * @param documentId the unique id of a Document 468 * 469 * @return the {@link Document}'s 'routed by' principalId 470 * 471 * @throws RiceIllegalArgumentException if {@code documentId} is null 472 */ 473 @WebMethod(operationName = "getRoutedByPrincipalIdByDocumentId") 474 @WebResult(name = "principalId") 475 String getRoutedByPrincipalIdByDocumentId(@WebParam(name = "documentId") String documentId) 476 throws RiceIllegalArgumentException; 477 478 /** 479 * Does a direct search for searchableAttributes without going through the document search 480 * This returns a list of String values for String searchableAttributes 481 * 482 * @param documentId the unique id of a Document 483 * @param key the searchableAttributes key value 484 * 485 * @return a list of String values for the {@link Document} with the 486 * given documentId and searchable attribute key 487 * 488 * @throws RiceIllegalArgumentException if {@code documentId} is null 489 * @throws RiceIllegalArgumentException if {@code key} is null 490 */ 491 @WebMethod(operationName = "getSearchableAttributeStringValuesByKey") 492 @XmlElementWrapper(name = "searchableAttributeStringValues", required = true) 493 @XmlElement(name = "searchableAttributeStringValue", required = false) 494 @WebResult(name = "searchableAttributeStringValues") 495 List<String> getSearchableAttributeStringValuesByKey(@WebParam(name = "documentId") String documentId, 496 @WebParam(name = "key") String key) 497 throws RiceIllegalArgumentException; 498 499 /** 500 * Does a direct search for searchableAttributes without going through the document search 501 * This returns a list of DateTime values for date/time searchableAttributes 502 * 503 * @param documentId the unique id of a Document 504 * @param key the searchableAttributes key value 505 * 506 * @return a list of DateTime values for the {@link Document} with the 507 * given documentId and searchable attribute key 508 * 509 * @throws RiceIllegalArgumentException if {@code documentId} is null 510 * @throws RiceIllegalArgumentException if {@code key} is null 511 */ 512 @WebMethod(operationName = "getSearchableAttributeDateTimeValuesByKey") 513 @XmlElementWrapper(name = "searchableAttributeDateTimeValues", required = true) 514 @XmlElement(name = "searchableAttributeDateTimeValue", required = false) 515 @WebResult(name = "searchableAttributeDateTimeValues") 516 @XmlJavaTypeAdapter(value = DateTimeAdapter.class) 517 List<DateTime> getSearchableAttributeDateTimeValuesByKey(@WebParam(name = "documentId") String documentId, 518 @WebParam(name = "key") String key) 519 throws RiceIllegalArgumentException; 520 521 /** 522 * Does a direct search for searchableAttributes without going through the document search 523 * This returns a list of BigDecimal values for decimal searchableAttributes 524 * 525 * @param documentId the unique id of a Document 526 * @param key the searchableAttributes key value 527 * 528 * @return a list of BigDecimal values for the {@link Document} with the 529 * given documentId and searchable attribute key 530 * 531 * @throws RiceIllegalArgumentException if {@code documentId} is null 532 * @throws RiceIllegalArgumentException if {@code key} is null 533 */ 534 @WebMethod(operationName = "getSearchableAttributeFloatValuesByKey") 535 @XmlElementWrapper(name = "searchableAttributeBigDecimalValues", required = true) 536 @XmlElement(name = "searchableAttributeBigDecimalValue", required = false) 537 @WebResult(name = "searchableAttributeBigDecimalValues") 538 List<BigDecimal> getSearchableAttributeFloatValuesByKey(@WebParam(name = "documentId") String documentId, 539 @WebParam(name = "key") String key) 540 throws RiceIllegalArgumentException; 541 542 /** 543 * Does a direct search for searchableAttributes without going through the document search 544 * This returns a list of Long values for long searchableAttributes 545 * 546 * @param documentId the unique id of a Document 547 * @param key the searchableAttributes key value 548 * 549 * @return a list of BigDecimal values for the {@link Document} with the 550 * given documentId and searchable attribute key 551 * 552 * @throws RiceIllegalArgumentException if {@code documentId} is null 553 * @throws RiceIllegalArgumentException if {@code key} is null 554 */ 555 @WebMethod(operationName = "getSearchableAttributeLongValuesByKey") 556 @XmlElementWrapper(name = "searchableAttributeLongValues", required = true) 557 @XmlElement(name = "searchableAttributeLongValue", required = false) 558 @WebResult(name = "searchableAttributeLongValues") 559 List<Long> getSearchableAttributeLongValuesByKey(@WebParam(name = "documentId") String documentId, 560 @WebParam(name = "key") String key) 561 throws RiceIllegalArgumentException; 562 563 /** 564 * Gets a list of DocumentStatusTransitions for the {@link Document} with the given documentId 565 * 566 * @param documentId the unique id of a Document 567 * 568 * @return a list of DocumentStatusTransitions for the {@link Document} with the 569 * given documentId 570 * 571 * @throws RiceIllegalArgumentException if {@code documentId} is null 572 */ 573 @WebMethod(operationName = "getDocumentStatusTransitionHistory") 574 @XmlElementWrapper(name = "documentStatusTransitions", required = true) 575 @XmlElement(name = "documentStatusTransition", required = false) 576 @WebResult(name = "documentStatusTransitions") 577 List<DocumentStatusTransition> getDocumentStatusTransitionHistory(@WebParam(name = "documentId") String documentId) 578 throws RiceIllegalArgumentException; 579 580 581 /** 582 * Saves the passed in {@link DocumentLink}. If the {@link DocumentLink}'s id field is created. This method 583 * actually creates two different links in the database (one from the document being 584 * linked to the target and vice-versa). If the links already exist, then the call is ignored. 585 * 586 * @param documentLink the unique id of a Document 587 * 588 * @return the newly saved {@link DocumentLink} 589 * 590 * @throws RiceIllegalArgumentException if {@code documentLink} is null 591 * @throws RiceIllegalArgumentException if {@code documentLink}'s is id value is populated 592 */ 593 @WebMethod(operationName = "addDocumentLink") 594 @WebResult(name = "documentLink") 595 DocumentLink addDocumentLink(@WebParam(name = "documentLink") DocumentLink documentLink) throws RiceIllegalArgumentException; 596 597 /** 598 * Removes the {@link DocumentLink} with the given documentLinkId. 599 * 600 * @param documentLinkId the unique id of a Document 601 * 602 * @return the deleted {@link DocumentLink} 603 * 604 * @throws RiceIllegalArgumentException if {@code documentLink} is null 605 * @throws RiceIllegalStateException if no DocumentLink with the passed in{@code documentLink} exist 606 */ 607 @WebMethod(operationName = "deleteDocumentLink") 608 @WebResult(name = "documentLink") 609 DocumentLink deleteDocumentLink(@WebParam(name = "documentLinkId") String documentLinkId) throws RiceIllegalArgumentException; 610 611 612 /** 613 * Removes all {@link DocumentLink}s for the given {@link Document} with the given originatingDocumentId. 614 * 615 * @param originatingDocumentId the unique id of the originating Document of the document links to delete 616 * 617 * @return a list of the deleted {@link DocumentLink}s 618 * 619 * @throws RiceIllegalArgumentException if {@code documentLink} is null 620 */ 621 @WebMethod(operationName = "deleteDocumentLinksByDocumentId") 622 @XmlElementWrapper(name = "documentLinks", required = true) 623 @XmlElement(name = "documentLink", required = false) 624 @WebResult(name = "documentLinks") 625 List<DocumentLink> deleteDocumentLinksByDocumentId(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 626 627 /** 628 * Gets a list of all {@link DocumentLink}s for outgoing links from the {@link Document} with the given documentId. 629 * 630 * @param originatingDocumentId the unique id of the originating Document of the document links to retrieve 631 * 632 * @return a list of the outgoing {@link DocumentLink}s for the originating document 633 * 634 * @throws RiceIllegalArgumentException if {@code originatingDocumentId} is null 635 */ 636 @WebMethod(operationName = "getOutgoingDocumentLinks") 637 @XmlElementWrapper(name = "documentLinks", required = true) 638 @XmlElement(name = "documentLink", required = false) 639 @WebResult(name = "documentLinks") 640 List<DocumentLink> getOutgoingDocumentLinks(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 641 642 /** 643 * Gets a list of all {@link DocumentLink}s for incoming links from the {@link Document} with the given documentId. 644 * 645 * @param originatingDocumentId the unique id of the incoming Document of the document links to retrieve 646 * 647 * @return a list of the outgoing {@link DocumentLink}s for the incoming document 648 * 649 * @throws RiceIllegalArgumentException if {@code originatingDocumentId} is null 650 */ 651 @WebMethod(operationName = "getIncomingDocumentLinks") 652 @XmlElementWrapper(name = "documentLinks", required = true) 653 @XmlElement(name = "documentLink", required = false) 654 @WebResult(name = "documentLinks") 655 List<DocumentLink> getIncomingDocumentLinks(@WebParam(name = "originatingDocumentId") String originatingDocumentId) throws RiceIllegalArgumentException; 656 657 /** 658 * Gets the {@link DocumentLink} for with the given documentLinkId. 659 * 660 * @param documentLinkId the unique id of the {@link DocumentLink} to retrieve 661 * 662 * @return a {@link DocumentLink} with the passed in documentLinkId 663 * 664 * @throws RiceIllegalArgumentException if {@code documentLinkId} is null 665 */ 666 @WebMethod(operationName = "getDocumentLink") 667 @WebResult(name = "documentLinks") 668 DocumentLink getDocumentLink(@WebParam(name = "documentLinkId") String documentLinkId) throws RiceIllegalArgumentException; 669 670 /** 671 * Gets a list of active route node names for a {@link Document} with the given documentId. Will never return null but an empty collection to indicate no results. 672 * 673 * @param documentId the unique id of a Document 674 * 675 * @return an unmodifiable list of active route node names for the {@link Document} with the given documentId 676 * 677 * @throws RiceIllegalArgumentException if {@code documentId} is null or blank 678 * 679 * @since rice 2.2 680 */ 681 @WebMethod(operationName = "getActiveRouteNodeNames") 682 @XmlElementWrapper(name = "nodes", required = true) 683 @XmlElement(name = "node", required = false) 684 @WebResult(name = "nodes") 685 List<String> getActiveRouteNodeNames(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 686 687 /** 688 * Gets a list of terminal route node names for a {@link Document} with the given documentId. Will never return null but an empty collection to indicate no results. 689 * 690 * @param documentId the unique id of a Document 691 * 692 * @return an unmodifiable list of terminal route node names for the {@link Document} with the given documentId 693 * 694 * @throws RiceIllegalArgumentException if {@code documentId} is null or blank 695 * 696 * @since rice 2.2 697 */ 698 @WebMethod(operationName = "getTerminalRouteNodeNames") 699 @XmlElementWrapper(name = "nodes", required = true) 700 @XmlElement(name = "node", required = false) 701 @WebResult(name = "nodes") 702 List<String> getTerminalRouteNodeNames(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 703 704 /** 705 * Gets a list of current route node names for a {@link Document} with the given documentId. Will never return null but an empty collection to indicate no results. 706 * 707 * @param documentId the unique id of a Document 708 * 709 * @return an unmodifiable list of current route node names for the {@link Document} with the given documentId 710 * 711 * @throws RiceIllegalArgumentException if {@code documentId} is null or blank 712 * 713 * @since rice 2.2 714 */ 715 @WebMethod(operationName = "getCurrentRouteNodeNames") 716 @XmlElementWrapper(name = "nodes", required = true) 717 @XmlElement(name = "node", required = false) 718 @WebResult(name = "nodes") 719 List<String> getCurrentRouteNodeNames(@WebParam(name = "documentId") String documentId) throws RiceIllegalArgumentException; 720 }