/** * Copyright 2005 JBoss Inc * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.drools; import org.drools.WorkingMemory; import org.drools.spi.Activation; import org.drools.spi.ActivationGroup; import org.drools.spi.AgendaGroup; import org.drools.spi.RuleFlowGroup; /** * Agenda interface for the WorkingMemory * */ public interface Agenda extends org.drools.runtime.rule.Agenda { /** * Returns the WorkignMemory for this Agenda * @return * The WorkingMemory */ public WorkingMemory getWorkingMemory(); /** * Sets the Agenda's focus to the specified AgendaGroup * @param agendaGroup * @return */ public void setFocus(String name); /** * Activates the <code>RuleFlowGroup</code> with the given name. * All activations in the given <code>RuleFlowGroup</code> are added to the agenda. * As long as the <code>RuleFlowGroup</code> remains active, * its activations are automatically added to the agenda. */ public void activateRuleFlowGroup(String name); /** * Activates the <code>RuleFlowGroup</code> with the given name. * All activations in the given <code>RuleFlowGroup</code> are added to the agenda. * As long as the <code>RuleFlowGroup</code> remains active, * its activations are automatically added to the agenda. * The given processInstanceId and nodeInstanceId define the process context * in which this <code>RuleFlowGroup</code> is used. */ public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId); /** * Deactivates the <code>RuleFlowGroup</code> with the given name. * All activations in the given <code>RuleFlowGroup</code> are removed from the agenda. * As long as the <code>RuleFlowGroup</code> remains deactive, * its activations are not added to the agenda */ public void deactivateRuleFlowGroup(String name); public AgendaGroup[] getAgendaGroups(); public AgendaGroup[] getStack(); /** * Iterates all the <code>AgendGroup<code>s in the focus stack returning the total number of <code>Activation</code>s * @return * total number of <code>Activation</code>s on the focus stack */ public int focusStackSize(); /** * Iterates all the modules in the focus stack returning the total number of <code>Activation</code>s * @return * total number of activations on the focus stack */ public int agendaSize(); public Activation[] getActivations(); public Activation[] getScheduledActivations(); /** * Clears all Activations from the Agenda * */ public void clearAndCancel(); /** * Clears all Activations from an Agenda Group. Any Activations that are also in an Xor Group are removed the * the Xor Group. * * @param agendaGroup */ public void clearAndCancelAgendaGroup(String name); /** * Clears all Activations from an Agenda Group. Any Activations that are also in an Xor Group are removed the * the Xor Group. * * @param agendaGroup */ public void clearAndCancelAgendaGroup(AgendaGroup agendaGroup); /** * Clears all Activations from an Activation-Group. Any Activations that are also in an Agenda Group are removed * from the Agenda Group. * * @param activationGroup */ public void clearAndCancelActivationGroup(String name); /** * Clears all Activations from an Activation Group. Any Activations that are also in an Agenda Group are removed * from the Agenda Group. * * @param activationGroup */ public void clearAndCancelActivationGroup(ActivationGroup activationGroup); public void clearAndCancelRuleFlowGroup(final String name); public void clearAndCancelAndCancel(final RuleFlowGroup ruleFlowGroup); /** * Returns the name of the agenda group that currently * has the focus * * @return */ public String getFocusName(); AgendaGroup getAgendaGroup(String name); ActivationGroup getActivationGroup(String name); RuleFlowGroup getRuleFlowGroup(String name); }