org.kuali.rice.kew.impl.action
Class WorkflowDocumentActionsServiceImpl

java.lang.Object
  extended by org.kuali.rice.kew.impl.action.WorkflowDocumentActionsServiceImpl
All Implemented Interfaces:
WorkflowDocumentActionsService

public class WorkflowDocumentActionsServiceImpl
extends Object
implements WorkflowDocumentActionsService

Reference implementation of the WorkflowDocumentActionsService api.

Author:
Kuali Rice Team (rice.collab@kuali.org)

Nested Class Summary
protected static interface WorkflowDocumentActionsServiceImpl.DocumentActionCallback
           
protected static class WorkflowDocumentActionsServiceImpl.StandardDocumentActionCallback
           
 
Constructor Summary
WorkflowDocumentActionsServiceImpl()
           
 
Method Summary
 DocumentActionResult acknowledge(DocumentActionParameters parameters)
          Executes an ActionType.ACKNOWLEDGE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult adHocToGroup(DocumentActionParameters parameters, AdHocToGroup adHocToGroup)
          Executes an ActionType.ADHOC_REQUEST action for the given group and document specified in the supplied parameters to create an ad hoc action request to the target group specified in the AdHocToGroup.
 DocumentActionResult adHocToPrincipal(DocumentActionParameters parameters, AdHocToPrincipal adHocToPrincipal)
          Executes an ActionType.ADHOC_REQUEST action for the given principal and document specified in the supplied parameters to create an ad hoc action request to the target principal specified in the AdHocToPrincipal.
 DocumentActionResult approve(DocumentActionParameters parameters)
          Executes an ActionType.APPROVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult blanketApprove(DocumentActionParameters parameters)
          Triggers the execution of a full ActionType.BLANKET_APPROVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult blanketApproveToNodes(DocumentActionParameters parameters, Set<String> nodeNames)
          Triggers the execution of a ActionType.BLANKET_APPROVE action which orchestrates the document to the given set of node names for the given principal and document specified in the supplied parameters.
 DocumentActionResult cancel(DocumentActionParameters parameters)
          Executes a ActionType.CANCEL action for the given principal and document specified in the supplied parameters.
 DocumentActionResult clearFyi(DocumentActionParameters parameters)
          Executes an ActionType.FYI action for the given principal and document specified in the supplied parameters.
 DocumentActionResult complete(DocumentActionParameters parameters)
          Executes an ActionType.COMPLETE action for the given principal and document specified in the supplied parameters.
protected  DocumentActionResult constructDocumentActionResult(DocumentRouteHeaderValue documentBo, String principalId)
           
 Document create(String documentTypeName, String initiatorPrincipalId, DocumentUpdate documentUpdate, DocumentContentUpdate documentContentUpdate)
          Creates a new document instance from the given document type.
 Document delete(String documentId, String principalId)
          Deletes the document.
 RequestedActions determineRequestedActions(String documentId, String principalId)
          Determines which actions are requested against the document with the given id for the principal with the given id.
protected  RequestedActions determineRequestedActionsInternal(DocumentRouteHeaderValue documentBo, String principalId)
           
 ValidActions determineValidActions(String documentId, String principalId)
          Determines which actions against the document with the given id are valid for the principal with the given id.
protected  ValidActions determineValidActionsInternal(DocumentRouteHeaderValue documentBo, String principalId)
           
 DocumentActionResult disapprove(DocumentActionParameters parameters)
          Executes a ActionType.DISAPPROVE action for the given principal and document specified in the supplied parameters.
 boolean documentWillHaveAtLeastOneActionRequest(RoutingReportCriteria reportCriteria, List<String> actionRequestedCodes, boolean ignoreCurrentActionRequests)
          Determines if a document has at least one action request
protected  DocumentActionResult executeActionInternal(DocumentActionParameters parameters, WorkflowDocumentActionsServiceImpl.DocumentActionCallback callback)
           
 DocumentDetail executeSimulation(RoutingReportCriteria reportCriteria)
          Executes a simulation of a document to get all previous and future route information
 List<String> getPrincipalIdsInRouteLog(String documentId, boolean lookFuture)
          Returns a list of principal Ids that exist in a route log
