Interface Notification<Solution_,ChangeEvent_ extends ChangeEvent,T extends InnerVariableListener<Solution_,ChangeEvent_>>

Type Parameters:
Solution_ - the solution type, the class with the PlanningSolution annotation
T - the variable listener type
All Known Subinterfaces:
BasicVariableNotification<Solution_>, EntityNotification<Solution_,ChangeEvent_>, ListVariableNotification<Solution_>
All Known Implementing Classes:
ListVariableChangedNotification

public interface Notification<Solution_,ChangeEvent_ extends ChangeEvent,T extends InnerVariableListener<Solution_,ChangeEvent_>>
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 each Notifiable registered for the subject of the change.

Each implementation is tailored to a specific InnerVariableListener 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 the Process.computer genuine planning variable, then there is a notifiable F registered for the Process.computer planning variable, and it holds a basic variable listener L. When Process X is moved from Computer A to Computer B, a notification N is created and added to notifiable F's queue. The notification N triggers InnerVariableListener.beforeChange(InnerScoreDirector, ChangeEvent) L.beforeChanged(scoreDirector, Process X)} immediately. Later, when F.triggerAllNotifications() is called, N is taken from the queue and triggers InnerVariableListener.afterChange(InnerScoreDirector, ChangeEvent).

  • Method Details

    • variableChanged

      static <Solution_> BasicVariableNotification<Solution_> variableChanged(Object entity)
      Basic genuine or shadow planning variable changed on entity.
    • elementUnassigned

      static <Solution_> ListVariableNotification<Solution_> elementUnassigned(Object element)
      An element was unassigned from a list variable.
    • listVariableChanged

      static <Solution_> ListVariableChangedNotification<Solution_> listVariableChanged(Object entity, int fromIndex, int toIndex)
      A list variable change occurs on entity between fromIndex and toIndex.
    • triggerBefore

      void triggerBefore(T variableListener, InnerScoreDirector<Solution_,?> scoreDirector)
      Trigger variableListener's before method corresponding to this notification.
    • triggerAfter

      void triggerAfter(T variableListener, InnerScoreDirector<Solution_,?> scoreDirector)
      Trigger variableListener's after method corresponding to this notification.