anchor.diff:  ----
   ====
   
  -Even if we optimize the code above to use ``Map``s to iterate through the `processList` only once, *it is still slow* because it does not do <<incrementalScoreCalculation,incremental score calculation>>.
  +Even if we optimize the code above to use ``Map``s to iterate through the `processList` only once, it is still slow because it does not do <<incrementalScoreCalculation,incremental score calculation>>.
   To fix that, either use incremental Java score calculation or Drools score calculation.
  -Let's take a look at the latter.
   
   
   [[cloudBalancingDroolsScoreConfiguration]]
   ==== Drools Score Configuration
   
  +Drools score calculation uses incremental calculation, where every score constraint is written as one or more score rules. 
  +
  +If you use the Drools rule engine for score calculation, you can integrate with other Drools technologies, such as decision tables (XLS or web based), the KIE Workbench, ...
  +
  +Prerequisite::
   To use the Drools rule engine as a score function, simply add a `scoreDrl` resource in the classpath:
   
   [source,xml,options="nowrap"]
  
positive.code: ----
  ====
  
  If you use the Drools rule engine for score calculation, you can integrate with other Drools technologies, such as decision tables (XLS or web based), the KIE Workbench, ...
  
  
  [[cloudBalancingBeyondThisTutorial]]
  === Beyond this Tutorial
  
negative.code:                 "org/optaplanner/examples/cloudbalancing/solver/cloudBalancingSolverConfig.xml");
          Solver solver<CloudBalance> = solverFactory.buildSolver();
  ----
  
  . Load the problem. 
  +
  `CloudBalancingGenerator` generates a random problem: you will replace this with a class that loads a real problem, for example from a database.
  +
  