001: package org.drools;
002:
003: /*
004: * Copyright 2005 JBoss Inc
005: *
006: * Licensed under the Apache License, Version 2.0 (the "License");
007: * you may not use this file except in compliance with the License.
008: * You may obtain a copy of the License at
009: *
010: * http://www.apache.org/licenses/LICENSE-2.0
011: *
012: * Unless required by applicable law or agreed to in writing, software
013: * distributed under the License is distributed on an "AS IS" BASIS,
014: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: * See the License for the specific language governing permissions and
016: * limitations under the License.
017: */
018:
019: import org.drools.spi.Activation;
020: import org.drools.spi.ActivationGroup;
021: import org.drools.spi.AgendaGroup;
022: import org.drools.spi.RuleFlowGroup;
023:
024: /**
025: * Agenda interface for the WorkingMemory
026: *
027: */
028: public interface Agenda {
029:
030: /**
031: * Returns the WorkignMemory for this Agenda
032: * @return
033: * The WorkingMemory
034: */
035: public WorkingMemory getWorkingMemory();
036:
037: /**
038: * Sets the Agenda's focus to the specified AgendaGroup
039: * @param agendaGroup
040: * @return
041: */
042: public boolean setFocus(AgendaGroup agendaGroup);
043:
044: /**
045: * Sets the Agenda's focus to the specified AgendaGroup
046: * @param agendaGroup
047: * @return
048: */
049: public void setFocus(String name);
050:
051: public AgendaGroup getFocus();
052:
053: public AgendaGroup getAgendaGroup(String name);
054:
055: public RuleFlowGroup getRuleFlowGroup(String name);
056:
057: /**
058: * Activates the <code>RuleFlowGroup</code> with the given name.
059: * All activations in the given <code>RuleFlowGroup</code> are added to the agenda.
060: * As long as the <code>RuleFlowGroup</code> remains active,
061: * its activations are automatically added to the agenda.
062: */
063: public void activateRuleFlowGroup(String name);
064:
065: /**
066: * Deactivates the <code>RuleFlowGroup</code> with the given name.
067: * All activations in the given <code>RuleFlowGroup</code> are removed from the agenda.
068: * As long as the <code>RuleFlowGroup</code> remains deactive,
069: * its activations are not added to the agenda
070: */
071: public void deactivateRuleFlowGroup(String name);
072:
073: public AgendaGroup[] getAgendaGroups();
074:
075: public AgendaGroup[] getStack();
076:
077: public ActivationGroup getActivationGroup(String name);
078:
079: /**
080: * Iterates all the <code>AgendGroup<code>s in the focus stack returning the total number of <code>Activation</code>s
081: * @return
082: * total number of <code>Activation</code>s on the focus stack
083: */
084: public int focusStackSize();
085:
086: /**
087: * Iterates all the modules in the focus stack returning the total number of <code>Activation</code>s
088: * @return
089: * total number of activations on the focus stack
090: */
091: public int agendaSize();
092:
093: public Activation[] getActivations();
094:
095: public Activation[] getScheduledActivations();
096:
097: /**
098: * Clears all Activations from the Agenda
099: *
100: */
101: public void clearAgenda();
102:
103: /**
104: * Clears all Activations from an Agenda Group. Any Activations that are also in an Xor Group are removed the
105: * the Xor Group.
106: *
107: * @param agendaGroup
108: */
109: public void clearAgendaGroup(String name);
110:
111: /**
112: * Clears all Activations from an Agenda Group. Any Activations that are also in an Xor Group are removed the
113: * the Xor Group.
114: *
115: * @param agendaGroup
116: */
117: public void clearAgendaGroup(AgendaGroup agendaGroup);
118:
119: /**
120: * Clears all Activations from an Activation-Group. Any Activations that are also in an Agenda Group are removed
121: * from the Agenda Group.
122: *
123: * @param activationGroup
124: */
125: public void clearActivationGroup(String name);
126:
127: /**
128: * Clears all Activations from an Activation Group. Any Activations that are also in an Agenda Group are removed
129: * from the Agenda Group.
130: *
131: * @param activationGroup
132: */
133: public void clearActivationGroup(ActivationGroup activationGroup);
134:
135: public void clearRuleFlowGroup(final String name);
136:
137: public void clearRuleFlowGroup(final RuleFlowGroup ruleFlowGroup);
138:
139: }
|