+ * 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 + */ + void executeAction(String ticket, 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 + */ + boolean evaluateAction(String ticket, 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 + */ + boolean evaluateActionCondition(String ticket, 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
+ */
+ void saveAction(String ticket, 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
+ */
+ List
+ * Returns null if the action can not be found.
+ *
+ * @param nodeRef the node reference
+ * @param actionId the action id
+ * @return the action
+ */
+ Action getAction(String ticket, NodeRef nodeRef, String actionId);
+
+ /**
+ * Removes an action associated with a node reference.
+ *
+ * @param nodeRef the node reference
+ * @param action the action
+ */
+ void removeAction(String ticket, NodeRef nodeRef, Action action);
+
+ /**
+ * Removes all actions associated with a node reference
+ *
+ * @param nodeRef the node reference
+ */
+ void removeAllActions(String ticket, NodeRef nodeRef);
+}