public class DefaultAgenda extends Object implements Externalizable, InternalAgenda
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.
Modifier and Type | Field and Description |
---|---|
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 and Description |
---|
DefaultAgenda() |
DefaultAgenda(InternalRuleBase rb)
Construct.
|
DefaultAgenda(InternalRuleBase rb,
boolean initMain)
Construct.
|
Modifier and Type | Method and Description |
---|---|
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
|
int |
agendaSize()
Iterates all the modules in the focus stack returning the total number of
Activation s |
void |
cancelActivation(LeftTuple leftTuple,
PropagationContext context,
InternalWorkingMemory workingMemory,
Activation activation,
TerminalNode rtn) |
void |
clear() |
void |
clearAndCancel()
Clears all Activations from the Agenda
|
void |
clearAndCancelActivationGroup(ActivationGroup 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() |
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(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(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(AgendaFilter agendaFilter)
Keeps firing activations until a halt is called.
|
int |
focusStackSize()
Iterates all the
AgendGroup |
ActivationGroup |
getActivationGroup(String name) |
Map<String,ActivationGroup> |
getActivationGroupsMap() |
Activation[] |
getActivations() |
ActivationsFilter |
getActivationsFilter()
Returns the current activations filter or null if none is set
|
AgendaGroup |
getAgendaGroup(String name) |
AgendaGroup |
getAgendaGroup(String name,
InternalRuleBase ruleBase) |
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
|
KnowledgeHelper |
getKnowledgeHelper() |
InternalAgendaGroup |
getMainAgendaGroup() |
long |
getNextActivationCounter() |
InternalAgendaGroup |
getNextFocus() |
RuleFlowGroup |
getRuleFlowGroup(String name) |
Activation[] |
getScheduledActivations() |
LinkedList<ScheduledAgendaItem> |
getScheduledActivationsLinkedList() |
AgendaGroup[] |
getStack() |
LinkedList<AgendaGroup> |
getStackList() |
ActivationGroup |
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 |
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) |
void |
removeScheduleItem(ScheduledAgendaItem item) |
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) |
protected static transient org.slf4j.Logger log
protected InternalWorkingMemory workingMemory
protected KnowledgeHelper knowledgeHelper
protected AtomicBoolean halt
protected volatile boolean fireUntilHalt
protected int activationCounter
public DefaultAgenda()
public DefaultAgenda(InternalRuleBase rb)
rb
- The InternalRuleBase
of this agenda.public DefaultAgenda(InternalRuleBase rb, boolean initMain)
rb
- The InternalRuleBase
of this agenda.initMain
- Flag to initialize the MAIN agenda grouppublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
readExternal
in interface Externalizable
IOException
ClassNotFoundException
public void writeExternal(ObjectOutput out) throws IOException
writeExternal
in interface Externalizable
IOException
public RuleAgendaItem createRuleAgendaItem(int salience, PathMemory rs, TerminalNode rtn)
createRuleAgendaItem
in interface InternalAgenda
public 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 InternalAgenda
public void setWorkingMemory(InternalWorkingMemory workingMemory)
setWorkingMemory
in interface InternalAgenda
public WorkingMemory getWorkingMemory()
Agenda
public void addEagerRuleAgendaItem(RuleAgendaItem item)
addEagerRuleAgendaItem
in interface InternalAgenda
public void removeEagerRuleAgendaItem(RuleAgendaItem item)
removeEagerRuleAgendaItem
in interface InternalAgenda
public void scheduleItem(ScheduledAgendaItem item, InternalWorkingMemory wm)
scheduleItem
in interface InternalAgenda
public void addItemToActivationGroup(AgendaItem item)
addItemToActivationGroup
in interface InternalAgenda
item
- public ActivationGroup getStageActivationsGroup()
public void insertAndStageActivation(AgendaItem activation)
insertAndStageActivation
in interface InternalAgenda
public boolean addActivation(AgendaItem activation)
InternalAgenda
addActivation
in interface InternalAgenda
public boolean isDeclarativeAgenda()
isDeclarativeAgenda
in interface InternalAgenda
public void removeActivation(AgendaItem activation)
removeActivation
in interface InternalAgenda
public void modifyActivation(AgendaItem activation, boolean previouslyActive)
modifyActivation
in interface InternalAgenda
public void clearAndCancelStagedActivations()
public int unstageActivations()
public void addActivation(AgendaItem item, boolean notify)
public void addAgendaItemToGroup(AgendaItem item)
addAgendaItemToGroup
in interface InternalAgenda
public void removeScheduleItem(ScheduledAgendaItem item)
removeScheduleItem
in interface InternalAgenda
public 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 void cancelActivation(LeftTuple leftTuple, PropagationContext context, InternalWorkingMemory workingMemory, Activation activation, TerminalNode rtn)
cancelActivation
in interface InternalAgenda
public boolean setFocus(AgendaGroup agendaGroup)
setFocus
in interface InternalAgenda
public void setFocus(String name)
Agenda
public void setFocus(PropagationContext ctx, String name)
public AgendaGroup getFocus()
getFocus
in interface InternalAgenda
public InternalAgendaGroup getNextFocus()
getNextFocus
in interface InternalAgenda
public RuleAgendaItem peekNextRule()
peekNextRule
in interface InternalAgenda
public void setCurrentAgendaGroup(InternalAgendaGroup agendaGroup)
public AgendaGroup getCurrentAgendaGroup()
public AgendaGroup getAgendaGroup(String name)
getAgendaGroup
in interface InternalAgenda
getAgendaGroup
in interface org.kie.api.runtime.rule.Agenda
public AgendaGroup getAgendaGroup(String name, InternalRuleBase ruleBase)
getAgendaGroup
in interface InternalAgenda
public AgendaGroup[] getAgendaGroups()
public Map<String,InternalAgendaGroup> getAgendaGroupsMap()
getAgendaGroupsMap
in interface InternalAgenda
public InternalAgendaGroup getMainAgendaGroup()
public AgendaGroup[] getStack()
public LinkedList<AgendaGroup> getStackList()
getStackList
in interface InternalAgenda
public void addAgendaGroupOnStack(AgendaGroup agendaGroup)
addAgendaGroupOnStack
in interface InternalAgenda
public Map<String,ActivationGroup> getActivationGroupsMap()
getActivationGroupsMap
in interface InternalAgenda
public ActivationGroup getActivationGroup(String name)
getActivationGroup
in interface InternalAgenda
getActivationGroup
in interface org.kie.api.runtime.rule.Agenda
public RuleFlowGroup getRuleFlowGroup(String name)
getRuleFlowGroup
in interface InternalAgenda
getRuleFlowGroup
in interface org.kie.api.runtime.rule.Agenda
public void activateRuleFlowGroup(String name)
Agenda
RuleFlowGroup
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.public void activateRuleFlowGroup(String name, long processInstanceId, String nodeInstanceId)
Agenda
RuleFlowGroup
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.public void activateRuleFlowGroup(InternalRuleFlowGroup group, long processInstanceId, String nodeInstanceId)
public void deactivateRuleFlowGroup(String name)
Agenda
RuleFlowGroup
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 agendapublic void deactivateRuleFlowGroup(InternalRuleFlowGroup group)
public int focusStackSize()
Agenda
AgendGroups in the focus stack returning the total number of Activation
s
Activation
s on the focus stackpublic int agendaSize()
Agenda
Activation
spublic Activation[] getActivations()
public Activation[] getScheduledActivations()
public LinkedList<ScheduledAgendaItem> getScheduledActivationsLinkedList()
getScheduledActivationsLinkedList
in interface InternalAgenda
public void clear()
clear
in interface InternalAgenda
clear
in interface org.kie.api.runtime.rule.Agenda
public void clearAndCancel()
Agenda
public void clearAndCancelAgendaGroup(String name)
Agenda
public void clearAndCancelAgendaGroup(AgendaGroup agendaGroup)
Agenda
public void clearAndCancelActivationGroup(String name)
Agenda
public void clearAndCancelActivationGroup(ActivationGroup activationGroup)
Agenda
public void clearAndCancelRuleFlowGroup(String name)
public void clearAndCancelAndCancel(RuleFlowGroup ruleFlowGroup)
public int fireNextItem(AgendaFilter filter, int fireCount, int fireLimit) throws ConsequenceException
Agenda
item, skipping items
that are not allowed by the agenda filter.fireNextItem
in interface InternalAgenda
ConsequenceException
- If an error occurs while firing an agenda item.public void evaluateEagerList()
evaluateEagerList
in interface InternalAgenda
public int sizeOfRuleFlowGroup(String name)
sizeOfRuleFlowGroup
in interface InternalAgenda
public void fireActivation(Activation activation) throws ConsequenceException
fireActivation
in interface InternalAgenda
activation
- The activation to fireConsequenceException
- If an error occurs while attempting to fire the consequence.public boolean fireTimedActivation(Activation activation, boolean saveForLater) throws ConsequenceException
fireTimedActivation
in interface InternalAgenda
ConsequenceException
public boolean isRuleInstanceAgendaItem(String ruleflowGroupName, String ruleName, long processInstanceId)
InternalAgenda
isRuleInstanceAgendaItem
in interface InternalAgenda
public String getFocusName()
Agenda
public boolean isFireUntilHalt()
isFireUntilHalt
in interface InternalAgenda
public void stageLeftTuple(RuleAgendaItem ruleAgendaItem, AgendaItem justified)
stageLeftTuple
in interface InternalAgenda
public void fireUntilHalt()
InternalAgenda
fireUntilHalt
in interface InternalAgenda
public void fireUntilHalt(AgendaFilter agendaFilter)
InternalAgenda
fireUntilHalt
in interface InternalAgenda
agendaFilter
- filters the activations that may firepublic int fireAllRules(AgendaFilter agendaFilter, int fireLimit)
InternalAgenda
fireAllRules
in interface InternalAgenda
agendaFilter
- 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 InternalAgenda
public void notifyHalt()
notifyHalt
in interface InternalAgenda
public void halt()
InternalAgenda
halt
in interface InternalAgenda
public ConsequenceExceptionHandler getConsequenceExceptionHandler()
public void setActivationsFilter(ActivationsFilter filter)
InternalAgenda
setActivationsFilter
in interface InternalAgenda
public ActivationsFilter getActivationsFilter()
InternalAgenda
getActivationsFilter
in interface InternalAgenda
public KnowledgeHelper getKnowledgeHelper()
Copyright © 2001-2014 JBoss by Red Hat. All Rights Reserved.