Interface ConstraintStream
- 
- All Known Subinterfaces:
- BiConstraintStream<A,B>,- InnerBiConstraintStream<A,B>,- InnerQuadConstraintStream<A,B,C,D>,- InnerTriConstraintStream<A,B,C>,- InnerUniConstraintStream<A>,- QuadConstraintStream<A,B,C,D>,- TriConstraintStream<A,B,C>,- UniConstraintStream<A>
 - All Known Implementing Classes:
- AbstractConstraintStream,- BavetAbstractBiConstraintStream,- BavetAbstractConstraintStream,- BavetAbstractTriConstraintStream,- BavetAbstractUniConstraintStream,- BavetFilterBiConstraintStream,- BavetFilterTriConstraintStream,- BavetFilterUniConstraintStream,- BavetFromUniConstraintStream,- BavetGroupBiConstraintStream,- BavetGroupBridgeBiConstraintStream,- BavetGroupBridgeUniConstraintStream,- BavetJoinBiConstraintStream,- BavetJoinBridgeBiConstraintStream,- BavetJoinBridgeUniConstraintStream,- BavetJoinTriConstraintStream,- BavetScoringBiConstraintStream,- BavetScoringTriConstraintStream,- BavetScoringUniConstraintStream,- DroolsAbstractBiConstraintStream,- DroolsAbstractConstraintStream,- DroolsAbstractQuadConstraintStream,- DroolsAbstractTriConstraintStream,- DroolsAbstractUniConstraintStream,- DroolsExistsBiConstraintStream,- DroolsExistsQuadConstraintStream,- DroolsExistsTriConstraintStream,- DroolsExistsUniConstraintStream,- DroolsFilterBiConstraintStream,- DroolsFilterQuadConstraintStream,- DroolsFilterTriConstraintStream,- DroolsFilterUniConstraintStream,- DroolsFlatteningBiConstraintStream,- DroolsFlatteningQuadConstraintStream,- DroolsFlatteningTriConstraintStream,- DroolsFlatteningUniConstraintStream,- DroolsFromUniConstraintStream,- DroolsGroupingBiConstraintStream,- DroolsGroupingQuadConstraintStream,- DroolsGroupingTriConstraintStream,- DroolsGroupingUniConstraintStream,- DroolsJoinBiConstraintStream,- DroolsJoinQuadConstraintStream,- DroolsJoinTriConstraintStream,- DroolsMappingUniConstraintStream
 
 public interface ConstraintStreamA constraint stream is a declaration on how to matchone,twoor more objects. Constraint streams are similar to a declaration of a JDKStreamor an SQL query, but they support incremental score calculation andScoreManager.explainScore(Object)score justification}.An object that passes through constraint streams is called a fact. It's either a problem factor aplanning entity.A constraint stream is typically created with ConstraintFactory.from(Class)orUniConstraintStream.join(UniConstraintStream, BiJoiner)by joining another constraint stream}. Constraint streams form a directed, non-cyclic graph, with multiple start nodes (which listen to fact changes) and one end node perConstraint(which affect theScore).Throughout this documentation, we will be using the following terminology: - Constraint Stream
- A chain of different operations, originated by ConstraintFactory.from(Class)(or similar methods) and terminated by a penalization or reward operation.
- Operation
- Operations (implementations of ConstraintStream) are parts of a constraint stream which mutate it. They may remove tuples from further evaluation, expand or contract streams. Every constraint stream has a terminal operation, which is either a penalization or a reward.
- Fact
- Object instance entering the constraint stream.
- Genuine Fact
- Fact that enters the constraint stream either through a from(...) call or through a join(...) call.
 Genuine facts are either planning entities (see PlanningEntity) or problem facts (seeProblemFactPropertyorProblemFactCollectionProperty).
- Inferred Fact
- Fact that enters the constraint stream through a computation. This would typically happen through an operation such as groupBy(...).
- Tuple
- A collection of facts that the constraint stream operates on, propagating them from operation to
 operation.
 For example, UniConstraintStreamoperates on single-fact tuples {A} andBiConstraintStreamoperates on two-fact tuples {A, B}. Putting facts into a tuple implies a relationship exists between these facts.
- Match
- Match is a tuple that reached the terminal operation of a constraint stream and is therefore either penalized or rewarded.
- Cardinality
- The number of facts in a tuple. Uni constraint streams have a cardinality of 1, bi constraint streams have a cardinality of 2, etc.
- Conversion
- An operation that changes the cardinality of a constraint stream. This typically happens through join(...) or a groupBy(...) operations.
 
