JPL - Java ждет определенного решения из запроса пролога - PullRequest
0 голосов
/ 09 ноября 2018

Я изо всех сил пытаюсь сделать это. У меня есть пользовательский интерфейс на Java, который управляет системой с использованием JPL, пролог.

Сначала я запускаю простой запрос assert(goal( work_1 )). Когда процесс завершен, он просто утверждает done( work_1 ). Для обработки следующей цели goal( do(work_2 ) я должен дождаться факта done( work_1 ).

for (String s : t) {

    runQuery("assert(goal(" + s + "))"); //start process

    //
    // Here the User Interface should block until done(A) and A == s
    //

    while (!active) {
        Map<String, Term>[] Q = Query.allSolutions("done(Goal)");
        for (Map<String, Term> sol : Q) {
            String str = "" + sol.get("Goal");
            if (str.equals(s)) {
                active = false;
        }
    }

    runQuery("retract(done(_))");
}

Как я могу заставить это работать правильно?

...