как получить реальное значение переменной в действии JADE Agent? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть класс 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 заполнение формы в Интернете.

Любая идея решить это? заранее спасибо !!

...