protected  DocumentRouteHeaderValue init(DocumentActionParameters parameters)
           
 void initiateIndexing(String documentId)
           
 boolean isFinalApprover(String documentId, String principalId)
          Determines if a passed in user is the final approver for a document
 boolean isLastApproverAtNode(String documentId, String principalId, String nodeName)
          Determines if a passed in user is the last approver at a specified route node
 boolean isUserInRouteLog(String documentId, String principalId, boolean lookFuture)
          Determines if a passed in user exists in a document's route log or future route depending on the passed in lookFuture value
 boolean isUserInRouteLogWithOptionalFlattening(String documentId, String principalId, boolean lookFuture, boolean flattenNodes)
          Determines if a passed in user exists in a document's route log or future route depending on the passed in lookFuture value and flattenNodes
 void logAnnotation(String documentId, String principalId, String annotation)
          Records the non-routed document action.
 DocumentActionResult move(DocumentActionParameters parameters, MovePoint movePoint)
          Triggers the execution of a ActionType.MOVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult placeInExceptionRouting(DocumentActionParameters parameters)
          Places a document in exception routing or the given principal and document specified in the supplied parameters.
 DocumentActionResult recall(DocumentActionParameters parameters, boolean cancel)
          Executes a ActionType.RECALL action for the given principal and document specified in the supplied parameters.
 DocumentActionResult releaseGroupAuthority(DocumentActionParameters parameters, String groupId)
          Triggers the execution of a ActionType.RELEASE_GROUP_AUTHORITY action for the given principal and document specified in the supplied parameters.
 void reResolveRoleByDocTypeName(String documentTypeName, String roleName, String qualifiedRoleNameLabel)
          Re-resolves the given role for all documents for the given document type (including children).
 void reResolveRoleByDocumentId(String documentId, String roleName, String qualifiedRoleNameLabel)
          Re-resolves the given role for all documents for the given document id (including children).
 DocumentActionResult returnToPreviousNode(DocumentActionParameters parameters, ReturnPoint returnPoint)
          Triggers the execution of a ActionType.RETURN_TO_PREVIOUS action for the given principal and document specified in the supplied parameters.
 DocumentActionResult revokeAdHocRequestById(DocumentActionParameters parameters, String actionRequestId)
          Executes an ActionType.ADHOC_REQUEST_REVOKE action for the given principal and document specified in the supplied parameters against the action request with the given id.
 DocumentActionResult revokeAdHocRequests(DocumentActionParameters parameters, AdHocRevoke revoke)
          Executes an ActionType.ADHOC_REQUEST_REVOKE action which revokes all pending ad hoc action requests that match the supplied AdHocRevoke criteria for the given principal and document specified in the supplied parameters.
 DocumentActionResult revokeAllAdHocRequests(DocumentActionParameters parameters)
          Executes an ActionType.ADHOC_REQUEST_REVOKE action which revokes all pending ad hoc action requests for the given principal and document specified in the supplied parameters.
 DocumentActionResult route(DocumentActionParameters parameters)
          Submits a document that is in either the "initiated" or "saved" state to the workflow engine for processing.
 boolean routeNodeHasApproverActionRequest(String documentTypeName, String docContent, String nodeName)
          Determines if a route node has an 'approve action' request
 DocumentActionResult save(DocumentActionParameters parameters)
          Triggers the execution of a ActionType.SAVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult saveDocumentData(DocumentActionParameters parameters)
          Triggers the execution of a ActionType.SAVE action for the given principal and document specified in the supplied parameters.
 void setDocumentTypeService(DocumentTypeService documentTypeService)
           
 DocumentActionResult superUserBlanketApprove(DocumentActionParameters parameters, boolean executePostProcessor)
          Triggers the execution of a ActionType.SU_BLANKET_APPROVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult superUserCancel(DocumentActionParameters parameters, boolean executePostProcessor)
          Triggers the execution of a ActionType.SU_CANCEL action for the given principal and document specified in the supplied parameters.
 DocumentActionResult superUserDisapprove(DocumentActionParameters parameters, boolean executePostProcessor)
          Triggers the execution of a ActionType.SU_DISAPPROVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult superUserNodeApprove(DocumentActionParameters parameters, boolean executePostProcessor, String nodeName)
          Triggers the execution of a ActionType.SU_APPROVE action for the given principal and document specified in the supplied parameters.
 DocumentActionResult superUserReturnToPreviousNode(DocumentActionParameters parameters, boolean executePostProcessor, ReturnPoint returnPoint)
          Triggers the execution of a ActionType.SU_RETURN_TO_PREVIOUS action for the given principal and document specified in the supplied parameters.
 DocumentActionResult superUserTakeRequestedAction(DocumentActionParameters parameters, boolean executePostProcessor, String actionRequestId)
          Triggers the execution of a ActionType.SU_APPROVE action for the given actionRequestId and principal and document specified in the supplied parameters.
 DocumentActionResult takeGroupAuthority(DocumentActionParameters parameters, String groupId)
          Triggers the execution of a ActionType.TAKE_GROUP_AUTHORITY action for the given principal and document specified in the supplied parameters.
 List<RemotableAttributeError> validateWorkflowAttributeDefinition(WorkflowAttributeDefinition definition)
          Validates a workflow attribute definition and returns a list of validation errors
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

WorkflowDocumentActionsServiceImpl