- 
- 
Method SummaryAll Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description ConstraintFactorygetConstraintFactory()TheConstraintFactorythat build this.Constraintimpact(String constraintPackage, String constraintName, Score<?> constraintWeight)As defined byimpact(String, Score).default Constraintimpact(String constraintName, Score<?> constraintWeight)Positively or negatively impact theScoreby the constraintWeight for each match.Constraintpenalize(String constraintPackage, String constraintName, Score<?> constraintWeight)As defined bypenalize(String, Score).default Constraintpenalize(String constraintName, Score<?> constraintWeight)Negatively impact theScore: subtract the constraintWeight for each match.default ConstraintpenalizeConfigurable(String constraintName)Negatively impact theScore: subtract theConstraintWeightfor each match.ConstraintpenalizeConfigurable(String constraintPackage, String constraintName)As defined bypenalizeConfigurable(String).Constraintreward(String constraintPackage, String constraintName, Score<?> constraintWeight)As defined byreward(String, Score).default Constraintreward(String constraintName, Score<?> constraintWeight)Positively impact theScore: add the constraintWeight for each match.default ConstraintrewardConfigurable(String constraintName)Positively impact theScore: add theConstraintWeightfor each match.ConstraintrewardConfigurable(String constraintPackage, String constraintName)As defined byrewardConfigurable(String).
 
- 
- 
- 
Method Detail- 
getConstraintFactoryConstraintFactory getConstraintFactory() TheConstraintFactorythat build this.- Returns:
- never null
 
 - 
penalizedefault Constraint penalize(String constraintName, Score<?> constraintWeight) Negatively impact theScore: subtract the constraintWeight for each match.To avoid hard-coding the constraintWeight, to allow end-users to tweak it, use penalizeConfigurable(String)and aConstraintConfigurationinstead.The Constraint.getConstraintPackage()defaults to the package of thePlanningSolutionclass.- Parameters:
- constraintName- never null, shows up in- ConstraintMatchTotalduring score justification
- constraintWeight- never null
- Returns:
- never null
 
 - 
penalizeConstraint penalize(String constraintPackage, String constraintName, Score<?> constraintWeight) As defined bypenalize(String, Score).- Parameters:
- constraintPackage- never null
- constraintName- never null
- constraintWeight- never null
- Returns:
- never null
 
 - 
penalizeConfigurabledefault Constraint penalizeConfigurable(String constraintName) Negatively impact theScore: subtract theConstraintWeightfor each match.The constraintWeight comes from an ConstraintWeightannotated member on theConstraintConfiguration, so end users can change the constraint weights dynamically. This constraint may be deactivated if theConstraintWeightis zero. If there is noConstraintConfiguration, usepenalize(String, Score)instead.The Constraint.getConstraintPackage()defaults toConstraintConfiguration.constraintPackage().- Parameters:
- constraintName- never null, shows up in- ConstraintMatchTotalduring score justification
- Returns:
- never null
 
 - 
penalizeConfigurableConstraint penalizeConfigurable(String constraintPackage, String constraintName) As defined bypenalizeConfigurable(String).- Parameters:
- constraintPackage- never null
- constraintName- never null
- Returns:
- never null
 
 - 
rewarddefault Constraint reward(String constraintName, Score<?> constraintWeight) Positively impact theScore: add the constraintWeight for each match.To avoid hard-coding the constraintWeight, to allow end-users to tweak it, use penalizeConfigurable(String)and aConstraintConfigurationinstead.The Constraint.getConstraintPackage()defaults to the package of thePlanningSolutionclass.- Parameters:
- constraintName- never null, shows up in- ConstraintMatchTotalduring score justification
- constraintWeight- never null
- Returns:
- never null
 
 - 
rewardConstraint reward(String constraintPackage, String constraintName, Score<?> constraintWeight) As defined byreward(String, Score).- Parameters:
- constraintPackage- never null
- constraintName- never null
- constraintWeight- never null
- Returns:
- never null
 
 - 
rewardConfigurabledefault Constraint rewardConfigurable(String constraintName) Positively impact theScore: add theConstraintWeightfor each match.The constraintWeight comes from an ConstraintWeightannotated member on theConstraintConfiguration, so end users can change the constraint weights dynamically. This constraint may be deactivated if theConstraintWeightis zero. If there is noConstraintConfiguration, usereward(String, Score)instead.The Constraint.getConstraintPackage()defaults toConstraintConfiguration.constraintPackage().- Parameters:
- constraintName- never null, shows up in- ConstraintMatchTotalduring score justification
- Returns:
- never null
 
 - 
rewardConfigurableConstraint rewardConfigurable(String constraintPackage, String constraintName) As defined byrewardConfigurable(String).- Parameters:
- constraintPackage- never null
- constraintName- never null
- Returns:
- never null
 
 - 
impactdefault Constraint impact(String constraintName, Score<?> constraintWeight) Positively or negatively impact theScoreby the constraintWeight for each match.Use penalize(...)orreward(...)instead, unless this constraint can both have positive and negative weights.The Constraint.getConstraintPackage()defaults to the package of thePlanningSolutionclass.- Parameters:
- constraintName- never null, shows up in- ConstraintMatchTotalduring score justification
- constraintWeight- never null
- Returns:
- never null
 
 - 
impactConstraint impact(String constraintPackage, String constraintName, Score<?> constraintWeight) As defined byimpact(String, Score).- Parameters:
- constraintPackage- never null
- constraintName- never null
- constraintWeight- never null
- Returns:
- never null
 
 
- 
 
-