Interface Notification<Solution_,T extends AbstractVariableListener<Solution_,Object>>
-
- Type Parameters:
Solution_
- the solution type, the class with thePlanningSolution
annotationT
- the variable listener type
- All Known Subinterfaces:
BasicVariableNotification<Solution_>
,EntityNotification<Solution_>
,ListVariableNotification<Solution_>
public interface Notification<Solution_,T extends AbstractVariableListener<Solution_,Object>>
A notification represents some kind of change of a planning variable. When a score director is notified about a change, one notification is created for eachNotifiable
registered for the subject of the change. Each implementation is tailored to a specificAbstractVariableListener
and triggers on the listener the pair of "before/after" methods corresponding to the type of change it represents. For example, if there is a shadow variable sourced on theProcess.computer
genuine planning variable, then there is a notifiableF
registered for theProcess.computer
planning variable, and it holds a basic variable listenerL
. WhenProcess X
is moved fromComputer A
toComputer B
, a notificationN
is created and added to notifiableF
's queue. The notificationN
triggersL.beforeVariableChanged(scoreDirector, Process X)
immediately. Later, whenF.triggerAllNotifications()
is called,N
is taken from the queue and triggersVariableListener.afterVariableChanged(org.optaplanner.core.api.score.director.ScoreDirector<Solution_>, Entity_)
.
-
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Modifier and Type Method Description static <Solution_>
ListVariableNotification<Solution_>elementUnassigned(Object element)
An element was unassigned from a list variable.static <Solution_>
EntityNotification<Solution_>entityAdded(Object entity)
Theentity
was added.static <Solution_>
EntityNotification<Solution_>entityRemoved(Object entity)
Theentity
was removed.static <Solution_>
ListVariableNotification<Solution_>listVariableChanged(Object entity, int fromIndex, int toIndex)
A list variable change occurs onentity
betweenfromIndex
andtoIndex
.void
triggerAfter(T variableListener, ScoreDirector<Solution_> scoreDirector)
TriggervariableListener
's after method corresponding to this notification.void
triggerBefore(T variableListener, ScoreDirector<Solution_> scoreDirector)
TriggervariableListener
's before method corresponding to this notification.static <Solution_>
BasicVariableNotification<Solution_>variableChanged(Object entity)
Basic genuine or shadow planning variable changed onentity
.
-
-
-
Method Detail
-
entityAdded
static <Solution_> EntityNotification<Solution_> entityAdded(Object entity)
Theentity
was added.
-
entityRemoved
static <Solution_> EntityNotification<Solution_> entityRemoved(Object entity)
Theentity
was removed.
-
variableChanged
static <Solution_> BasicVariableNotification<Solution_> variableChanged(Object entity)
Basic genuine or shadow planning variable changed onentity
.
-
elementUnassigned
static <Solution_> ListVariableNotification<Solution_> elementUnassigned(Object element)
An element was unassigned from a list variable.
-
listVariableChanged
static <Solution_> ListVariableNotification<Solution_> listVariableChanged(Object entity, int fromIndex, int toIndex)
A list variable change occurs onentity
betweenfromIndex
andtoIndex
.
-
triggerBefore
void triggerBefore(T variableListener, ScoreDirector<Solution_> scoreDirector)
TriggervariableListener
's before method corresponding to this notification.
-
triggerAfter
void triggerAfter(T variableListener, ScoreDirector<Solution_> scoreDirector)
TriggervariableListener
's after method corresponding to this notification.
-
-