У меня есть класс Agent с агентом для выполнения каких-либо действий и логической переменной stati c в классе, когда агент начинает выполнение, функция открывает форму в браузере, а затем ждет al oop для этой переменной изменяется ... эта переменная изменяется в классе контроллера, когда завершается sh форма с сообщением, но я не вижу значения в агенте .. оно никогда не выходит из l oop.
это класс агента
public class AgentInput extends AgentBase {
private static final long serialVersionUID = 1L;
public static final String NICKNAME = "Form";
//public static Form formAux=new Form();
public static boolean ready;
public void setup() {
super.setup();
System.out.println("Agent 1");
this.type=AgentModel.AGENT1;
registerAgentDF();
addBehaviour(new openForm());
}
public static class openForm extends OneShotBehaviour{
private static final long serialVersionUID = 1L;
@Override
public void action() {
try {
URI homepage = new URI("http://localhost:8080/form");
Runtime runtime = Runtime.getRuntime();
runtime.exec("open " + homepage);
} catch (URISyntaxException | IOException e) {
e.printStackTrace();
}
while (true) {
System.out.println("\tSleep for 1 sec ... value is: "+AgentInput.ready);
if(AgentInput.ready) {
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
и это другой контроллер класса
@Controller
public class ControllerForm {
@GetMapping("/form")
public String index(Form form) {
return "formIndex";
}
@PostMapping("/form")
public void exit(Form form) {
AgentInput.ready=true;// here modify the variable
System.out.println("now the value of ready is : " + AgentInput.ready); // print true
}
}
Когда завершается sh форма в пост-контроллере, я устанавливаю переменную в значение true, но в классе агента это никогда не правда .. почему ?? Итак, проблема в том, что мне нужно указать агенту любой способ, когда я завершаю sh, или передавая объект «Форма», когда я завершаю sh заполнение формы в Интернете.
Любая идея решить это? заранее спасибо !!