Class JavaStateTransition
java.lang.Object
io.github.jspinak.brobot.manageStates.JavaStateTransition
- All Implemented Interfaces:
IStateTransition
Code-based state transition implementation for the Brobot framework.
JavaStateTransition represents transitions defined through Java code using BooleanSupplier functions. This implementation enables dynamic, programmatic state navigation where transition logic can involve complex conditions, external data, or runtime calculations that cannot be expressed declaratively.
Key components:
- Transition Function: BooleanSupplier that executes the transition logic
- Activation List: States to activate after successful transition
- Exit List: States to deactivate after successful transition
- Visibility Control: Whether source state remains visible post-transition
- Path Score: Weight for path-finding algorithms (higher = less preferred)
State reference handling:
- Uses state names during definition (IDs not yet assigned)
- Names are converted to IDs during initialization
- Both name and ID sets are maintained for flexibility
- Supports multiple target states for branching transitions
Transition execution flow:
- BooleanSupplier is invoked to perform transition logic
- If true is returned, transition is considered successful
- States in 'activate' set become active
- States in 'exit' set become inactive
- Success counter is incremented for metrics
Common use patterns:
- Complex navigation logic that depends on runtime conditions
- Transitions involving external API calls or data validation
- Dynamic state activation based on application state
- Fallback transitions with custom error handling
Builder pattern benefits:
- Fluent API for readable transition definitions
- Default values for optional properties
- Type-safe state name specification
- Convenient overloads for common patterns
In the model-based approach, JavaStateTransition provides the flexibility needed for complex automation scenarios where declarative ActionDefinitions are insufficient. It enables seamless integration of custom logic while maintaining the benefits of the state graph structure for navigation and path finding.
- Since:
- 1.0
- See Also:
-
Nested Class Summary
Nested ClassesNested classes/interfaces inherited from interface io.github.jspinak.brobot.manageStates.IStateTransition
IStateTransition.StaysVisible
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptiongetExit()
int
getScore()
When set, takes precedence over the same variable in StateTransitions.int
getType()
void
setActivate
(Set<Long> activate) void
setActivateNames
(Set<String> activateNames) void
void
setExitNames
(Set<String> exitNames) void
setScore
(int score) void
setStaysVisibleAfterTransition
(IStateTransition.StaysVisible staysVisibleAfterTransition) void
setTimesSuccessful
(int timesSuccessful) void
setTransitionFunction
(BooleanSupplier transitionFunction) void
toString()
-
Constructor Details
-
JavaStateTransition
public JavaStateTransition()
-
-
Method Details
-
getActionDefinitionOptional
- Specified by:
getActionDefinitionOptional
in interfaceIStateTransition
-
toString
- Specified by:
toString
in interfaceIStateTransition
- Overrides:
toString
in classObject
-
getType
-
getTransitionFunction
-
getStaysVisibleAfterTransition
Description copied from interface:IStateTransition
When set, takes precedence over the same variable in StateTransitions. Only applies to FromTransitions.- Specified by:
getStaysVisibleAfterTransition
in interfaceIStateTransition
-
getActivateNames
-
getExitNames
-
getActivate
- Specified by:
getActivate
in interfaceIStateTransition
-
getExit
- Specified by:
getExit
in interfaceIStateTransition
-
getScore
public int getScore()- Specified by:
getScore
in interfaceIStateTransition
-
getTimesSuccessful
public int getTimesSuccessful()- Specified by:
getTimesSuccessful
in interfaceIStateTransition
-
setType
-
setTransitionFunction
-
setStaysVisibleAfterTransition
public void setStaysVisibleAfterTransition(IStateTransition.StaysVisible staysVisibleAfterTransition) - Specified by:
setStaysVisibleAfterTransition
in interfaceIStateTransition
-
setActivateNames
-
setExitNames
-
setActivate
- Specified by:
setActivate
in interfaceIStateTransition
-
setExit
- Specified by:
setExit
in interfaceIStateTransition
-
setScore
public void setScore(int score) - Specified by:
setScore
in interfaceIStateTransition
-
setTimesSuccessful
public void setTimesSuccessful(int timesSuccessful) - Specified by:
setTimesSuccessful
in interfaceIStateTransition
-