[rules-users] question about updating main memory

Senlin Liang senlin.liang at gmail.com
Mon Jul 7 14:22:08 EDT 2008


Hi Jarek,

Thanks a lot. It works now.

Senlin

On Mon, Jul 7, 2008 at 12:41 PM, Jaroslaw Kijanowski
<kijanowski at gmail.com> wrote:
> What I'm missing is an import statement in your drl file (import
> tests.Test.ClassP;).
> Everything else looks correct and should give the expected results
> (ResultSize = 5).
>
> Cheers,
>  Jarek
>
> Senlin Liang wrote:
>>
>> Hi all,
>>
>> I am trying to insert some object, querying them and the retract them.
>> My question, when I query the inserted objects using defined "query",
>> it return 0 objects. But when I iterate over all objects in WM, the
>> objects are returned.
>>
>> Any information is appreciated!
>>
>> Files:
>> ===================test.drl====================
>> package tests;
>> query "selectQuery"
>>      p : ClassP()
>> end
>> ==================end of test.drl================
>>
>> ==================Test.java====================
>> package tests;
>>
>> import java.io.*;
>> import java.io.InputStreamReader;
>> import org.drools.RuleBase;
>> import org.drools.RuleBaseFactory;
>> import org.drools.StatefulSession;
>> import org.drools.compiler.PackageBuilder;
>> import org.drools.QueryResult;
>> import org.drools.QueryResults;
>> import org.drools.FactHandle;
>> import java.util.Iterator;
>>
>> public class Test {
>>    public static void main (String args[]) {
>>        try {
>>            Reader source = new
>> InputStreamReader(Test.class.getResourceAsStream("../test.drl"));
>>            final PackageBuilder builder = new PackageBuilder();
>>            builder.addPackageFromDrl(source);
>>            if (builder.hasErrors()) {
>>                System.out.println(builder.getErrors().toString());
>>                System.exit(0);
>>            }
>>            final RuleBase ruleBase = RuleBaseFactory.newRuleBase();
>>            ruleBase.addPackage(builder.getPackage());
>>            final StatefulSession session = ruleBase.newStatefulSession();
>>
>>            System.out.println("Inserting objects ...");
>>            for (int i = 0; i < 5; i ++) {
>>                session.insert(new ClassP(1, i));
>>            }
>>
>>            System.out.println("Querying objects ...");
>>            QueryResults results = session.getQueryResults("selectQuery");
>>            System.out.println("ResultSize = " + results.size());
>>
>>  /***************************************************************************************
>>             Here, it reports results.size() is 0, and there should be
>> 5 objects in WM right now. It is
>>             the place I got the question.
>>
>>             I have no idea whether I am using the "query" correctly.
>> Anything wrong?
>>
>>  ***************************************************************************************/
>>            for (Iterator it = results.iterator(); it.hasNext(); ) {
>>                final QueryResult result = (QueryResult) it.next();
>>                ClassP p = (ClassP) result.get("p");
>>                System.out.println("p(" + p.getFirst() + ", " +
>> p.getSecond()+")");
>>            }
>>
>>            System.out.println("Deleting ...");
>>            for (Iterator it = session.iterateFactHandles(); it.hasNext();
>> ) {
>>                FactHandle factHandle = (FactHandle) it.next();
>>                ClassP p = (ClassP) session.getObject(factHandle);
>>                System.out.println("p(" + p.getFirst() + ", " +
>> p.getSecond()+")");
>>                session.retract(factHandle);
>>            }
>>
>>  /***************************************************************************************
>>             Here, it prints out: it is deleting p(1, 1), ... p(1, 5).
>>             It verifies that there are the 5 objects inserted.
>>
>>  ***************************************************************************************/
>>
>>            session.dispose();
>>        } catch (Exception e) {
>>            System.out.println(e);
>>            System.exit(0);
>>        }
>>    }
>>
>>    public static class ClassP {
>>        private int first;
>>        private int second;
>>        public ClassP() {}
>>        public ClassP(int firstIn, int secondIn) {
>>            this.first  = firstIn;
>>            this.second = secondIn;
>>        }
>>        public int getFirst() {
>>            return this.first;
>>        }
>>        public int getSecond() {
>>            return this.second;
>>        }
>>    }
>> }
>> ========================end of Test.java=====================
>>
>> Thanks a lot,
>>
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>



-- 
Senlin Liang



More information about the rules-users mailing list