All Classes and Interfaces

Class
Description
Implements the concat operation.
 
 
 
 
FP streams implementation of ScoreDirectorFactory.
 
 
Filtering nodes are expensive.
 
This class has two direct children: AbstractIndexedIfExistsNode and AbstractUnindexedIfExistsNode.
 
There is a strong likelihood that any change to this class, which is not related to indexing, should also be made to AbstractUnindexedIfExistsNode.
There is a strong likelihood that any change to this class, which is not related to indexing, should also be made to AbstractUnindexedJoinNode.
 
This class has two direct children: AbstractIndexedJoinNode and AbstractUnindexedJoinNode.
 
 
Keeps track of the working score and constraint matches for a single constraint session.
 
A tuple is an out tuple in exactly one node and an in tuple in one or more nodes.
There is a strong likelihood that any change made to this class should also be made to AbstractIndexedIfExistsNode.
There is a strong likelihood that any change made to this class should also be made to AbstractIndexedJoinNode.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
The type is public to make it easier for Bavet-specific minimal bug reproducers to be created.
 
FP streams implementation of ScoreDirector, which only recalculates the Score of the part of the working solution that changed, instead of the going through the entire PlanningSolution.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Combs an array of BiJoiner instances into a mergedJoiner and a mergedFiltering.
 
 
Allows creating ConstraintMatch instances lazily if and only if they are required by the end user.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
An indexer for entity or fact X, maps a property or a combination of properties of X, denoted by indexProperties, to all instances of X that match those properties, depending on the the indexer type (equal, lower than, ...).
 
Index properties are cached in tuples and each tuple carries its unique instance.
 
 
 
 
 
 
 
 
Combs an array of PentaJoiner instances into a mergedJoiner and a mergedFiltering.
A propagation queue is an ordered collection of items that need to be sent to the next node.
Propagator is an interface that exposes the PropagationQueue to BavetConstraintSession.
 
 
Combs an array of QuadJoiner instances into a mergedJoiner and a mergedFiltering.
 
Determines the behavior of joins and conditional propagation based on whether they are coming off of a constraint stream started by either ConstraintFactory.from(Class) or ConstraintFactory.forEach(Class) family of methods.
 
 
 
The implementation moves tuples directly into an either retract, update or insert queue, without any option of moving between the queues.
 
 
Combs an array of TriJoiner instances into a mergedJoiner and a mergedFiltering.
 
 
 
 
 
 
 
 
There are several valid ways how an impacter could be called from a constraint stream: .penalize(..., (int) 1) .penalizeLong(..., (int) 1) .penalizeLong(..., (long) 1) .penalizeBigDecimal(..., (int) 1) .penalizeBigDecimal(..., (long) 1) .penalizeBigDecimal(..., BigDecimal.ONE) Plus reward variants of the above. An implementation of this interface can throw an UnsupportedOperationException for the method types it doesn't support.