从Optaplanner解决方案中检索drools工作内存

从Optaplanner解决方案中检索drools工作内存,drools,optaplanner,drools-guvnor,drools-planner,Drools,Optaplanner,Drools Guvnor,Drools Planner,当在解决约束时使用drl文件时,可以使用insertLogical(),它只在drools工作内存中插入事实,并且在解决方案完成之前不能收回(对于该insertLogical(),LHS永远保持为真)。当我们从Optaplanner的solver.solve()中获得解决方案时,我们会收到自己的解决方案类选项,如Nurservester、CloudBalance。但我怎样才能找回那些留在流涎工作记忆中的事实,直到我的解决方案保留下来,这样我才能看到是什么导致了解决方案 我要找的东西是: solv

当在解决约束时使用drl文件时,可以使用
insertLogical()
,它只在drools工作内存中插入事实,并且在解决方案完成之前不能收回(对于该
insertLogical()
,LHS永远保持为真)。当我们从Optaplanner的
solver.solve()
中获得解决方案时,我们会收到自己的解决方案类选项,如Nurservester、CloudBalance。但我怎样才能找回那些留在流涎工作记忆中的事实,直到我的解决方案保留下来,这样我才能看到是什么导致了解决方案

我要找的东西是:

solver.solve(nurseRoster);
scoreDirector.getDroolsWorkingMemory().getNotRetractedFacts()

感谢您的帮助。谢谢

解决方案处理后,工作内存不可用,但是请以这种方式使用
scoreDirector
从活动会话中检索工作内存:

    solver.getScoreDirectorFactory().buildScoreDirector()    
    director=(DroolsScoreDirector<Solution>)((DefaultSolver)solver).getSolverScope().getScoreDirector();
    LegacyDroolsScoreDirectorFactory<TaskPlanningSolution> scoreDirectorFactory = (LegacyDroolsScoreDirectorFactory)director.getScoreDirectorFactory();
    KnowledgeBaseImpl kbase=(KnowledgeBaseImpl)scoreDirectorFactory.getKieBase();//.newKieSession();
    InternalWorkingMemory internalWorkingMemory =((StatefulKnowledgeSessionImpl)kbase.getWorkingMemories()[0]).getInternalWorkingMemory();
solver.getScoreDirectorFactory().buildScoreDirector()
控制器=(DroolsScoreDirector)((DefaultSolver)解算器.getSolverScope().getScoreDirector();
LegacyDroolsScoreDirectorFactory scoreDirectorFactory=(LegacyDroolsScoreDirectorFactory)director.getScoreDirectorFactory();
KnowledgeBaseImpl kbase=(KnowledgeBaseImpl)scoreDirectorFactory.getKieBase();/。newKieSession();
InternalWorkingMemory InternalWorkingMemory=((StatefulKnowledgeSessionImpl)kbase.GetWorkingMemory()[0]).getInternalWorkingMemory();

解决方案处理后,工作内存不可用,但请以这种方式使用
scoreDirector
从活动会话中检索工作内存:

    solver.getScoreDirectorFactory().buildScoreDirector()    
    director=(DroolsScoreDirector<Solution>)((DefaultSolver)solver).getSolverScope().getScoreDirector();
    LegacyDroolsScoreDirectorFactory<TaskPlanningSolution> scoreDirectorFactory = (LegacyDroolsScoreDirectorFactory)director.getScoreDirectorFactory();
    KnowledgeBaseImpl kbase=(KnowledgeBaseImpl)scoreDirectorFactory.getKieBase();//.newKieSession();
    InternalWorkingMemory internalWorkingMemory =((StatefulKnowledgeSessionImpl)kbase.getWorkingMemories()[0]).getInternalWorkingMemory();
solver.getScoreDirectorFactory().buildScoreDirector()
控制器=(DroolsScoreDirector)((DefaultSolver)解算器.getSolverScope().getScoreDirector();
LegacyDroolsScoreDirectorFactory scoreDirectorFactory=(LegacyDroolsScoreDirectorFactory)director.getScoreDirectorFactory();
KnowledgeBaseImpl kbase=(KnowledgeBaseImpl)scoreDirectorFactory.getKieBase();/。newKieSession();
InternalWorkingMemory InternalWorkingMemory=((StatefulKnowledgeSessionImpl)kbase.GetWorkingMemory()[0]).getInternalWorkingMemory();