package jadex.rules.rulesystem;
import java.util.Collection;
import java.util.List;
/**
* The agenda interface for a rule system.
*/
public interface IAgenda
{
/**
* Fire one activated rule.
*/
public void fireRule();
/**
* Get the current activations.
* @return The activations.
*/
public Collection getActivations();
/**
* Test if the agenda is empty.
* @return True if is empty.
*/
public boolean isEmpty();
/**
* Get the state of the agenda.
* Changes whenever the activation list changes.
*/
public int getState();
//-------- debugging methods --------
/**
* The last activation. Represents the last rule that has been
* executed (or that is currently executing, if still running).
* @return null, when no rule has been executed or when fireRule
* has been called on an empty agenda.
*/
public Activation getLastActivation();
/**
* Get the next activation.
* @return The next activation.
*/
public Activation getNextActivation();
/**
* Set the next activation.
*/
public void setNextActivation(Activation next);
/**
* Get the history mode.
*/
public boolean isHistoryEnabled();
/**
* Set the history mode.
*/
public void setHistoryEnabled(boolean enabled);
/**
* Get the history.
* @return null, if history not enabled.
*/
public List getHistory();
/**
* Add an agenda listener.
*/
public void addAgendaListener(IAgendaListener listener);
/**
* Remove an agenda listener.
*/
public void removeAgendaListener(IAgendaListener listener);
}