Class RuleImpl

    • Field Detail

      • activationListener

        protected String activationListener
    • Constructor Detail

      • RuleImpl

        public RuleImpl()
      • RuleImpl

        public RuleImpl​(String name)
        Construct a Rule with the given name for the specified pkg parent
        Parameters:
        name - The name of this rule.
    • Method Detail

      • addUsedQuery

        public void addUsedQuery​(QueryImpl query)
      • getDependingQueries

        public Collection<QueryImpl> getDependingQueries()
        Returns the lists of queries from which this rule (or query) depends on ordered by their relative dependencies, e.g. if R1 -> A -> B -> C (where the letter are queries) it will return [C, B, A]
      • getResource

        public org.kie.api.io.Resource getResource()
        Specified by:
        getResource in interface org.kie.internal.definition.rule.InternalRule
      • setResource

        public void setResource​(org.kie.api.io.Resource resource)
      • getDialect

        public String getDialect()
        Specified by:
        getDialect in interface Dialectable
        Specified by:
        getDialect in interface org.kie.internal.definition.rule.InternalRule
      • setDialect

        public void setDialect​(String dialect)
      • getTimer

        public Timer getTimer()
        Returns the Timer semantics for a rule. Timer based rules are not added directly to the Agenda instead they are scheduled for Agenda addition, based on the timer.
      • setTimer

        public void setTimer​(Timer timer)
        Sets the timer semantics for a rule. Timer based rules are not added directly to the Agenda instead they are scheduled for Agenda addition, based on the timer.
      • isValid

        public boolean isValid()
        Determine if this rule is internally consistent and valid. This will include checks to make sure the rules semantic components (actions and predicates) are valid. No exception is thrown.

        A Rule must include at least one parameter declaration and one condition.

        Specified by:
        isValid in interface org.kie.internal.definition.rule.InternalRule
        Returns:
        true if this rule is valid, else false.
      • getPackage

        public String getPackage()
      • getPackageName

        public String getPackageName()
        Specified by:
        getPackageName in interface org.kie.api.definition.rule.Query
        Specified by:
        getPackageName in interface org.kie.api.definition.rule.Rule
      • getName

        public String getName()
        Retrieve the name of this rule.
        Specified by:
        getName in interface org.kie.api.definition.rule.Query
        Specified by:
        getName in interface org.kie.api.definition.rule.Rule
        Returns:
        The name of this rule.
      • getFullyQualifiedName

        public String getFullyQualifiedName()
        Specified by:
        getFullyQualifiedName in interface org.kie.internal.definition.rule.InternalRule
      • getSalience

        public Salience getSalience()
        Retrieve the Rule salience.
        Returns:
        The salience.
      • getSalienceValue

        public int getSalienceValue()
        Retrieve the Rule salience value.
        Specified by:
        getSalienceValue in interface org.kie.internal.definition.rule.InternalRule
        Returns:
        The salience value.
      • isSalienceDynamic

        public boolean isSalienceDynamic()
        Returns true if the rule uses dynamic salience, false otherwise.
        Specified by:
        isSalienceDynamic in interface org.kie.internal.definition.rule.InternalRule
        Returns:
        true if the rule uses dynamic salience, else false.
      • setSalience

        public void setSalience​(Salience salience)
        Set the Rule salience.
        Parameters:
        salience - The salience.
      • getAgendaGroup

        public String getAgendaGroup()
        Specified by:
        getAgendaGroup in interface org.kie.internal.definition.rule.InternalRule
      • setAgendaGroup

        public RuleImpl setAgendaGroup​(String agendaGroup)
      • isMainAgendaGroup

        public boolean isMainAgendaGroup()
        Specified by:
        isMainAgendaGroup in interface org.kie.internal.definition.rule.InternalRule
      • isNoLoop

        public boolean isNoLoop()
        Specified by:
        isNoLoop in interface org.kie.internal.definition.rule.InternalRule
      • isEffective

        public boolean isEffective​(Tuple tuple,
                                   RuleTerminalNode rtn,
                                   WorkingMemory workingMemory)
        This returns true is the rule is effective. If the rule is not effective, it cannot activate. This uses the dateEffective, dateExpires and enabled flag to decide this.
      • setNoLoop

        public void setNoLoop​(boolean noLoop)
      • getAutoFocus

        public boolean getAutoFocus()
        Specified by:
        getAutoFocus in interface org.kie.internal.definition.rule.InternalRule
      • setAutoFocus

        public void setAutoFocus​(boolean autoFocus)
      • getActivationGroup

        public String getActivationGroup()
        Specified by:
        getActivationGroup in interface org.kie.internal.definition.rule.InternalRule
      • setActivationGroup

        public void setActivationGroup​(String activationGroup)
      • getRuleFlowGroup

        public String getRuleFlowGroup()
        Specified by:
        getRuleFlowGroup in interface org.kie.internal.definition.rule.InternalRule
      • setRuleFlowGroup

        public void setRuleFlowGroup​(String ruleFlowGroup)
      • getDeclaration

        public Declaration getDeclaration​(String identifier)
        Retrieve a parameter Declaration by identifier.
        Parameters:
        identifier - The identifier.
        Returns:
        The declaration or null if no declaration matches the identifier.
      • getRequiredDeclarationsForConsequence

        public String[] getRequiredDeclarationsForConsequence​(String consequenceName)
      • setRequiredDeclarationsForConsequence

        public void setRequiredDeclarationsForConsequence​(String consequenceName,
                                                          String[] requiredDeclarations)
      • hasLogicalDependency

        public boolean hasLogicalDependency()
        This field is updated at runtime, when the first logical assertion is done. I'm currently not too happy about having this determine at runtime but its currently easier than trying to do this at compile time, although eventually this should be changed
        Returns:
      • setHasLogicalDependency

        public void setHasLogicalDependency​(boolean hasLogicalDependency)
      • isLockOnActive

        public boolean isLockOnActive()
        Specified by:
        isLockOnActive in interface org.kie.internal.definition.rule.InternalRule
      • setLockOnActive

        public void setLockOnActive​(boolean lockOnActive)
      • getDeclarations

        public Map<String,​Declaration> getDeclarations()
        Retrieve the set of all root fact object parameter Declarations.
        Returns:
        The Set of Declarations in order which specify the root fact objects.
      • addPattern

        public void addPattern​(RuleConditionElement element)
        Add a pattern to the rule. All patterns are searched for bindings which are then added to the rule as declarations
        Parameters:
        element - The Test to add.
        Throws:
        InvalidRuleException
      • getLhs

        public GroupElement getLhs()
        Retrieve the List of Conditions for this rule.
        Returns:
        The List of Conditions.
      • getTransformedLhs

        public GroupElement[] getTransformedLhs​(LogicTransformer transformer,
                                                Map<String,​Class<?>> globals)
                                         throws InvalidPatternException
        Uses the LogicTransformer to process the Rule patters - if no ORs are used this will return an array of a single AND element. If there are Ors it will return an And element for each possible logic branch. The processing uses as a clone of the Rule's patterns, so they are not changed.
        Returns:
        Throws:
        InvalidPatternException
      • setConsequence

        public void setConsequence​(Consequence consequence)
        Set the Consequence that is associated with the successful match of this rule.
        Parameters:
        consequence - The Consequence to attach to this Rule.
      • getConsequence

        public Consequence getConsequence()
        Retrieve the Consequence associated with this Rule.
        Returns:
        The Consequence.
      • hasNamedConsequences

        public boolean hasNamedConsequences()
      • getNamedConsequence

        public Consequence getNamedConsequence​(String consequenceName)
      • addNamedConsequence

        public void addNamedConsequence​(String name,
                                        Consequence consequence)
      • getLoadOrder

        public int getLoadOrder()
      • setLoadOrder

        public void setLoadOrder​(int loadOrder)
      • isEager

        public boolean isEager()
      • setEager

        public void setEager​(boolean eager)
      • isDataDriven

        public boolean isDataDriven()
      • setDataDriven

        public void setDataDriven​(boolean dataDriven)
      • isAllMatches

        public boolean isAllMatches()
      • setAllMatches

        public void setAllMatches​(boolean allMatches)
      • toRuleNameAndPathString

        public String toRuleNameAndPathString()
      • hashCode

        public int hashCode()
        Overrides:
        hashCode in class Object
      • setSemanticallyValid

        public void setSemanticallyValid​(boolean valid)
      • isSemanticallyValid

        public boolean isSemanticallyValid()
        This will return if the semantic actions or predicates in the rules are valid. This is provided so that lists of rules can be provided even if their semantic actions do not "compile" etc.
      • hasCalendars

        public boolean hasCalendars()
      • getCalendars

        public String[] getCalendars()
      • setCalendars

        public void setCalendars​(String[] calendars)
      • setDateEffective

        public void setDateEffective​(Calendar effectiveDate)
        Sets the date from which this rule takes effect (can include time to the millisecond).
        Parameters:
        effectiveDate -
      • setDateExpires

        public void setDateExpires​(Calendar expiresDate)
        Sets the date after which the rule will no longer apply (can include time to the millisecond).
        Parameters:
        expiresDate -
      • getDateEffective

        public Calendar getDateEffective()
        Specified by:
        getDateEffective in interface org.kie.internal.definition.rule.InternalRule
      • getDateExpires

        public Calendar getDateExpires()
        Specified by:
        getDateExpires in interface org.kie.internal.definition.rule.InternalRule
      • setEnabled

        public void setEnabled​(Enabled b)
        A rule is enabled by default. This can explicitly disable it in which case it will never activate.
      • getEnabled

        public Enabled getEnabled()
      • addMetaAttribute

        public void addMetaAttribute​(String key,
                                     Object value)
      • getActivationListener

        public String getActivationListener()
      • setActivationListener

        public void setActivationListener​(String activationListener)
      • getMetaData

        public Map<String,​Object> getMetaData()
        Specified by:
        getMetaData in interface org.kie.api.definition.rule.Query
        Specified by:
        getMetaData in interface org.kie.api.definition.rule.Rule
      • setParent

        public void setParent​(RuleImpl parent)
      • getParent

        public RuleImpl getParent()
      • addChild

        public void addChild​(RuleImpl child)
      • removeChild

        public void removeChild​(RuleImpl child)
      • hasChildren

        public boolean hasChildren()
      • isQuery

        public boolean isQuery()
      • getKnowledgeType

        public org.kie.api.definition.KieDefinition.KnowledgeType getKnowledgeType()
        Specified by:
        getKnowledgeType in interface org.kie.api.definition.KieDefinition
      • getNamespace

        public String getNamespace()
        Specified by:
        getNamespace in interface org.kie.api.definition.KieDefinition
      • getId

        public String getId()
        Specified by:
        getId in interface org.kie.api.definition.KieDefinition
      • getRuleUnitClassName

        public String getRuleUnitClassName()
      • setRuleUnitClass

        public void setRuleUnitClass​(Class<?> ruleUnit)
      • setRuleUnitClassName

        public void setRuleUnitClassName​(String ruleUnitClassName)
      • hasRuleUnit

        public boolean hasRuleUnit()