|
Drools :: Core 6.2.0.Final | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectorg.drools.core.common.DefaultAgenda
public class DefaultAgenda
Rule-firing Agenda.
Since many rules may be matched by a single assertObject(...) all scheduled
actions are placed into the Agenda.
While processing a scheduled action, it may update or retract objects in other scheduled actions, which must then be removed from the agenda. Non-invalidated actions are left on the agenda, and are executed in turn.
| Nested Class Summary | |
|---|---|
static class |
DefaultAgenda.DefaultGarbageCollector
|
| Field Summary | |
|---|---|
protected int |
activationCounter
|
protected boolean |
fireUntilHalt
|
protected AtomicBoolean |
halt
|
protected KnowledgeHelper |
knowledgeHelper
|
protected static org.slf4j.Logger |
log
|
protected InternalWorkingMemory |
workingMemory
Working memory of this Agenda. |
| Constructor Summary | |
|---|---|
DefaultAgenda()
|
|
DefaultAgenda(InternalKnowledgeBase kBase)
|
|
DefaultAgenda(InternalKnowledgeBase kBase,
boolean initMain)
|
|
| Method Summary | ||
|---|---|---|
void |
activateRuleFlowGroup(InternalRuleFlowGroup group,
long processInstanceId,
String nodeInstanceId)
|
|
void |
activateRuleFlowGroup(String name)
Activates the RuleFlowGroup with the given name. |
|
void |
activateRuleFlowGroup(String name,
long processInstanceId,
String nodeInstanceId)
Activates the RuleFlowGroup with the given name. |
|
boolean |
addActivation(AgendaItem activation)
Adds the activation to the agenda. |
|
void |
addActivation(AgendaItem item,
boolean notify)
|
|
void |
addAgendaGroup(AgendaGroup agendaGroup)
|
|
void |
addAgendaGroupOnStack(AgendaGroup agendaGroup)
|
|
void |
addAgendaItemToGroup(AgendaItem item)
|
|
void |
addEagerRuleAgendaItem(RuleAgendaItem item)
|
|
void |
addItemToActivationGroup(AgendaItem item)
If the item belongs to an activation group, add it |
|
void |
addQueryAgendaItem(RuleAgendaItem item)
|
|
int |
agendaSize()
Iterates all the modules in the focus stack returning the total number of Activations |
|
void |
cancelActivation(LeftTuple leftTuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
Activation activation,
TerminalNode rtn)
|
|
void |
clear()
|
|
void |
clearAndCancel()
Clears all Activations from the Agenda |
|
void |
clearAndCancelActivationGroup(InternalActivationGroup activationGroup)
Clears all Activations from an Activation Group. |
|
void |
clearAndCancelActivationGroup(String name)
Clears all Activations from an Activation-Group. |
|
void |
clearAndCancelAgendaGroup(AgendaGroup agendaGroup)
Clears all Activations from an Agenda Group. |
|
void |
clearAndCancelAgendaGroup(String name)
Clears all Activations from an Agenda Group. |
|
void |
clearAndCancelAndCancel(RuleFlowGroup ruleFlowGroup)
|
|
void |
clearAndCancelRuleFlowGroup(String name)
|
|
void |
clearAndCancelStagedActivations()
|
|
void |
clearFocusStack()
|
|
boolean |
continueFiring(int fireLimit)
|
|
boolean |
createActivation(LeftTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
TerminalNode rtn)
|
|
AgendaItem |
createAgendaItem(LeftTuple tuple,
int salience,
PropagationContext context,
TerminalNode rtn,
RuleAgendaItem ruleAgendaItem,
InternalAgendaGroup agendaGroup)
|
|
boolean |
createPostponedActivation(LeftTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
TerminalNode rtn)
|
|
RuleAgendaItem |
createRuleAgendaItem(int salience,
PathMemory rs,
TerminalNode rtn)
|
|
ScheduledAgendaItem |
createScheduledAgendaItem(LeftTuple tuple,
PropagationContext context,
TerminalNode rtn,
InternalAgendaGroup agendaGroup)
|
|
void |
deactivateRuleFlowGroup(InternalRuleFlowGroup group)
|
|
void |
deactivateRuleFlowGroup(String name)
Deactivates the RuleFlowGroup with the given name. |
|
void |
evaluateEagerList()
|
|
void |
fireActivation(Activation activation)
Fire this item. |
|
int |
fireAllRules(org.kie.api.runtime.rule.AgendaFilter agendaFilter,
int fireLimit)
Fires all activations currently in agenda that match the given agendaFilter until the fireLimit is reached or no more activations exist. |
|
int |
fireNextItem(org.kie.api.runtime.rule.AgendaFilter filter,
int fireCount,
int fireLimit)
Fire the next scheduled Agenda item, skipping items
that are not allowed by the agenda filter. |
|
boolean |
fireTimedActivation(Activation activation,
boolean saveForLater)
|
|
void |
fireUntilHalt()
Keeps firing activations until a halt is called. |
|
void |
fireUntilHalt(org.kie.api.runtime.rule.AgendaFilter agendaFilter)
Keeps firing activations until a halt is called. |
|
int |
focusStackSize()
Iterates all the AgendGroup |
|
InternalActivationGroup |
getActivationGroup(String name)
|
|
Map<String,InternalActivationGroup> |
getActivationGroupsMap()
|
|
Activation[] |
getActivations()
|
|
ActivationsFilter |
getActivationsFilter()
Returns the current activations filter or null if none is set |
|
AgendaGroup |
getAgendaGroup(String name)
|
|
AgendaGroup |
getAgendaGroup(String name,
InternalKnowledgeBase kBase)
|
|
AgendaGroup[] |
getAgendaGroups()
|
|
Map<String,InternalAgendaGroup> |
getAgendaGroupsMap()
|
|
ConsequenceExceptionHandler |
getConsequenceExceptionHandler()
|
|
AgendaGroup |
getCurrentAgendaGroup()
|
|
AgendaGroup |
getFocus()
|
|
String |
getFocusName()
Returns the name of the agenda group that currently has the focus |
|
GarbageCollector |
getGarbageCollector()
|
|
KnowledgeHelper |
getKnowledgeHelper()
|
|
InternalAgendaGroup |
getMainAgendaGroup()
|
|
long |
getNextActivationCounter()
|
|
InternalAgendaGroup |
getNextFocus()
|
|
RuleFlowGroup |
getRuleFlowGroup(String name)
|
|
Activation[] |
getScheduledActivations()
|
|
|
getScheduledActivationsLinkedList()
|
|
AgendaGroup[] |
getStack()
|
|
LinkedList<AgendaGroup> |
getStackList()
|
|
InternalActivationGroup |
getStageActivationsGroup()
|
|
WorkingMemory |
getWorkingMemory()
Returns the WorkignMemory for this Agenda |
|
void |
halt()
Stop agenda from firing any other rule. |
|
void |
insertAndStageActivation(AgendaItem activation)
|
|
boolean |
isDeclarativeAgenda()
|
|
boolean |
isFireUntilHalt()
|
|
boolean |
isRuleActiveInRuleFlowGroup(String ruleflowGroupName,
String ruleName,
long processInstanceId)
|
|
boolean |
isRuleInstanceAgendaItem(String ruleflowGroupName,
String ruleName,
long processInstanceId)
Returns true if there is at least one activation of the given rule name in the given ruleflow group name |
|
void |
modifyActivation(AgendaItem activation,
boolean previouslyActive)
|
|
void |
notifyHalt()
|
|
RuleAgendaItem |
peekNextRule()
|
|
void |
readExternal(ObjectInput in)
|
|
void |
removeActivation(AgendaItem activation)
|
|
void |
removeEagerRuleAgendaItem(RuleAgendaItem item)
|
|
boolean |
removeGroup(InternalAgendaGroup group)
|
|
InternalAgendaGroup |
removeLast()
|
|
void |
removeQueryAgendaItem(RuleAgendaItem item)
|
|
void |
removeScheduleItem(ScheduledAgendaItem item)
|
|
void |
reset()
|
|
void |
scheduleItem(ScheduledAgendaItem item,
InternalWorkingMemory wm)
|
|
void |
setActivationsFilter(ActivationsFilter filter)
Sets a filter that prevents activations from being added to the agenda. |
|
void |
setCurrentAgendaGroup(InternalAgendaGroup agendaGroup)
|
|
boolean |
setFocus(AgendaGroup agendaGroup)
|
|
void |
setFocus(PropagationContext ctx,
String name)
|
|
void |
setFocus(String name)
Sets the Agenda's focus to the specified AgendaGroup |
|
void |
setWorkingMemory(InternalWorkingMemory workingMemory)
|
|
int |
sizeOfRuleFlowGroup(String name)
|
|
void |
stageLeftTuple(RuleAgendaItem ruleAgendaItem,
AgendaItem justified)
|
|
int |
unstageActivations()
|
|
void |
writeExternal(ObjectOutput out)
|
|
| Methods inherited from class java.lang.Object |
|---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
|---|
protected static final transient org.slf4j.Logger log
protected InternalWorkingMemory workingMemory
protected KnowledgeHelper knowledgeHelper
protected AtomicBoolean halt
protected volatile boolean fireUntilHalt
protected int activationCounter
| Constructor Detail |
|---|
public DefaultAgenda()
public DefaultAgenda(InternalKnowledgeBase kBase)
public DefaultAgenda(InternalKnowledgeBase kBase,
boolean initMain)
| Method Detail |
|---|
public void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundException
readExternal in interface ExternalizableIOException
ClassNotFoundException
public void writeExternal(ObjectOutput out)
throws IOException
writeExternal in interface ExternalizableIOException
public RuleAgendaItem createRuleAgendaItem(int salience,
PathMemory rs,
TerminalNode rtn)
createRuleAgendaItem in interface InternalAgendapublic long getNextActivationCounter()
getNextActivationCounter in interface InternalAgenda
public AgendaItem createAgendaItem(LeftTuple tuple,
int salience,
PropagationContext context,
TerminalNode rtn,
RuleAgendaItem ruleAgendaItem,
InternalAgendaGroup agendaGroup)
createAgendaItem in interface InternalAgenda
public ScheduledAgendaItem createScheduledAgendaItem(LeftTuple tuple,
PropagationContext context,
TerminalNode rtn,
InternalAgendaGroup agendaGroup)
createScheduledAgendaItem in interface InternalAgendapublic void setWorkingMemory(InternalWorkingMemory workingMemory)
setWorkingMemory in interface InternalAgendapublic WorkingMemory getWorkingMemory()
InternalAgenda
getWorkingMemory in interface InternalAgendapublic void addEagerRuleAgendaItem(RuleAgendaItem item)
addEagerRuleAgendaItem in interface InternalAgendapublic void removeEagerRuleAgendaItem(RuleAgendaItem item)
removeEagerRuleAgendaItem in interface InternalAgendapublic void addQueryAgendaItem(RuleAgendaItem item)
addQueryAgendaItem in interface InternalAgendapublic void removeQueryAgendaItem(RuleAgendaItem item)
removeQueryAgendaItem in interface InternalAgenda
public void scheduleItem(ScheduledAgendaItem item,
InternalWorkingMemory wm)
scheduleItem in interface InternalAgendapublic void addItemToActivationGroup(AgendaItem item)
addItemToActivationGroup in interface InternalAgendaitem - public InternalActivationGroup getStageActivationsGroup()
public void insertAndStageActivation(AgendaItem activation)
insertAndStageActivation in interface InternalAgendapublic boolean addActivation(AgendaItem activation)
InternalAgenda
addActivation in interface InternalAgendapublic boolean isDeclarativeAgenda()
isDeclarativeAgenda in interface InternalAgendapublic void removeActivation(AgendaItem activation)
removeActivation in interface InternalAgenda
public void modifyActivation(AgendaItem activation,
boolean previouslyActive)
modifyActivation in interface InternalAgendapublic void clearAndCancelStagedActivations()
public int unstageActivations()
unstageActivations in interface InternalAgenda
public void addActivation(AgendaItem item,
boolean notify)
public void addAgendaItemToGroup(AgendaItem item)
addAgendaItemToGroup in interface InternalAgendapublic void removeScheduleItem(ScheduledAgendaItem item)
removeScheduleItem in interface InternalAgendapublic void addAgendaGroup(AgendaGroup agendaGroup)
addAgendaGroup in interface InternalAgenda
public boolean createActivation(LeftTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
TerminalNode rtn)
createActivation in interface InternalAgenda
public boolean createPostponedActivation(LeftTuple tuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
TerminalNode rtn)
createPostponedActivation in interface InternalAgenda
public boolean isRuleActiveInRuleFlowGroup(String ruleflowGroupName,
String ruleName,
long processInstanceId)
isRuleActiveInRuleFlowGroup in interface InternalAgenda
public void cancelActivation(LeftTuple leftTuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
Activation activation,
TerminalNode rtn)
cancelActivation in interface InternalAgendapublic boolean setFocus(AgendaGroup agendaGroup)
setFocus in interface InternalAgendapublic void setFocus(String name)
InternalAgenda
setFocus in interface InternalAgenda
public void setFocus(PropagationContext ctx,
String name)
public AgendaGroup getFocus()
getFocus in interface InternalAgendapublic InternalAgendaGroup getNextFocus()
getNextFocus in interface InternalAgendapublic InternalAgendaGroup removeLast()
public boolean removeGroup(InternalAgendaGroup group)
public void clearFocusStack()
public RuleAgendaItem peekNextRule()
peekNextRule in interface InternalAgendapublic void setCurrentAgendaGroup(InternalAgendaGroup agendaGroup)
public AgendaGroup getCurrentAgendaGroup()
public AgendaGroup getAgendaGroup(String name)
getAgendaGroup in interface InternalAgendagetAgendaGroup in interface org.kie.api.runtime.rule.Agenda
public AgendaGroup getAgendaGroup(String name,
InternalKnowledgeBase kBase)
getAgendaGroup in interface InternalAgendapublic AgendaGroup[] getAgendaGroups()
getAgendaGroups in interface InternalAgendapublic Map<String,InternalAgendaGroup> getAgendaGroupsMap()
getAgendaGroupsMap in interface InternalAgendapublic InternalAgendaGroup getMainAgendaGroup()
public AgendaGroup[] getStack()
getStack in interface InternalAgendapublic LinkedList<AgendaGroup> getStackList()
getStackList in interface InternalAgendapublic void addAgendaGroupOnStack(AgendaGroup agendaGroup)
addAgendaGroupOnStack in interface InternalAgendapublic Map<String,InternalActivationGroup> getActivationGroupsMap()
getActivationGroupsMap in interface InternalAgendapublic InternalActivationGroup getActivationGroup(String name)
getActivationGroup in interface InternalAgendagetActivationGroup in interface org.kie.api.runtime.rule.Agendapublic RuleFlowGroup getRuleFlowGroup(String name)
getRuleFlowGroup in interface InternalAgendagetRuleFlowGroup in interface org.kie.api.runtime.rule.Agendapublic void activateRuleFlowGroup(String name)
InternalAgendaRuleFlowGroup with the given name.
All activations in the given RuleFlowGroup are added to the agenda.
As long as the RuleFlowGroup remains active,
its activations are automatically added to the agenda.
activateRuleFlowGroup in interface InternalAgenda
public void activateRuleFlowGroup(String name,
long processInstanceId,
String nodeInstanceId)
InternalAgendaRuleFlowGroup with the given name.
All activations in the given RuleFlowGroup are added to the agenda.
As long as the RuleFlowGroup remains active,
its activations are automatically added to the agenda.
The given processInstanceId and nodeInstanceId define the process context
in which this RuleFlowGroup is used.
activateRuleFlowGroup in interface InternalAgenda
public void activateRuleFlowGroup(InternalRuleFlowGroup group,
long processInstanceId,
String nodeInstanceId)
public void deactivateRuleFlowGroup(String name)
InternalAgendaRuleFlowGroup with the given name.
All activations in the given RuleFlowGroup are removed from the agenda.
As long as the RuleFlowGroup remains deactive,
its activations are not added to the agenda
deactivateRuleFlowGroup in interface InternalAgendapublic void deactivateRuleFlowGroup(InternalRuleFlowGroup group)
public int focusStackSize()
InternalAgendaAgendGroups in the focus stack returning the total number of Activations
- Specified by:
focusStackSize in interface InternalAgenda
- Returns:
- total number of
Activations on the focus stack
public int agendaSize()
InternalAgendaActivations
agendaSize in interface InternalAgendapublic Activation[] getActivations()
getActivations in interface InternalAgendapublic Activation[] getScheduledActivations()
getScheduledActivations in interface InternalAgendapublic <M extends ModedAssertion<M>> LinkedList<ScheduledAgendaItem<M>> getScheduledActivationsLinkedList()
getScheduledActivationsLinkedList in interface InternalAgendapublic void clear()
clear in interface org.kie.api.runtime.rule.Agendapublic void reset()
public void clearAndCancel()
InternalAgenda
clearAndCancel in interface InternalAgendapublic void clearAndCancelAgendaGroup(String name)
InternalAgenda
clearAndCancelAgendaGroup in interface InternalAgendapublic void clearAndCancelAgendaGroup(AgendaGroup agendaGroup)
InternalAgenda
clearAndCancelAgendaGroup in interface InternalAgendapublic void clearAndCancelActivationGroup(String name)
InternalAgenda
clearAndCancelActivationGroup in interface InternalAgendapublic void clearAndCancelActivationGroup(InternalActivationGroup activationGroup)
InternalAgenda
clearAndCancelActivationGroup in interface InternalAgendapublic void clearAndCancelRuleFlowGroup(String name)
clearAndCancelRuleFlowGroup in interface InternalAgendapublic void clearAndCancelAndCancel(RuleFlowGroup ruleFlowGroup)
clearAndCancelAndCancel in interface InternalAgenda
public int fireNextItem(org.kie.api.runtime.rule.AgendaFilter filter,
int fireCount,
int fireLimit)
throws ConsequenceException
Agenda item, skipping items
that are not allowed by the agenda filter.
fireNextItem in interface InternalAgendaConsequenceException - If an error occurs while firing an agenda item.public void evaluateEagerList()
evaluateEagerList in interface InternalAgendapublic int sizeOfRuleFlowGroup(String name)
sizeOfRuleFlowGroup in interface InternalAgenda
public void fireActivation(Activation activation)
throws ConsequenceException
fireActivation in interface InternalAgendaactivation - The activation to fire
ConsequenceException - If an error occurs while attempting to fire the consequence.
public boolean fireTimedActivation(Activation activation,
boolean saveForLater)
throws ConsequenceException
fireTimedActivation in interface InternalAgendaConsequenceException
public boolean isRuleInstanceAgendaItem(String ruleflowGroupName,
String ruleName,
long processInstanceId)
InternalAgenda
isRuleInstanceAgendaItem in interface InternalAgendapublic String getFocusName()
InternalAgenda
getFocusName in interface InternalAgendapublic boolean isFireUntilHalt()
isFireUntilHalt in interface InternalAgenda
public void stageLeftTuple(RuleAgendaItem ruleAgendaItem,
AgendaItem justified)
stageLeftTuple in interface InternalAgendapublic void fireUntilHalt()
InternalAgenda
fireUntilHalt in interface InternalAgendapublic void fireUntilHalt(org.kie.api.runtime.rule.AgendaFilter agendaFilter)
InternalAgenda
fireUntilHalt in interface InternalAgendaagendaFilter - filters the activations that may fire
public int fireAllRules(org.kie.api.runtime.rule.AgendaFilter agendaFilter,
int fireLimit)
InternalAgenda
fireAllRules in interface InternalAgendaagendaFilter - the filter on which activations may fire.fireLimit - the maximum number of activations that may fire. If -1, then it will
fire until no more activations exist.
public boolean continueFiring(int fireLimit)
continueFiring in interface InternalAgendapublic void notifyHalt()
notifyHalt in interface InternalAgendapublic void halt()
InternalAgenda
halt in interface InternalAgendapublic ConsequenceExceptionHandler getConsequenceExceptionHandler()
public void setActivationsFilter(ActivationsFilter filter)
InternalAgenda
setActivationsFilter in interface InternalAgendapublic ActivationsFilter getActivationsFilter()
InternalAgenda
getActivationsFilter in interface InternalAgendapublic KnowledgeHelper getKnowledgeHelper()
public GarbageCollector getGarbageCollector()
getGarbageCollector in interface InternalAgenda
|
Drools :: Core 6.2.0.Final | |||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||