Class DefaultAgenda

  • All Implemented Interfaces:
    Externalizable, Serializable, org.drools.core.common.ActivationsManager, org.drools.core.common.InternalAgenda, org.kie.api.runtime.rule.Agenda
    Direct Known Subclasses:
    PartitionedDefaultAgenda

    public class DefaultAgenda
    extends Object
    implements Externalizable, org.drools.core.common.InternalAgenda
    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.

    See Also:
    Serialized Form
    • Field Detail

      • log

        protected static final transient org.slf4j.Logger log
      • workingMemory

        protected org.drools.core.common.InternalWorkingMemory workingMemory
        Working memory of this Agenda.
      • activationCounter

        protected int activationCounter
    • Constructor Detail

      • DefaultAgenda

        public DefaultAgenda()
      • DefaultAgenda

        public DefaultAgenda​(org.drools.core.impl.RuleBase kBase)
      • DefaultAgenda

        public DefaultAgenda​(org.drools.core.impl.RuleBase kBase,
                             boolean initMain)
    • Method Detail

      • createRuleAgendaItem

        public org.drools.core.phreak.RuleAgendaItem createRuleAgendaItem​(int salience,
                                                                          org.drools.core.reteoo.PathMemory rs,
                                                                          org.drools.core.reteoo.TerminalNode rtn)
        Specified by:
        createRuleAgendaItem in interface org.drools.core.common.ActivationsManager
      • createAgendaItem

        public org.drools.core.common.AgendaItem createAgendaItem​(org.drools.core.reteoo.RuleTerminalNodeLeftTuple rtnLeftTuple,
                                                                  int salience,
                                                                  org.drools.core.common.PropagationContext context,
                                                                  org.drools.core.phreak.RuleAgendaItem ruleAgendaItem,
                                                                  org.drools.core.common.InternalAgendaGroup agendaGroup)
        Specified by:
        createAgendaItem in interface org.drools.core.common.ActivationsManager
      • setWorkingMemory

        public void setWorkingMemory​(org.drools.core.common.InternalWorkingMemory workingMemory)
        Specified by:
        setWorkingMemory in interface org.drools.core.common.InternalAgenda
      • getPropagationList

        public org.drools.core.phreak.PropagationList getPropagationList()
      • getWorkingMemory

        public org.drools.core.common.InternalWorkingMemory getWorkingMemory()
        Specified by:
        getWorkingMemory in interface org.drools.core.common.InternalAgenda
      • addEagerRuleAgendaItem

        public void addEagerRuleAgendaItem​(org.drools.core.phreak.RuleAgendaItem item)
        Specified by:
        addEagerRuleAgendaItem in interface org.drools.core.common.ActivationsManager
      • removeEagerRuleAgendaItem

        public void removeEagerRuleAgendaItem​(org.drools.core.phreak.RuleAgendaItem item)
        Specified by:
        removeEagerRuleAgendaItem in interface org.drools.core.common.ActivationsManager
      • addQueryAgendaItem

        public void addQueryAgendaItem​(org.drools.core.phreak.RuleAgendaItem item)
        Specified by:
        addQueryAgendaItem in interface org.drools.core.common.ActivationsManager
      • removeQueryAgendaItem

        public void removeQueryAgendaItem​(org.drools.core.phreak.RuleAgendaItem item)
        Specified by:
        removeQueryAgendaItem in interface org.drools.core.common.ActivationsManager
      • addItemToActivationGroup

        public void addItemToActivationGroup​(org.drools.core.common.AgendaItem activation)
        Specified by:
        addItemToActivationGroup in interface org.drools.core.common.ActivationsManager
      • peekNextRule

        public org.drools.core.phreak.RuleAgendaItem peekNextRule()
        Specified by:
        peekNextRule in interface org.drools.core.common.ActivationsManager
      • isDeclarativeAgenda

        public boolean isDeclarativeAgenda()
        Specified by:
        isDeclarativeAgenda in interface org.drools.core.common.InternalAgenda
      • isRuleActiveInRuleFlowGroup

        public boolean isRuleActiveInRuleFlowGroup​(String ruleflowGroupName,
                                                   String ruleName,
                                                   String processInstanceId)
        Specified by:
        isRuleActiveInRuleFlowGroup in interface org.drools.core.common.InternalAgenda
      • cancelActivation

        public void cancelActivation​(org.drools.core.rule.consequence.Activation activation)
        Specified by:
        cancelActivation in interface org.drools.core.common.ActivationsManager
      • setFocus

        public void setFocus​(String name)
        Specified by:
        setFocus in interface org.drools.core.common.InternalAgenda
      • setFocus

        public void setFocus​(org.drools.core.common.PropagationContext ctx,
                             String name)
      • getReteEvaluator

        public org.drools.core.common.ReteEvaluator getReteEvaluator()
        Specified by:
        getReteEvaluator in interface org.drools.core.common.ActivationsManager
      • getAgendaGroupsManager

        public org.drools.core.common.AgendaGroupsManager getAgendaGroupsManager()
        Specified by:
        getAgendaGroupsManager in interface org.drools.core.common.ActivationsManager
      • getAgendaEventSupport

        public org.drools.core.event.AgendaEventSupport getAgendaEventSupport()
        Specified by:
        getAgendaEventSupport in interface org.drools.core.common.ActivationsManager
      • getActivationGroupsMap

        public Map<String,​org.drools.core.common.InternalActivationGroup> getActivationGroupsMap()
        Specified by:
        getActivationGroupsMap in interface org.drools.core.common.InternalAgenda
      • getActivationGroup

        public org.drools.core.common.InternalActivationGroup getActivationGroup​(String name)
        Specified by:
        getActivationGroup in interface org.kie.api.runtime.rule.Agenda
      • getRuleFlowGroup

        public org.drools.core.common.RuleFlowGroup getRuleFlowGroup​(String name)
        Specified by:
        getRuleFlowGroup in interface org.kie.api.runtime.rule.Agenda
      • activateRuleFlowGroup

        public void activateRuleFlowGroup​(String name)
        Specified by:
        activateRuleFlowGroup in interface org.drools.core.common.InternalAgenda
      • activateRuleFlowGroup

        public void activateRuleFlowGroup​(String name,
                                          String processInstanceId,
                                          String nodeInstanceId)
        Specified by:
        activateRuleFlowGroup in interface org.drools.core.common.InternalAgenda
      • activateRuleFlowGroup

        public void activateRuleFlowGroup​(org.drools.core.common.InternalRuleFlowGroup group,
                                          Object processInstanceId,
                                          String nodeInstanceId)
      • clear

        public void clear()
        Specified by:
        clear in interface org.kie.api.runtime.rule.Agenda
      • getAgendaGroup

        public org.kie.api.runtime.rule.AgendaGroup getAgendaGroup​(String name)
        Specified by:
        getAgendaGroup in interface org.kie.api.runtime.rule.Agenda
      • reset

        public void reset()
        Specified by:
        reset in interface org.drools.core.common.InternalAgenda
      • clearAndCancel

        public void clearAndCancel()
        Specified by:
        clearAndCancel in interface org.drools.core.common.InternalAgenda
      • clearAndCancelAgendaGroup

        public void clearAndCancelAgendaGroup​(String name)
        Specified by:
        clearAndCancelAgendaGroup in interface org.drools.core.common.InternalAgenda
      • clearAndCancelActivationGroup

        public void clearAndCancelActivationGroup​(String name)
        Specified by:
        clearAndCancelActivationGroup in interface org.drools.core.common.ActivationsManager
        Specified by:
        clearAndCancelActivationGroup in interface org.drools.core.common.InternalAgenda
      • clearAndCancelActivationGroup

        public void clearAndCancelActivationGroup​(org.drools.core.common.InternalActivationGroup activationGroup)
        Specified by:
        clearAndCancelActivationGroup in interface org.drools.core.common.ActivationsManager
      • clearAndCancelRuleFlowGroup

        public void clearAndCancelRuleFlowGroup​(String name)
        Specified by:
        clearAndCancelRuleFlowGroup in interface org.drools.core.common.InternalAgenda
      • fireNextItem

        public 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.
        Specified by:
        fireNextItem in interface org.drools.core.common.InternalAgenda
        Returns:
        true if an activation was fired. false if no more activations to fire
        Throws:
        org.drools.core.rule.consequence.ConsequenceException - If an error occurs while firing an agenda item.
      • evaluateEagerList

        public void evaluateEagerList()
        Specified by:
        evaluateEagerList in interface org.drools.core.common.ActivationsManager
      • evaluateQueriesForRule

        public void evaluateQueriesForRule​(org.drools.core.phreak.RuleAgendaItem item)
        Specified by:
        evaluateQueriesForRule in interface org.drools.core.common.ActivationsManager
      • sizeOfRuleFlowGroup

        public int sizeOfRuleFlowGroup​(String name)
        Specified by:
        sizeOfRuleFlowGroup in interface org.drools.core.common.InternalAgenda
      • isRuleInstanceAgendaItem

        public boolean isRuleInstanceAgendaItem​(String ruleflowGroupName,
                                                String ruleName,
                                                String processInstanceId)
        Specified by:
        isRuleInstanceAgendaItem in interface org.drools.core.common.InternalAgenda
      • sameProcessInstance

        protected boolean sameProcessInstance​(String processInstanceId,
                                              org.kie.api.runtime.process.ProcessInstance value)
      • getFocusName

        public String getFocusName()
        Specified by:
        getFocusName in interface org.drools.core.common.InternalAgenda
      • fireUntilHalt

        public void fireUntilHalt()
        Specified by:
        fireUntilHalt in interface org.drools.core.common.InternalAgenda
      • fireUntilHalt

        public void fireUntilHalt​(org.kie.api.runtime.rule.AgendaFilter agendaFilter)
        Specified by:
        fireUntilHalt in interface org.drools.core.common.InternalAgenda
      • fireAllRules

        public int fireAllRules​(org.kie.api.runtime.rule.AgendaFilter agendaFilter,
                                int fireLimit)
        Specified by:
        fireAllRules in interface org.drools.core.common.ActivationsManager
        Specified by:
        fireAllRules in interface org.drools.core.common.InternalAgenda
      • isFiring

        public boolean isFiring()
        Specified by:
        isFiring in interface org.drools.core.common.ActivationsManager
      • executeTask

        public void executeTask​(org.drools.core.phreak.ExecutableEntry executable)
        Specified by:
        executeTask in interface org.drools.core.common.ActivationsManager
      • executeFlush

        public void executeFlush()
        Specified by:
        executeFlush in interface org.drools.core.common.InternalAgenda
      • activate

        public void activate()
        Specified by:
        activate in interface org.drools.core.common.InternalAgenda
      • deactivate

        public void deactivate()
        Specified by:
        deactivate in interface org.drools.core.common.InternalAgenda
      • tryDeactivate

        public boolean tryDeactivate()
        Specified by:
        tryDeactivate in interface org.drools.core.common.InternalAgenda
      • halt

        public void halt()
        Specified by:
        halt in interface org.drools.core.common.InternalAgenda
      • dispose

        public boolean dispose​(org.drools.core.common.InternalWorkingMemory wm)
        Specified by:
        dispose in interface org.drools.core.common.InternalAgenda
      • isAlive

        public boolean isAlive()
        Specified by:
        isAlive in interface org.drools.core.common.InternalAgenda
      • internalHalt

        public void internalHalt()
      • setActivationsFilter

        public void setActivationsFilter​(org.drools.core.common.ActivationsFilter filter)
        Specified by:
        setActivationsFilter in interface org.drools.core.common.InternalAgenda
      • getActivationsFilter

        public org.drools.core.common.ActivationsFilter getActivationsFilter()
        Specified by:
        getActivationsFilter in interface org.drools.core.common.ActivationsManager
      • handleException

        public void handleException​(org.drools.core.rule.consequence.Activation activation,
                                    Exception e)
        Specified by:
        handleException in interface org.drools.core.common.ActivationsManager
      • getKnowledgeHelper

        public org.drools.core.rule.consequence.KnowledgeHelper getKnowledgeHelper()
        Specified by:
        getKnowledgeHelper in interface org.drools.core.common.ActivationsManager
      • addPropagation

        public void addPropagation​(org.drools.core.phreak.PropagationEntry propagationEntry)
        Specified by:
        addPropagation in interface org.drools.core.common.ActivationsManager
      • flushPropagations

        public void flushPropagations()
        Specified by:
        flushPropagations in interface org.drools.core.common.ActivationsManager
      • notifyWaitOnRest

        public void notifyWaitOnRest()
        Specified by:
        notifyWaitOnRest in interface org.drools.core.common.InternalAgenda
      • getActionsIterator

        public Iterator<org.drools.core.phreak.PropagationEntry> getActionsIterator()
        Specified by:
        getActionsIterator in interface org.drools.core.common.InternalAgenda
      • hasPendingPropagations

        public boolean hasPendingPropagations()
        Specified by:
        hasPendingPropagations in interface org.drools.core.common.InternalAgenda
      • registerExpiration

        public void registerExpiration​(org.drools.core.common.PropagationContext ectx)
        Specified by:
        registerExpiration in interface org.drools.core.common.ActivationsManager
      • doRetract

        protected void doRetract​(org.drools.core.common.PropagationContext ectx)
      • isParallelAgenda

        public boolean isParallelAgenda()
        Specified by:
        isParallelAgenda in interface org.drools.core.common.InternalAgenda