/*
* Copyright (C) 2005-2010 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
package org.alfresco.repo.action;
import java.util.Set;
import org.alfresco.repo.action.evaluator.ActionConditionEvaluator;
import org.alfresco.repo.action.executer.ActionExecuter;
import org.alfresco.service.cmr.action.Action;
import org.alfresco.service.cmr.action.ParameterConstraint;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.namespace.QName;
/**
* Runtime action service. This interface contains methods useful for integration with the action
* service at a lower level.
*
* @author Roy Wetherall
*/
public interface RuntimeActionService
{
/**
* Post commit method
*/
void postCommit();
/**
* Register an action condition evaluator
*
* @param actionConditionEvaluator action condition evaluator
*/
void registerActionConditionEvaluator(ActionConditionEvaluator actionConditionEvaluator);
/**
* Register an action executer
*
* @param actionExecuter action executer
*/
void registerActionExecuter(ActionExecuter actionExecuter);
/**
* Register parameter constraint
*
* @param parameterConstraint parameter constraint
*/
void registerParameterConstraint(ParameterConstraint parameterConstraint);
/**
* Create a new action based on an action node reference
*
* @param actionNodeRef action node reference
* @return Action action object
*/
Action createAction(NodeRef actionNodeRef);
/**
* Create a action node reference
*
* @param action action object
* @param parentNodeRef parent node reference
* @param assocTypeName association type name
* @param assocName association name
* @return NodeRef created node reference
*/
NodeRef createActionNodeRef(Action action, NodeRef parentNodeRef, QName assocTypeName, QName assocName);
/**
* Save action, used internally to store the details of an action on the aciton node.
*
* @param actionNodeRef the action node reference
* @param action the action
*/
void saveActionImpl(NodeRef actionNodeRef, Action action);
/**
*
* @param action
* @param actionedUponNodeRef
* @param checkConditions
*/
public void executeActionImpl(
Action action,
NodeRef actionedUponNodeRef,
boolean checkConditions,
boolean executedAsynchronously,
Set actionChain);
/**
* Execute an action directly
*
* @param action the action
* @param actionedUponNodeRef the actioned upon node reference
*/
public void directActionExecution(Action action, NodeRef actionedUponNodeRef);
}