Annotation Type ShadowVariable
-
@Target({METHOD,FIELD}) @Retention(RUNTIME) @Repeatable(List.class) public @interface ShadowVariable
Specifies that a bean property (or a field) is a custom shadow variable of 1 or more source variables. The source variable may be a genuinePlanningVariable
,PlanningListVariable
, or another shadow variable.It is specified on a getter of a java bean property (or a field) of a
PlanningEntity
class.
-
-
Required Element Summary
Required Elements Modifier and Type Required Element Description String
sourceVariableName
The source variable name.Class<? extends AbstractVariableListener>
variableListenerClass
AVariableListener
orListVariableListener
gets notified after a source planning variable has changed.
-
Optional Element Summary
Optional Elements Modifier and Type Optional Element Description Class<?>
sourceEntityClass
ThePlanningEntity
class of the source variable.
-
-
-
Element Detail
-
variableListenerClass
Class<? extends AbstractVariableListener> variableListenerClass
AVariableListener
orListVariableListener
gets notified after a source planning variable has changed. That listener changes the shadow variable (often recursively on multiple planning entities) accordingly. Those shadow variables should make the score calculation more natural to write.For example: VRP with time windows uses a
VariableListener
to update the arrival times of all the trailing entities when an entity is changed.- Returns:
- a variable listener class
-
-
-
sourceVariableName
String sourceVariableName
The source variable name.- Returns:
- never null, a genuine or shadow variable name
-
-
-
sourceEntityClass
Class<?> sourceEntityClass
ThePlanningEntity
class of the source variable.Specified if the source variable is on a different
Class
than the class that uses this referencing annotation.- Returns:
ShadowVariable.NullEntityClass
when the attribute is omitted (workaround for annotation limitation). Defaults to the sameClass
as the one that uses this annotation.
- Default:
- org.optaplanner.core.api.domain.variable.ShadowVariable.NullEntityClass.class
-
-