2013-02-22 9 views

Antwort

4

Anstelle der getObjects() -Methode können Sie eine Abfrage verwenden. Abfragen sind wie Regeln ohne RHS:

query "getObjectsOfClassA" 
    $result: ClassA() 
end 

können Sie verwenden, um alle die Macht der DRL Sprache innerhalb Ihrer Anfragen wirklich komplexe Anpassungsmuster zu erstellen. Sie können sogar zu Argumente auf Anfragen übergeben: http://docs.jboss.org/drools/release/5.5.0.Final/drools-expert-docs/html_single/#d0e7632

Dann in Ihrem Java-Code, können Sie Ihre Abfrage aufrufen mit:

QueryResults results = ksession.getQueryResults("getObjectsOfClassA"); 
for (QueryResultsRow row : results) { 
    ClassA classA = (ClassA) row.get("$result"); //you can retrieve all the bounded variables here 
    //do whatever you want with classA 
} 

Wenn Sie die Menge aller KlasseA benötigen Sie eine accumulate Funktion können Sie in Ihre Anfrage.

Hoffe, dass es hilft,

5

Sie eine Object

Collection<Object> myfacts = session.getObjects(new ClassObjectFilter(MyFact.class)); 

Leider wie erwartet enthält das nutzen könnten nicht funktioniert in Drools 5.5.0 Finale, das resultierende Erfassungsmethode. In der Regel gibt eine contains-Methode true zurück, wenn das gesuchte Objekt in der Sammlung gleich ist, aber Drools Sammlung nur Objekte findet, die denselben Bezug haben (es verwendet ==, um Objekte zu vergleichen).

Verwandte Themen