JPL-Java等待来自序言查询的特定解决方案

时间:2018-11-09 19:09:19

标签: java prolog swi-prolog jpl

我正在努力做到这一点。我有一个Java用户界面,该界面使用JPL prolog控制系统。

首先,我运行一个简单的查询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(_))");
}

我如何才能使其正常工作?

0 个答案:

没有答案