0

議題グループがない場合、よだれは正常に機能していますが、フォーカスを設定すると、次のエラーが発生します。

package drools;

import droolsexec.Message;
import droolsexec.Customer;


rule "Good Bye"
agenda-group "group1"
  dialect "java"

when


 message: Message( status =="GOODBYE" )
 customer: Customer(name == "NEHA")

then
  System.out.println( message.getStatus()); 
end

これは私のルールであり、次の方法で実行しています。

public class ExecuteDrools {

private static PackageBuilder pbuilder = new PackageBuilder();
private static StatefulSession sessionObject;   
private static RuleBase rbase = RuleBaseFactory.newRuleBase();

public  void runDrools(ArrayList list){

    initialiseDrools();
    initiliseMessageObject(list);
    runRules();     

}



private  void initialiseDrools() {


    //1. Read the DRL File and add to package builder
    try {
        Reader reader = new InputStreamReader(ExecuteDrools.class.getResourceAsStream("/HelloWorld.drl"));

        pbuilder.addPackageFromDrl(reader);
    } catch (DroolsParserException ex) {
        Logger.getLogger(ExecuteDrools.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(ExecuteDrools.class.getName()).log(Level.SEVERE, null, ex);
    }

    //2. Check for any errors
    PackageBuilderErrors errors = pbuilder.getErrors(); 
    if (errors.getErrors().length > 0) {
        System.out.println("Some errors exists in packageBuilder");
        for (int i = 0; i < errors.getErrors().length; i++) {
            System.out.println(errors.getErrors()[i]);
        }
        throw new IllegalArgumentException("Could not parse knowledge.");
    }
    //3. Add package to rule base
    try {
        rbase.addPackage(pbuilder.getPackage());
    } catch (Exception e) {
        System.out.println("Error: "+ e);
    }


}

private   void initiliseMessageObject(ArrayList list) {
    sessionObject = rbase.newStatefulSession();
    Iterator itr = list.iterator();
    while(itr.hasNext()){
        sessionObject.insert(itr.next());
    }
}


private  void runRules() {
    sessionObject.getAgenda().getAgendaGroup("group2").setFocus(); 
    sessionObject.fireAllRules();
}

}

次のエラーが表示されます。

スレッド「メイン」での例外 java.lang.UnsupportedOperationException org.drools.common.BinaryHeapQueueAgendaGroup.setFocus(BinaryHeapQueueAgendaGroup.java:156) で droolsexec.ExecuteDrools.runRules(ExecuteDrools.java:83) で droolsexec.ExecuteDrools.runDrools(ExecuteDrools. java:36) droolsexec.MainClass.executeRules(MainClass.java:23) で droolsexec.MainClass.main(MainClass.java:9) で

4

1 に答える 1

0

drl ファイルに議題グループ group2 がありません... グループ 1 という名前が付けられています

于 2014-10-23T14:37:35.150 に答える