org.kuali.rice.kew.actions
Class ActionTakenEvent

java.lang.Object
  extended by org.kuali.rice.kew.actions.ActionTakenEvent
Direct Known Subclasses:
AcknowledgeAction, AdHocAction, ApproveAction, BlanketApproveAction, CancelAction, ClearFYIAction, CompleteAction, DisapproveAction, LogDocumentActionAction, MoveDocumentAction, ReleaseWorkgroupAuthority, ReturnToPreviousNodeAction, RevokeAdHocAction, RouteDocumentAction, SaveActionEvent, SuperUserActionRequestApproveEvent, SuperUserApproveEvent, SuperUserCancelEvent, SuperUserDisapproveEvent, SuperUserNodeApproveEvent, SuperUserReturnToPreviousNodeAction, TakeWorkgroupAuthority

public abstract class ActionTakenEvent
extends Object

Super class containing mostly often used methods by all actions. Holds common state as well, DocumentRouteHeaderValue document, ActionTakenValue action taken (once saved), PrincipalContract principal that has taken the action

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

Field Summary
protected  String annotation
           
protected static String DEFAULT_ANNOTATION
          Default annotation - none.
protected static boolean DEFAULT_QUEUE_DOCUMENT_AFTER_ACTION
          Default value for queueing document after the action is recorded
protected static boolean DEFAULT_RUN_POSTPROCESSOR_LOGIC
          Default value for running postprocessor logic after the action is recorded.
protected  DocumentRouteHeaderValue routeHeader
          This is in spirit immutable, however for expediency it is mutable as at least one action (ReturnToPreviousNodeAction) attempts to reload the route header after every pp notification.
 
Constructor Summary
ActionTakenEvent(String actionTakenCode, DocumentRouteHeaderValue routeHeader, PrincipalContract principal)
           
ActionTakenEvent(String actionTakenCode, DocumentRouteHeaderValue routeHeader, PrincipalContract principal, String annotation)
           
ActionTakenEvent(String actionTakenCode, DocumentRouteHeaderValue routeHeader, PrincipalContract principal, String annotation, boolean runPostProcessorLogic)
           
ActionTakenEvent(String actionTakenCode, DocumentRouteHeaderValue routeHeader, PrincipalContract principal, String annotation, boolean runPostProcessorLogic, boolean queueDocumentAfterAction)
           
 
Method Summary
protected  List<ActionRequestValue> filterActionRequestsByCode(List<ActionRequestValue> actionRequests, String requestCode)
          Filters action requests based on if they occur after the given requestCode, and if they relate to this event's principal
protected  Recipient findDelegatorForActionRequests(List actionRequests)
          Returns the highest priority delegator in the list of action requests.
protected  void generateAcknowledgementsToPreviousActionTakers(RouteNodeInstance notificationNodeInstance)
          Utility for generating Acknowledgements to previous document action takers.
protected  String getActionPerformedCode()
          Code of the action performed by the user Method may be overriden is action performed will be different than action taken
 ActionRequestService getActionRequestService()
           
 String getActionTakenCode()
           
protected  String getDocumentId()
           
protected  List<String> getGroupIdsForPrincipal()
           
protected  PrincipalContract getPrincipal()
           
protected  DocumentRouteHeaderValue getRouteHeader()
           
protected  void invokePostProcessor(String message, Callable<ProcessDocReport> invocation)
          Wraps PostProcessor invocation with error handling
protected  boolean isActionCompatibleRequest(List<ActionRequestValue> requests)
           
protected  boolean isActionValid()
          Validates whether or not this action is valid for the given principal and DocumentRouteHeaderValue.
protected static boolean isPolicySet(DocumentType docType, DocumentTypePolicy policy)
          Determines whether a specific policy is set on the document type.
protected static boolean isPolicySet(DocumentType docType, DocumentTypePolicy policy, boolean deflt)
          Determines whether a specific policy is set on the document type.