public WorkflowDocumentActionsServiceImpl()
Method Detail

init

protected DocumentRouteHeaderValue init(DocumentActionParameters parameters)

create

public Document create(String documentTypeName,
                       String initiatorPrincipalId,
                       DocumentUpdate documentUpdate,
                       DocumentContentUpdate documentContentUpdate)
                throws RiceIllegalArgumentException,
                       IllegalDocumentTypeException,
                       InvalidActionTakenException
Description copied from interface: WorkflowDocumentActionsService
Creates a new document instance from the given document type. The initiator of the resulting document will be the same as the initiator that is passed to this method. Optional DocumentUpdate and DocumentContentUpdate parameters can be supplied in order to create the document with these additional pieces of data already set.

By default, if neither the DocumentUpdate or DocumentContentUpdate is passed to this method, the document that is created and returned from this operation will have the following initial state:

Additionally, the initial RouteNodeInstance for the workflow process on the document will be created and linked to the document as it's initial node. Once the document is created, the WorkflowDocumentActionsService.route(DocumentActionParameters) operation must be invoked in order to submit it to the workflow engine for initial processing.

In certain situations, the given principal may not be permitted to initiate documents of the given type. In these cases an InvalidActionTakenException will be thrown.

Specified by:
create in interface WorkflowDocumentActionsService
Parameters:
documentTypeName - the name of the document type from which to create this document
initiatorPrincipalId - the id of the principal who is initiating this document
documentUpdate - specifies additional document to set on the document upon creation, this is optional and if null is passed then the document will be created with the default document state
documentContentUpdate - defines what the initial document content for the document should be, this is optional if null is passed then the document will be created with the default empty document content
Returns:
the document that was created
Throws:
RiceIllegalArgumentException - if principalId is null or blank
IllegalDocumentTypeException - if the specified document type is not active
InvalidActionTakenException - if the supplied principal is not allowed to execute this action

determineValidActions

public ValidActions determineValidActions(String documentId,
                                          String principalId)
Description copied from interface: WorkflowDocumentActionsService
Determines which actions against the document with the given id are valid for the principal with the given id.

Specified by:
determineValidActions in interface WorkflowDocumentActionsService
Parameters:
documentId - the id of the document for which to determine valid actions
principalId - the id of the principal for which to determine valid actions against the given document
Returns:
a ValidActions object which contains the valid actions for the given principal against the given document

determineValidActionsInternal

protected ValidActions determineValidActionsInternal(DocumentRouteHeaderValue documentBo,
                                                     String principalId)

determineRequestedActions

public RequestedActions determineRequestedActions(String documentId,
                                                  String principalId)
Description copied from interface: WorkflowDocumentActionsService
Determines which actions are requested against the document with the given id for the principal with the given id. These are generally derived based on action requests that are currently pending against the document.

This method is distinguished from WorkflowDocumentActionsService.determineValidActions(String, String) in that fact that valid actions are the actions that the principal is permitted to take, while requested actions are those that the principal is specifically being asked to take. Note that the actions that are requested are used when assembling valid actions but are not necessarily the only authoritative source for determination of valid actions for the principal, as permissions and other configuration can also come into play.

Specified by:
determineRequestedActions in interface WorkflowDocumentActionsService
Parameters:
documentId - the id of the document for which to determine requested actions
principalId - the id of the principal for which to determine requested actions against the given document
Returns:
a RequestedActions object which contains the actions that are being requested from the given principal against the given document

determineRequestedActionsInternal

protected RequestedActions determineRequestedActionsInternal(DocumentRouteHeaderValue documentBo,
                                                             String principalId)

executeSimulation

public DocumentDetail executeSimulation(RoutingReportCriteria reportCriteria)
Description copied from interface: WorkflowDocumentActionsService
Executes a simulation of a document to get all previous and future route information

Specified by:
executeSimulation in interface WorkflowDocumentActionsService
Parameters:
reportCriteria - criteria for the simulation to follow
Returns:
DocumentDetail object representing the results of the simulation

constructDocumentActionResult

protected DocumentActionResult constructDocumentActionResult(DocumentRouteHeaderValue documentBo,
                                                             String principalId)

acknowledge

