* If specified that the conditions should be checked then any conditions * set on the action are evaluated. *
* If the conditions fail then the action is not executed. *
* If an action has no conditions then the action will always be executed. *
* If the conditions are not checked then the action will always be executed. * * @param action the action * @param actionedUponNodeRef the actioned upon node reference * @param checkConditions indicates whether the conditions should be checked before * executing the action * @param executeAsynchronously indicates whether the action should be executed asychronously or not, this value overrides * the value set on the action its self */ @Auditable(key = Auditable.Key.ARG_1, parameters = {"action", "actionedUponNodeRef", "checkConditions", "executeAsynchronously" }) void executeAction(Action action, NodeRef actionedUponNodeRef, boolean checkConditions, boolean executeAsynchronously); /** * Evaluted the conditions set on an action. *
* Returns true if the action has no conditions. *
* If the action has more than one condition their results are combined using the 'AND' * logical operator. * * @param action the action * @param actionedUponNodeRef the actioned upon node reference * @return true if the condition succeeds, false otherwise */ @Auditable(key = Auditable.Key.ARG_1, parameters = {"action", "actionedUponNodeRef" }) boolean evaluateAction(Action action, NodeRef actionedUponNodeRef); /** * Evaluate an action condition. * * @param condition the action condition * @param actionedUponNodeRef the actioned upon node reference * @return true if the condition succeeds, false otherwise */ @Auditable(key = Auditable.Key.ARG_1, parameters = {"condition", "actionedUponNodeRef" }) boolean evaluateActionCondition(ActionCondition condition, NodeRef actionedUponNodeRef); /** * Save an action against a node reference. *
* The node will be made configurable if it is not already. *
     * If the action already exists then its details will be updated.
     * 
     * @param nodeRef    the node reference
     * @param action    the action
     */
    @Auditable(key = Auditable.Key.ARG_0, parameters = {"nodeRef", "action" })
    void saveAction(NodeRef nodeRef, Action action);
    
    /**
     * Gets all the actions currently saved on the given node reference.
     * 
     * @param nodeRef    the node reference
     * @return            the list of actions
     */
    @Auditable(key = Auditable.Key.ARG_0, parameters = {"nodeRef"})
    List 
     * Returns null if the action can not be found.
     * 
     * @param nodeRef    the node reference
     * @param actionId    the action id
     * @return            the action
     */
    @Auditable(key = Auditable.Key.ARG_0, parameters = {"nodeRef", "actionId"})
    Action getAction(NodeRef nodeRef, String actionId);
    
    /**
     * Removes an action associated with a node reference.
     * 
     * @param nodeRef        the node reference
     * @param action        the action
     */
    @Auditable(key = Auditable.Key.ARG_0, parameters = {"nodeRef", "action" })
    void removeAction(NodeRef nodeRef, Action action);
    
    /**
     * Removes all actions associated with a node reference
     * 
     * @param nodeRef    the node reference
     */
    @Auditable(key = Auditable.Key.ARG_0, parameters = {"nodeRef"})
    void removeAllActions(NodeRef nodeRef);
    
}