protected  boolean isRunPostProcessorLogic()
           
protected  void notifyActionTaken(ActionTakenValue actionTaken)
           
protected  void notifyAfterActionTaken(ActionTakenValue actionTaken)
           
protected  void notifyStatusChange(String newStatusCode, String oldStatusCode)
           
 void performAction()
           
protected  void queueDocumentProcessing()
          Asynchronously queues the documented to be processed by the workflow engine.
protected abstract  void recordAction()
           
protected  ActionTakenValue saveActionTaken()
           
protected  ActionTakenValue saveActionTaken(Boolean currentInd)
           
protected  ActionTakenValue saveActionTaken(Boolean currentInd, Recipient delegator)
           
protected  ActionTakenValue saveActionTaken(Recipient delegator)
           
protected  void setActionTakenCode(String string)
           
protected  void setRouteHeader(DocumentRouteHeaderValue routeHeader)
           
protected  void updateSearchableAttributesIfPossible()
           
abstract  String validateActionRules()
          Placeholder for validation rules for each action
protected abstract  String validateActionRules(List<ActionRequestValue> actionRequests)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

DEFAULT_QUEUE_DOCUMENT_AFTER_ACTION

protected static final boolean DEFAULT_QUEUE_DOCUMENT_AFTER_ACTION
Default value for queueing document after the action is recorded

See Also:
Constant Field Values

DEFAULT_RUN_POSTPROCESSOR_LOGIC

protected static final boolean DEFAULT_RUN_POSTPROCESSOR_LOGIC
Default value for running postprocessor logic after the action is recorded. Inspected when queueing document processing and notifying postprocessors of action taken and doc status change

See Also:
Constant Field Values

DEFAULT_ANNOTATION

protected static final String DEFAULT_ANNOTATION
Default annotation - none.


annotation

protected final String annotation

routeHeader

protected DocumentRouteHeaderValue routeHeader
This is in spirit immutable, however for expediency it is mutable as at least one action (ReturnToPreviousNodeAction) attempts to reload the route header after every pp notification.

Constructor Detail

ActionTakenEvent

public ActionTakenEvent(String actionTakenCode,
                        DocumentRouteHeaderValue routeHeader,
                        PrincipalContract principal)

ActionTakenEvent

public ActionTakenEvent(String actionTakenCode,
                        DocumentRouteHeaderValue routeHeader,
                        PrincipalContract principal,
                        String annotation)

ActionTakenEvent

public ActionTakenEvent(String actionTakenCode,
                        DocumentRouteHeaderValue routeHeader,
                        PrincipalContract principal,
                        String annotation,
                        boolean runPostProcessorLogic)

ActionTakenEvent

public ActionTakenEvent(String actionTakenCode,
                        DocumentRouteHeaderValue routeHeader,
                        PrincipalContract principal,
                        String annotation,
                        boolean runPostProcessorLogic,
                        boolean queueDocumentAfterAction)
Method Detail

getActionRequestService

public ActionRequestService getActionRequestService()

getRouteHeader

protected DocumentRouteHeaderValue getRouteHeader()

setRouteHeader

protected void setRouteHeader(DocumentRouteHeaderValue routeHeader)

getPrincipal

protected PrincipalContract getPrincipal()

getActionPerformedCode

protected String getActionPerformedCode()
Code of the action performed by the user Method may be overriden is action performed will be different than action taken

Returns:

isActionValid

protected boolean isActionValid()
Validates whether or not this action is valid for the given principal and DocumentRouteHeaderValue.


isPolicySet

protected static boolean isPolicySet(DocumentType docType,
                                     DocumentTypePolicy policy,
                                     boolean deflt)
Determines whether a specific policy is set on the document type.

Parameters:
docType - the document type
policy - the DocumentTypePolicy
deflt - the default value if the policy is not present
Returns:
the policy value or deflt if missing

isPolicySet

