OptaPlanner core 6.0.1.Final

org.optaplanner.core.impl.score.director.drools
Class DroolsScoreDirector

java.lang.Object
  extended by org.optaplanner.core.impl.score.director.AbstractScoreDirector<DroolsScoreDirectorFactory>
      extended by org.optaplanner.core.impl.score.director.drools.DroolsScoreDirector
All Implemented Interfaces:
Cloneable, ScoreDirector

public class DroolsScoreDirector
extends AbstractScoreDirector<DroolsScoreDirectorFactory>

Drools implementation of ScoreDirector, which directs the Rule Engine to calculate the Score of the Solution workingSolution.

See Also:
ScoreDirector

Field Summary
static String GLOBAL_SCORE_HOLDER_KEY
           
protected  org.kie.api.runtime.KieSession kieSession
           
protected  ScoreHolder workingScoreHolder
           
 
Fields inherited from class org.optaplanner.core.impl.score.director.AbstractScoreDirector
calculateCount, constraintMatchEnabledPreference, logger, scoreDirectorFactory, trailingEntityMapSupport, variableListenerSupport, workingSolution
 
Constructor Summary
DroolsScoreDirector(DroolsScoreDirectorFactory scoreDirectorFactory)
           
 
Method Summary
 void afterEntityAdded(PlanningEntityDescriptor entityDescriptor, Object entity)
           
 void afterEntityRemoved(PlanningEntityDescriptor entityDescriptor, Object entity)
           
 void afterProblemFactAdded(Object problemFact)
           
 void afterProblemFactChanged(Object problemFact)
           
 void afterProblemFactRemoved(Object problemFact)
           
 void afterShadowVariableChanged(Object entity, String variableName)
           
 void afterVariableChanged(PlanningVariableDescriptor variableDescriptor, Object entity)
           
protected  void appendLegacyConstraintOccurrences(StringBuilder analysis, ScoreDirector corruptedScoreDirector, ScoreDirector uncorruptedScoreDirector)
          Deprecated. 
 Score calculateScore()
          Calculates the Score and updates the workingSolution accordingly.
 DroolsScoreDirector clone()
          Clones this ScoreDirector and its workingSolution.
 void dispose()
          Needs to be called after use because some implementations needs to clean up their resources.
 Collection<ConstraintMatchTotal> getConstraintMatchTotals()
           
protected  org.kie.api.KieBase getKieBase()
           
 org.kie.api.runtime.KieSession getKieSession()
           
 Collection<Object> getWorkingFacts()
           
 boolean isConstraintMatchEnabled()
           
 void setWorkingSolution(Solution workingSolution)
          The workingSolution must never be the same instance as the bestSolution, it should be a (un)changed clone.
 
Methods inherited from class org.optaplanner.core.impl.score.director.AbstractScoreDirector
afterEntityAdded, afterEntityRemoved, afterVariableChanged, assertExpectedWorkingScore, assertWorkingScoreFromScratch, beforeEntityAdded, beforeEntityAdded, beforeEntityRemoved, beforeEntityRemoved, beforeProblemFactAdded, beforeProblemFactChanged, beforeProblemFactRemoved, beforeShadowVariableChanged, beforeVariableChanged, beforeVariableChanged, buildScoreCorruptionAnalysis, cloneWorkingSolution, countWorkingSolutionUninitializedVariables, getCalculateCount, getScoreDefinition, getScoreDirectorFactory, getSolutionDescriptor, getTrailingEntity, getWorkingEntityCount, getWorkingEntityList, getWorkingSolution, getWorkingValueCount, isWorkingSolutionInitialized, setCalculatedScore, toString
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

GLOBAL_SCORE_HOLDER_KEY

public static final String GLOBAL_SCORE_HOLDER_KEY
See Also:
Constant Field Values

kieSession

protected org.kie.api.runtime.KieSession kieSession

workingScoreHolder

protected ScoreHolder workingScoreHolder
Constructor Detail

DroolsScoreDirector

public DroolsScoreDirector(DroolsScoreDirectorFactory scoreDirectorFactory)
Method Detail

getKieBase

