Это старый вопрос, но я только что ответил на него, и мне тоже нужен был ответ на него, и я подумал, что это может помочь другим ответить на него. Я использую это как часть модульного тестирования, где крайне полезно просто перейти в определенное состояние (я хочу быть уверен, что если в состоянии A, если происходит последовательность событий, оно переходит в состояние B - и все еще идет там после того как я повозился с конечным автоматом XML!)
Я наконец нашел этот код в SCXMLTestHelper, и он заработал. Просто позвоните ему с исполнителем и государством назначения.
public static void setCurrentState(SCXMLExecutor exec, final String id) throws IllegalArgumentException{
try {
exec.reset();
} catch (ModelException me) {
throw new IllegalArgumentException("Provided SCXMLExecutor "
+ "instance cannot be reset.");
}
TransitionTarget active = (TransitionTarget) exec.getStateMachine().
getTargets().get(id);
if (active == null) {
throw new IllegalArgumentException("No target with id '" + id
+ "' present in state machine.");
}
Set current = exec.getCurrentStatus().getStates();
current.clear();
current.add(active);
}