protected static boolean isPolicySet(DocumentType docType,
                                     DocumentTypePolicy policy)
Determines whether a specific policy is set on the document type.

Parameters:
docType - the document type
policy - the DocumentTypePolicy
Returns:
the policy value or false if missing

validateActionRules

public abstract String validateActionRules()
Placeholder for validation rules for each action

Returns:
error message string of specific error message

validateActionRules

protected abstract String validateActionRules(List<ActionRequestValue> actionRequests)

filterActionRequestsByCode

protected List<ActionRequestValue> filterActionRequestsByCode(List<ActionRequestValue> actionRequests,
                                                              String requestCode)
Filters action requests based on if they occur after the given requestCode, and if they relate to this event's principal

Parameters:
actionRequests - the List of ActionRequestValues to filter
requestCode - the request code for all ActionRequestValues to be after
Returns:
the filtered List of ActionRequestValues

isActionCompatibleRequest

protected boolean isActionCompatibleRequest(List<ActionRequestValue> requests)

performAction

public void performAction()
                   throws InvalidActionTakenException
Throws:
InvalidActionTakenException

recordAction

protected abstract void recordAction()
                              throws InvalidActionTakenException
Throws:
InvalidActionTakenException

updateSearchableAttributesIfPossible

protected void updateSearchableAttributesIfPossible()

invokePostProcessor

protected void invokePostProcessor(String message,
                                   Callable<ProcessDocReport> invocation)
Wraps PostProcessor invocation with error handling

Parameters:
message - log message
invocation - the callable that invokes the postprocessor

notifyActionTaken

protected void notifyActionTaken(ActionTakenValue actionTaken)

notifyAfterActionTaken

protected void notifyAfterActionTaken(ActionTakenValue actionTaken)

notifyStatusChange

protected void notifyStatusChange(String newStatusCode,
                                  String oldStatusCode)
                           throws InvalidActionTakenException
Throws:
InvalidActionTakenException

queueDocumentProcessing

protected void queueDocumentProcessing()
Asynchronously queues the documented to be processed by the workflow engine.


saveActionTaken

protected ActionTakenValue saveActionTaken()

saveActionTaken

protected ActionTakenValue saveActionTaken(Boolean currentInd)

saveActionTaken

protected ActionTakenValue saveActionTaken(Recipient delegator)

saveActionTaken

protected ActionTakenValue saveActionTaken(Boolean currentInd,
                                           Recipient delegator)

findDelegatorForActionRequests

protected Recipient findDelegatorForActionRequests(List actionRequests)
Returns the highest priority delegator in the list of action requests.


getActionTakenCode

public String getActionTakenCode()

setActionTakenCode

protected void setActionTakenCode(String string)

getDocumentId

protected String getDocumentId()

isRunPostProcessorLogic

protected boolean isRunPostProcessorLogic()

getGroupIdsForPrincipal

protected List<String> getGroupIdsForPrincipal()

generateAcknowledgementsToPreviousActionTakers

protected void generateAcknowledgementsToPreviousActionTakers(RouteNodeInstance notificationNodeInstance)
Utility for generating Acknowledgements to previous document action takers. Note that in constrast with other notification-generation methods (such as those in ActionRequestFactory) this method determines its recipient list from ActionTakenValues, not from outstanding ActionRequests.

Parameters:
notificationNodeInstance - the node instance with which generated actionrequests will be associated
See Also:
ActionRequestFactory.generateNotifications(java.util.List, org.kuali.rice.kim.api.identity.principal.PrincipalContract, org.kuali.rice.kew.actionrequest.Recipient, String, String), ActionRequestFactory.generateNotifications(org.kuali.rice.kew.actionrequest.ActionRequestValue, java.util.List, org.kuali.rice.kim.api.identity.principal.PrincipalContract, org.kuali.rice.kew.actionrequest.Recipient, String, String, org.kuali.rice.kim.api.group.Group)


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