protected org.kie.api.KieBase getKieBase()

getKieSession

public org.kie.api.runtime.KieSession getKieSession()

setWorkingSolution

public void setWorkingSolution(Solution workingSolution)
Description copied from interface: ScoreDirector
The workingSolution must never be the same instance as the bestSolution, it should be a (un)changed clone.

Specified by:
setWorkingSolution in interface ScoreDirector
Overrides:
setWorkingSolution in class AbstractScoreDirector<DroolsScoreDirectorFactory>
Parameters:
workingSolution - never null

getWorkingFacts

public Collection<Object> getWorkingFacts()

calculateScore

public Score calculateScore()
Description copied from interface: ScoreDirector
Calculates the Score and updates the workingSolution accordingly.

Returns:
never null, the Score of the workingSolution

isConstraintMatchEnabled

public boolean isConstraintMatchEnabled()
Specified by:
isConstraintMatchEnabled in interface ScoreDirector
Overrides:
isConstraintMatchEnabled in class AbstractScoreDirector<DroolsScoreDirectorFactory>
Returns:
true if ScoreDirector.getConstraintMatchTotals() can be called

getConstraintMatchTotals

public Collection<ConstraintMatchTotal> getConstraintMatchTotals()
Specified by:
getConstraintMatchTotals in interface ScoreDirector
Overrides:
getConstraintMatchTotals in class AbstractScoreDirector<DroolsScoreDirectorFactory>
Returns:
never null

clone

public DroolsScoreDirector clone()
Description copied from interface: ScoreDirector
Clones this ScoreDirector and its workingSolution. Use ScoreDirector.getWorkingSolution() to retrieve the workingSolution of that clone.

This is heavy method, because it usually breaks incremental score calculation. Use it sparingly. Therefore it's best to clone lazily by delaying the clone call as long as possible.

Specified by:
clone in interface ScoreDirector
Overrides:
clone in class AbstractScoreDirector<DroolsScoreDirectorFactory>
Returns:
never null

dispose

public void dispose()
Description copied from interface: ScoreDirector
Needs to be called after use because some implementations needs to clean up their resources.

Specified by:
dispose in interface ScoreDirector
Overrides:
dispose in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterEntityAdded

public void afterEntityAdded(PlanningEntityDescriptor entityDescriptor,
                             Object entity)
Overrides:
afterEntityAdded in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterVariableChanged

public void afterVariableChanged(PlanningVariableDescriptor variableDescriptor,
                                 Object entity)
Overrides:
afterVariableChanged in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterShadowVariableChanged

public void afterShadowVariableChanged(Object entity,
                                       String variableName)
Overrides:
afterShadowVariableChanged in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterEntityRemoved

public void afterEntityRemoved(PlanningEntityDescriptor entityDescriptor,
                               Object entity)
Overrides:
afterEntityRemoved in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterProblemFactAdded

public void afterProblemFactAdded(Object problemFact)
Specified by:
afterProblemFactAdded in interface ScoreDirector
Overrides:
afterProblemFactAdded in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterProblemFactChanged

public void afterProblemFactChanged(Object problemFact)
Specified by:
afterProblemFactChanged in interface ScoreDirector
Overrides:
afterProblemFactChanged in class AbstractScoreDirector<DroolsScoreDirectorFactory>

afterProblemFactRemoved

public void afterProblemFactRemoved(Object problemFact)
Specified by:
afterProblemFactRemoved in interface ScoreDirector
Overrides:
afterProblemFactRemoved in class AbstractScoreDirector<DroolsScoreDirectorFactory>

appendLegacyConstraintOccurrences

@Deprecated
protected void appendLegacyConstraintOccurrences(StringBuilder analysis,
                                                            ScoreDirector corruptedScoreDirector,
                                                            ScoreDirector uncorruptedScoreDirector)
Deprecated. 

Overrides:
appendLegacyConstraintOccurrences in class AbstractScoreDirector<DroolsScoreDirectorFactory>

OptaPlanner core 6.0.1.Final

Copyright © 2006-2013 JBoss by Red Hat. All Rights Reserved.