hello
first thank you for your help.
But I don't know how declare the wariable.
workingMemory.setGlobal("L", new java.util.List());
the code used to execute my rule is :

  public List fireRules(List dataObjects, InputStream rules) throws Exception {     
    // obtain the rule service provider
            RuleServiceProviderManager.registerRuleServiceProvider(
         "org.drools.jsr94.rules.RuleServiceProviderImpl",
         org.drools.jsr94.rules.RuleServiceProviderImpl.class);
         RuleServiceProvider service =
         RuleServiceProviderManager.getRuleServiceProvider(
         "org.drools.jsr94.rules.RuleServiceProviderImpl");       
    // load the rule adminstrator 
        RuleAdministrator admin = service.getRuleAdministrator();  
    // load the rules and register them  
         RuleExecutionSet res1 =
         admin.getLocalRuleExecutionSetProvider( null ).
         createRuleExecutionSet( rules, null );
         rules.close();      
         String bindUri = "res:://sample.drl";
         admin.registerRuleExecutionSet(bindUri, res1, null);  
    // obtain a rule runtime object from the rule service provider  
         RuleRuntime runtime = service.getRuleRuntime(); 
   // create a stateless object from the Rule Runtime      
         StatelessRuleSession session = (StatelessRuleSession)
         runtime.createRuleSession(bindUri, null, RuleRuntime.STATELESS_SESSION_TYPE);   
         List resultRules = session.executeRules(dataObjects);
    //session.
         session.release();
     //    workingMemory.setGlobal("L", new java.util.List());       
         return resultRules;
    }
please help me,
best regards
Ismail

Scott Reed <sreed@spamcop.net> a écrit :
fakhfakh ismail's message received 5/14/2007 3:48 PM:
> Hello,
> first sorry for my bad english.
> I want to declare a variable of type List
>
> rule "userrole"
>
> when
> $user1: User (userid1: userId)
> $user2: User (userId == userid1)
> then
> List L = new ArrayList();
> if (L.contains($user1.getname())== false)
> {
> L.add($user1.getname());
> System.out.println("hello");
> }
> end
>
> the problem is everytime the List don't save all element every execution
> the variable list is intialised as empty is there other place to
> declare List?
> (I try after when but error of parsing)

You need to declare the List in your Java code, set it as a Drools global, and declare it in the DRL
file:

In yourjava.java:
-----------
workingMemory.setGlobal("L", new java.util.List());
-----------

in yourdrl.drl:
-----------
global java.util.List L;

rule "userrole"

when
$user1: User (userid1: userId)
$user2: User (userId == userid1)
then
if (L.contains($user1.getname())== false)
{
L.add($user1.getname());
System.out.println("hello");
}
end
-----------

Wouldn't it be great to have a "static" section in the DRL syntax for temporaries like this?
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users


Ne gardez plus qu'une seule adresse mail ! Copiez vos mails vers Yahoo! Mail