|
|
Line 1: |
Line 1: |
− | = Using the Strategy class = | + | = Exploration strategies = |
− | | + | |
− | In this section the components of the <code>Strategy</code> class are explained including the following four interfaces and its built in implementations:
| + | |
− | * <code>ICheckConstraints</code>
| + | |
− | * <code>INextTransition</code>
| + | |
− | | + | |
− | Its only responsibility is the call delegation to the four interfaces. Implementation of these interfaces can be set via simple set methods. The only exception is the <code>INextTransition</code> interface which is a required parameter in the constructor.
| + | |
− | | + | |
− | == ICheckConstraints ==
| + | |
− | | + | |
− | This interface has only one method and it is responsible for deciding whether the current state satisfies the global constraints returning true if the answer is yes:
| + | |
− | | + | |
− | <source lang="java">
| + | |
− | boolean checkConstraints(ThreadContext context);
| + | |
− | </source>
| + | |
− | | + | |
− | This method called every time a new state is traversed and if it returns false the current state will be marked as "shouldn't explore further" for the traversal strategy. Default implementation of this interface is the <code>CheckAllConstraints</code> class, which simply checks all the given constraints and return false if at least one constraint is failed to be satisfied.
| + | |
− | | + | |
− | Override this implementation if the "AND" logic between the constraints is not suitable or a global constraint cannot be defined using IncQuery.
| + | |
− | | + | |
− | | + | |
− | == INextTransition ==
| + | |