public DocumentActionResult acknowledge(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ACKNOWLEDGE action for the given principal and document specified in the supplied parameters. When a principal acknowledges a document, any of the principal's pending action requests at or below the acknowledge level (which includes fyi requests as well) will be satisfied by the principal's action. The principal's action should be recorded with the document as an ActionTaken.

Depending on document type policy, a pending action request at or below the acknowledge level may have to exist on the document in order for the principal to take this action. Otherwise an InvalidActionTakenException may be thrown. In order to determine if an acknowledge action is valid, the ValidActions or RequestedActions for the document can be checked.

Specified by:
acknowledge in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

approve

public DocumentActionResult approve(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.APPROVE action for the given principal and document specified in the supplied parameters. When a principal approves a document, any of the principal's pending action requests at or below the approve level (which includes complete, acknowledge, and fyi requests as well) will be satisfied by the principal's action. The principal's action should be recorded with the document as an ActionTaken.

Depending on document type policy, a pending action request at or below the approve level may have to exist on the document in order for the principal to take this action. Otherwise an InvalidActionTakenException may be thrown. In order to determine if an approve action is valid, the ValidActions or RequestedActions for the document can be checked.

Specified by:
approve in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

adHocToPrincipal

public DocumentActionResult adHocToPrincipal(DocumentActionParameters parameters,
                                             AdHocToPrincipal adHocToPrincipal)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ADHOC_REQUEST action for the given principal and document specified in the supplied parameters to create an ad hoc action request to the target principal specified in the AdHocToPrincipal.

Operates as per WorkflowDocumentActionsService.adHocToGroup(DocumentActionParameters, AdHocToGroup) with the exception that this method is used to send an adhoc request to principal instead of a group.

Besides this difference, the same rules that are in play for sending ad hoc requests to group apply for sending ad hoc requests to principals.

Specified by:
adHocToPrincipal in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
adHocToPrincipal - defines various pieces of information that informs what type of ad hoc request should be created
Returns:
the result of executing the action, including a view on the updated state of the document and related actions
See Also:
WorkflowDocumentActionsService.adHocToGroup(DocumentActionParameters, AdHocToGroup)

adHocToGroup

public DocumentActionResult adHocToGroup(DocumentActionParameters parameters,
                                         AdHocToGroup adHocToGroup)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ADHOC_REQUEST action for the given group and document specified in the supplied parameters to create an ad hoc action request to the target group specified in the AdHocToGroup. The AdHocToGroup contains additional information on how the ad hoc action request should be created, including the type of request to generate, at which node it should generated, etc.

The policy for how ad hoc actions handle request generation and interact with the workflow engine is different depending on the state of the document when the request to generate the ad hoc is submitted. There are also different scenarios under which certain types of ad hoc actions are allowed to be executed (throwing InvalidActionTakenException in situations where the actions are not permitted). The rules are defined as follows:

  1. If the status of the document is DocumentStatus.INITIATED then the action request will be generated with a status of ActionRequestStatus.INITIALIZED and no processing directives will be submitted to the workflow engine. When the document is routed, these ad hoc requests will get activated
  2. If the ad hoc request being created is an ActionRequestType.COMPLETE or ActionRequestType.APPROVE and the document is in a "terminal" state (either DocumentStatus.CANCELED, DocumentStatus.DISAPPROVED, DocumentStatus.PROCESSED, DocumentStatus.FINAL) or is in DocumentStatus.EXCEPTION status, then an InvalidActionTakenException will be thrown. This is because submitting such an action with a document in that state would result in creation of an illegal action request.
  3. If the document is in a "terminal" state (see above for definition) then the request will be immediately (and synchronously) activated.
  4. Otherwise, after creating the ad hoc request it will be in the ActionRequestStatus.INITIALIZED status, and the document will be immediately forwarded to the workflow engine for processing at which point the ad hoc request will activated at the appropriate time.

Unlink other actions, ad hoc actions don't result in the recording of an ActionTaken against the document. Instead, only the requested ad hoc ActionRequest is created.

Specified by:
adHocToGroup in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
adHocToGroup - defines various pieces of information that informs what type of ad hoc request should be created
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

revokeAdHocRequestById

public DocumentActionResult revokeAdHocRequestById(DocumentActionParameters parameters,
                                                   String actionRequestId)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ADHOC_REQUEST_REVOKE action for the given principal and document specified in the supplied parameters against the action request with the given id. The process of revoking an ad hoc request simply deactivates the request associating the generated ActionTaken of the revoke action with the deactivated request (this allows for it to be determined what caused the ad hoc request to be deactivated). As with other actions, this action taken is then recorded with the document.

Specified by:
revokeAdHocRequestById in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
actionRequestId - the id of the action request to revoke
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

revokeAdHocRequests

public DocumentActionResult revokeAdHocRequests(DocumentActionParameters parameters,
                                                AdHocRevoke revoke)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ADHOC_REQUEST_REVOKE action which revokes all pending ad hoc action requests that match the supplied AdHocRevoke criteria for the given principal and document specified in the supplied parameters. The process of revoking an ad hoc requests simply deactivates all ad hoc requests that match the given AdHocRevoke criteria, associating the generated ActionTaken of the revoke action with the deactivated requests (this allows for it to be determined what caused the ad hoc request to be deactivated). As with other actions, this action taken is then recorded with the document.

It's possible that the given ad hoc revoke command will match no action requests on the document, in which case this method will complete successfully but no requests will be deactivated.

Specified by:
revokeAdHocRequests in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
revoke - the criteria for matching ad hoc action requests on the specified document that should be revoked
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

revokeAllAdHocRequests

public DocumentActionResult revokeAllAdHocRequests(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.ADHOC_REQUEST_REVOKE action which revokes all pending ad hoc action requests for the given principal and document specified in the supplied parameters. This process of revoking all ad hoc requests will simply deactivate all ad hoc requests on the specified document, associating the generated ActionTaken of the revoke action with the deactivated requests (this allows for it to be determined what caused the ad hoc request to be deactivated). As with other actions, this action taken is then recorded with the document.

It's possible that the specified document will have no pending adhoc requests, in which case this method will complete successfully but no requests will be deactivated.

Specified by:
revokeAllAdHocRequests in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

cancel

public DocumentActionResult cancel(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes a ActionType.CANCEL action for the given principal and document specified in the supplied parameters. When a principal cancels a document, all pending action requests on the document are deactivated and the the principal's action will be recorded on the document as an ActionTaken. Additionally, the document will be (synchronously) transitioned to the DocumentStatus.CANCELED status.

In order to cancel a document, the principal must have permission to cancel documents of the appropriate type, and one of the following must hold true:

  1. The document must have a status of DocumentStatus.INITIATED or
  2. The document must have a status of DocumentStatus.SAVED or
  3. The principal must have a pending "complete" or "approve" request on the document.

    Specified by:
    cancel in interface WorkflowDocumentActionsService
    Parameters:
    parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
    Returns:
    the result of executing the action, including a view on the updated state of the document and related actions

recall

public DocumentActionResult recall(DocumentActionParameters parameters,
                                   boolean cancel)
Description copied from interface: WorkflowDocumentActionsService
Executes a ActionType.RECALL action for the given principal and document specified in the supplied parameters. When a principal cancels a document, all pending action requests on the document are deactivated and the the principal's action will be recorded on the document as an ActionTaken. Additionally, the document will be (synchronously) transitioned to the DocumentStatus.RECALLED status. TODO: FILL IN DOCS FOR RECALL ACTION

In order to cancel a document, the principal must have permission to cancel documents of the appropriate type, and one of the following must hold true:

  1. The document must have a status of DocumentStatus.INITIATED or
  2. The document must have a status of DocumentStatus.SAVED or
  3. The principal must have a pending "complete" or "approve" request on the document.

    Specified by:
    recall in interface WorkflowDocumentActionsService
    Parameters:
    parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
    cancel - whether to recall & cancel or recall & return to action list
    Returns:
    the result of executing the action, including a view on the updated state of the document and related actions

clearFyi

public DocumentActionResult clearFyi(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.FYI action for the given principal and document specified in the supplied parameters. When a principal clears fyis on a document, any of the principal's pending fyis will be satisfied by the principal's action. The principal's action should be recorded with the document as an ActionTaken.

Depending on document type policy, a pending fyi request may have to exist on the document in order for the principal to take this action. Otherwise an InvalidActionTakenException may be thrown. In order to determine if an fyi action is valid, the ValidActions or RequestedActions for the document can be checked.

Specified by:
clearFyi in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

complete

public DocumentActionResult complete(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes an ActionType.COMPLETE action for the given principal and document specified in the supplied parameters. When a principal completes a document, any of the principal's pending action requests at or below the complete level (which includes approve, acknowledge, and fyi requests as well) will be satisfied by the principal's action. The principal's action should be recorded with the document as an ActionTaken.

Depending on document type policy, a pending action request at or below the complete level may have to exist on the document in order for the principal to take this action. Otherwise an InvalidActionTakenException may be thrown. In order to determine if an complete action is valid, the ValidActions or RequestedActions for the document can be checked.

Specified by:
complete in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

disapprove

public DocumentActionResult disapprove(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Executes a ActionType.DISAPPROVE action for the given principal and document specified in the supplied parameters. When a principal disapproves a document, all pending action requests on the document are deactivated and the the principal's action will be recorded on the document as an ActionTaken. Additionally, the document will be (synchronously) transitioned to the DocumentStatus.DISAPPROVED status.

Depending on document type policy and configuration, notifications may be sent to past approvers of the document. By default, an "acknowledge" request will be sent to each principal who took an "approve" or "complete" action on the document previously.

In order to disapprove a document, the principal must have a pending approve or complete request on the document.

Specified by:
disapprove in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

route

public DocumentActionResult route(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Submits a document that is in either the "initiated" or "saved" state to the workflow engine for processing. The route action triggers the beginning of the routing process and (synchronously) switches the status of the document to DocumentStatus.ENROUTE. It then queues up a request to the workflow engine to process the document.

When the route action is executed, an ActionType.COMPLETE action is recorded on the document for the principal who executed the route action. At this point in time, any action requests that are currently on the document in an "initialized" state will be activated. Requests of this nature can commonly exist if ad hoc requests have been attached to the document prior to execution of the route action.

By default, the principal who initiated the document is the same principal who must submit the route command. However, a document type policy can be set which will relax this constraint.

The route action should ideally only ever be executed once for a given document. Depending on document type policy, attempting to execute a "route" action against a document which is already enroute or in a terminal state may result in an InvalidActionTakenException being thrown.

Specified by:
route in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

blanketApprove

public DocumentActionResult blanketApprove(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a full ActionType.BLANKET_APPROVE action for the given principal and document specified in the supplied parameters. Blanket approval will orchestrate a document from it's current node all the way to the end of the document's workflow process. During this process, it will automatically act on all "approve" and "complete" requests, effectively bypassing them. When it does this, it will notify the original recipients of these requests by routing acknowledge requests to them.

Blanket approve processing is handled by a special mode of the workflow engine which runs the document through it's full processing lifecycle, ensuring that it makes it's way to the end of it's route path (by bypassing any steps that would cause the process to halt, such as approval requests). Because of this nature, blanket approve processing behavior is governed by the same configuration as the rest of the workflow engine. So depending on whether the engine is configured or synchronous or asynchronous operation, the blanket approve processing will behave in the same manner.

In order to execute a blanket approve operation, the principal must have permissions to do so.

Specified by:
blanketApprove in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

blanketApproveToNodes

public DocumentActionResult blanketApproveToNodes(DocumentActionParameters parameters,
                                                  Set<String> nodeNames)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.BLANKET_APPROVE action which orchestrates the document to the given set of node names for the given principal and document specified in the supplied parameters. This method functions the same as WorkflowDocumentActionsService.blanketApprove(DocumentActionParameters) with the exception that the blanket approve process will be halted once all node names in the given set have been reached.

If null or an empty set is passed for nodeNames on this method, it's behavior will be equivalent to WorkflowDocumentActionsService.blanketApprove(DocumentActionParameters).

Specified by:
blanketApproveToNodes in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
nodeNames - a set of node names to which to blanket approve the given document
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

returnToPreviousNode

public DocumentActionResult returnToPreviousNode(DocumentActionParameters parameters,
                                                 ReturnPoint returnPoint)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.RETURN_TO_PREVIOUS action for the given principal and document specified in the supplied parameters. Return a document to a previous node will allow for the document to be pushed back to an earlier node in the process based on the criteria present in the ReturnPoint that is passed to this method.

The document is synchronously returned to the suggested return point (assuming the desired return point can be identified for the given document), and then the document will be submitted to the engine for further processing (effectively, re-establishing the flow of the document from the target return point).

Return the document to the first node in the document is treated as a special case and, rather then transitioning the document back to the "initiated" status, will route a "complete" request to the initiator of the document. The effectively enacts a return to the document initiator in these cases.

Specified by:
returnToPreviousNode in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

move

public DocumentActionResult move(DocumentActionParameters parameters,
                                 MovePoint movePoint)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.MOVE action for the given principal and document specified in the supplied parameters. Move a document to a node will allow for the document to be pushed to a different node in the process based on the criteria present in the MovePoint that is passed to this method.

The document is synchronously moved to the suggested move point (assuming the desired move point can be identified for the given document), and then the document will be submitted to the engine for further processing (effectively, re-establishing the flow of the document from the target return point).

Specified by:
move in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
movePoint - the point to move the document
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

takeGroupAuthority

public DocumentActionResult takeGroupAuthority(DocumentActionParameters parameters,
                                               String groupId)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.TAKE_GROUP_AUTHORITY action for the given principal and document specified in the supplied parameters. Takes authority of a group by a member of that group.

Specified by:
takeGroupAuthority in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
groupId - the group id to take authority of
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

releaseGroupAuthority

public DocumentActionResult releaseGroupAuthority(DocumentActionParameters parameters,
                                                  String groupId)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.RELEASE_GROUP_AUTHORITY action for the given principal and document specified in the supplied parameters. Releases authority of a group by a member of that group.

Specified by:
releaseGroupAuthority in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
groupId - the group id to take authority of
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

save

public DocumentActionResult save(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SAVE action for the given principal and document specified in the supplied parameters. Saves a document to a at the current point.

Specified by:
save in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

saveDocumentData

public DocumentActionResult saveDocumentData(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SAVE action for the given principal and document specified in the supplied parameters. Saves the current document data for the document. Note that passing an annotation to this will have no effect because it is not recorded in the route log

Specified by:
saveDocumentData in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

delete

public Document delete(String documentId,
                       String principalId)
Description copied from interface: WorkflowDocumentActionsService
Deletes the document.

Specified by:
delete in interface WorkflowDocumentActionsService
Parameters:
documentId - the unique id of the document to delete
Returns:
the document that was removed from the system

logAnnotation

public void logAnnotation(String documentId,
                          String principalId,
                          String annotation)
Description copied from interface: WorkflowDocumentActionsService
Records the non-routed document action. - Checks to make sure the document status allows the action. Records the action.

Specified by:
logAnnotation in interface WorkflowDocumentActionsService
Parameters:
documentId - the unique id of the document to delete

initiateIndexing

public void initiateIndexing(String documentId)
Specified by:
initiateIndexing in interface WorkflowDocumentActionsService
Parameters:
documentId - the unique id of the document to delete

superUserBlanketApprove

public DocumentActionResult superUserBlanketApprove(DocumentActionParameters parameters,
                                                    boolean executePostProcessor)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_BLANKET_APPROVE action for the given principal and document specified in the supplied parameters. Does a blanket approve for a super user and runs post-processing depending on executePostProcessor

Specified by:
superUserBlanketApprove in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

superUserNodeApprove

public DocumentActionResult superUserNodeApprove(DocumentActionParameters parameters,
                                                 boolean executePostProcessor,
                                                 String nodeName)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_APPROVE action for the given principal and document specified in the supplied parameters. Does an approve for a super user on a node and runs post-processing depending on executePostProcessor

Specified by:
superUserNodeApprove in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

superUserTakeRequestedAction

public DocumentActionResult superUserTakeRequestedAction(DocumentActionParameters parameters,
                                                         boolean executePostProcessor,
                                                         String actionRequestId)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_APPROVE action for the given actionRequestId and principal and document specified in the supplied parameters. Does an approve for a super user on a node and runs post-processing depending on executePostProcessor

Specified by:
superUserTakeRequestedAction in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
actionRequestId - unique Id of an action request to take action on
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

superUserDisapprove

public DocumentActionResult superUserDisapprove(DocumentActionParameters parameters,
                                                boolean executePostProcessor)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_DISAPPROVE action for the given principal and document specified in the supplied parameters. Does a disapprove for a super user on a node and runs post-processing depending on executePostProcessor

Specified by:
superUserDisapprove in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

superUserCancel

public DocumentActionResult superUserCancel(DocumentActionParameters parameters,
                                            boolean executePostProcessor)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_CANCEL action for the given principal and document specified in the supplied parameters. Does an cancel for a super user on a node and runs post-processing depending on executePostProcessor

Specified by:
superUserCancel in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

superUserReturnToPreviousNode

public DocumentActionResult superUserReturnToPreviousNode(DocumentActionParameters parameters,
                                                          boolean executePostProcessor,
                                                          ReturnPoint returnPoint)
Description copied from interface: WorkflowDocumentActionsService
Triggers the execution of a ActionType.SU_RETURN_TO_PREVIOUS action for the given principal and document specified in the supplied parameters. Returns the document to the previous node for a super user on a node and runs post-processing depending on executePostProcessor

Specified by:
superUserReturnToPreviousNode in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
executePostProcessor - boolean value determining if the post-processor should be run or not
returnPoint - point to return to
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

placeInExceptionRouting

public DocumentActionResult placeInExceptionRouting(DocumentActionParameters parameters)
Description copied from interface: WorkflowDocumentActionsService
Places a document in exception routing or the given principal and document specified in the supplied parameters.

Specified by:
placeInExceptionRouting in interface WorkflowDocumentActionsService
Parameters:
parameters - the parameters which indicate which principal is executing the action against which document, as well as additional operations to take against the document, such as updating document data
Returns:
the result of executing the action, including a view on the updated state of the document and related actions

documentWillHaveAtLeastOneActionRequest

public boolean documentWillHaveAtLeastOneActionRequest(RoutingReportCriteria reportCriteria,
                                                       List<String> actionRequestedCodes,
                                                       boolean ignoreCurrentActionRequests)
Description copied from interface: WorkflowDocumentActionsService
Determines if a document has at least one action request

Specified by:
documentWillHaveAtLeastOneActionRequest in interface WorkflowDocumentActionsService
Parameters:
reportCriteria - criteria for routing report
actionRequestedCodes - list of action request codes to see if they exist for the document
ignoreCurrentActionRequests - boolean value to determine if current action requests should be ignored
Returns:
boolean value representing if a document will have at least one action request

reResolveRoleByDocTypeName

public void reResolveRoleByDocTypeName(String documentTypeName,
                                       String roleName,
                                       String qualifiedRoleNameLabel)
Description copied from interface: WorkflowDocumentActionsService
Re-resolves the given role for all documents for the given document type (including children).

Specified by:
reResolveRoleByDocTypeName in interface WorkflowDocumentActionsService
Parameters:
documentTypeName - documentTypeName of DocuemntType for role
roleName - name of Role to reresolve
qualifiedRoleNameLabel - qualified role name label

reResolveRoleByDocumentId

public void reResolveRoleByDocumentId(String documentId,
                                      String roleName,
                                      String qualifiedRoleNameLabel)
Description copied from interface: WorkflowDocumentActionsService
Re-resolves the given role for all documents for the given document id (including children).

Specified by:
reResolveRoleByDocumentId in interface WorkflowDocumentActionsService
Parameters:
documentId - documentId of Docuemnt for role
roleName - name of Role to reresolve
qualifiedRoleNameLabel - qualified role name label

validateWorkflowAttributeDefinition

public List<RemotableAttributeError> validateWorkflowAttributeDefinition(WorkflowAttributeDefinition definition)
Description copied from interface: WorkflowDocumentActionsService
Validates a workflow attribute definition and returns a list of validation errors

Specified by:
validateWorkflowAttributeDefinition in interface WorkflowDocumentActionsService
Parameters:
definition - WorkflowAttributeDefinition to validate
Returns:
a list of RemotableAttributeErrors caused by validation of the passed in definition

isFinalApprover

public boolean isFinalApprover(String documentId,
                               String principalId)
Description copied from interface: WorkflowDocumentActionsService
Determines if a passed in user is the final approver for a document

Specified by:
isFinalApprover in interface WorkflowDocumentActionsService
Parameters:
documentId - unique Id of the document
principalId - unique Id of Principal to look for in document's route log
Returns:
boolean value representing if a principal is the final approver for a document

routeNodeHasApproverActionRequest

public boolean routeNodeHasApproverActionRequest(String documentTypeName,
                                                 String docContent,
                                                 String nodeName)
Description copied from interface: WorkflowDocumentActionsService
Determines if a route node has an 'approve action' request

Specified by:
routeNodeHasApproverActionRequest in interface WorkflowDocumentActionsService
Parameters:
documentTypeName - document type of document
docContent - string representing content of document
nodeName - name of route node to determine if approve action request exists
Returns:
boolean value representing if a route node has an 'approve action' request

isLastApproverAtNode

public boolean isLastApproverAtNode(String documentId,
                                    String principalId,
                                    String nodeName)
Description copied from interface: WorkflowDocumentActionsService
Determines if a passed in user is the last approver at a specified route node

Specified by:
isLastApproverAtNode in interface WorkflowDocumentActionsService
Parameters:
documentId - unique Id of the document
principalId - unique Id of Principal to look for in document's route log
nodeName - name of route node to determine last approver for
Returns:
boolean value representing if a principal is the last approver at the specified route node

isUserInRouteLog

public boolean isUserInRouteLog(String documentId,
                                String principalId,
                                boolean lookFuture)
Description copied from interface: WorkflowDocumentActionsService
Determines if a passed in user exists in a document's route log or future route depending on the passed in lookFuture value

Specified by:
isUserInRouteLog in interface WorkflowDocumentActionsService
Parameters:
documentId - unique Id of document
principalId - unique Id of Principal to look for in document's route log
lookFuture - boolean value determines whether or not to look at the future route log
Returns:
boolean value representing if a principal exists in a Document's route log

isUserInRouteLogWithOptionalFlattening

public boolean isUserInRouteLogWithOptionalFlattening(String documentId,
                                                      String principalId,
                                                      boolean lookFuture,
                                                      boolean flattenNodes)
Description copied from interface: WorkflowDocumentActionsService
Determines if a passed in user exists in a document's route log or future route depending on the passed in lookFuture value and flattenNodes

Specified by:
isUserInRouteLogWithOptionalFlattening in interface WorkflowDocumentActionsService
Parameters:
documentId - unique Id of document
principalId - unique Id of Principal to look for in document's route log
lookFuture - boolean value determines whether or not to look at the future route log
Returns:
boolean value representing if a principal exists in a Document's route log

getPrincipalIdsInRouteLog

public List<String> getPrincipalIdsInRouteLog(String documentId,
                                              boolean lookFuture)
Description copied from interface: WorkflowDocumentActionsService
Returns a list of principal Ids that exist in a route log

Specified by:
getPrincipalIdsInRouteLog in interface WorkflowDocumentActionsService
Parameters:
documentId - unique id of the document to get the route log for
lookFuture - boolean value that determines if the method should look at future action requests
Returns:
list of principal ids that exist in a route log

setDocumentTypeService

public void setDocumentTypeService(DocumentTypeService documentTypeService)

executeActionInternal

protected DocumentActionResult executeActionInternal(DocumentActionParameters parameters,
                                                     WorkflowDocumentActionsServiceImpl.DocumentActionCallback callback)


Copyright © 2005-2012 The Kuali Foundation. All Rights Reserved.