Class AbstractScoreHolder<Score_ extends Score<Score_>>

    • Field Detail

      • EMPTY_OBJECT_ARRAY

        protected static final Object[] EMPTY_OBJECT_ARRAY
        Exists to improve performance. Otherwise a call from method() to method(Object...) would always create a new array.
      • constraintMatchEnabled

        protected final boolean constraintMatchEnabled
    • Constructor Detail

      • AbstractScoreHolder

        protected AbstractScoreHolder​(boolean constraintMatchEnabled,
                                      Score_ zeroScore)
    • Method Detail

      • isConstraintMatchEnabled

        public boolean isConstraintMatchEnabled()
      • configureConstraintWeight

        public void configureConstraintWeight​(org.kie.api.definition.rule.Rule rule,
                                              Score_ constraintWeight)
      • registerConstraintMatch

        protected void registerConstraintMatch​(org.kie.api.runtime.rule.RuleContext kcontext,
                                               Runnable constraintUndoListener,
                                               Supplier<Score_> scoreSupplier,
                                               Object... justifications)
        Requires @OptaPlannerRuleEventListener to be added as event listener on KieSession, otherwise the score changes caused by the constraint matches would not be undone. See DroolsScoreDirector.resetKieSession() for an example.
        Parameters:
        kcontext - The rule for which to register the match.
        constraintUndoListener - The operation to run to undo the match.
        scoreSupplier - The score change to be undone when constraint justification enabled.
        justifications - the primary arguments(s) that the CS penalizes/rewards, empty when not called by CS-D
      • impactScore

        public final void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
      • impactScore

        public void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                Object... justifications)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        justifications - the primary arguments(s) that the CS penalizes/rewards, not used outside of CS-D
      • impactScore

        public final void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                      int weightMultiplier)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
      • impactScore

        public abstract void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                         int weightMultiplier,
                                         Object... justifications)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
        justifications - the primary arguments(s) that the CS penalizes/rewards, not used outside of CS-D
      • impactScore

        public final void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                      long weightMultiplier)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
      • impactScore

        public abstract void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                         long weightMultiplier,
                                         Object... justifications)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
        justifications - the primary arguments(s) that the CS penalizes/rewards, not used outside of CS-D
      • impactScore

        public final void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                      BigDecimal weightMultiplier)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
      • impactScore

        public abstract void impactScore​(org.kie.api.runtime.rule.RuleContext kcontext,
                                         BigDecimal weightMultiplier,
                                         Object... justifications)
        For internal use only, use penalize() or reward() instead.
        Parameters:
        kcontext - never null
        weightMultiplier - any
        justifications - the primary arguments(s) that the CS penalizes/rewards, not used outside of CS-D
      • extractScore

        public abstract Score_ extractScore​(int initScore)
      • extractJustificationList

        protected List<Object> extractJustificationList​(org.kie.api.runtime.rule.RuleContext kcontext)