[rules-users] how to create a list obj for a rule using 'memberOf'

eyal edri eyal.edri at gmail.com
Mon May 10 03:25:24 EDT 2010


Thanks!

I've found another way by using 'matches'. though i don't know which one
is preferable (performance speaking..).

rule "Filter File Types"
 salience 100 // priority
when
 FileType( type matches "(ico|gif|jpg|mov|wmv|jpeg|css|bmp|avi|swf|png)" )
 then
//TODO: change to actual action
 System.out.println("ALLOW");
end


2010/5/10 Esteban Aliverti <esteban.aliverti at gmail.com>

> Maybe you can define a global List so you would not need to add it as a
> Fact:
>
>
> *package com.test.drools*
> * *
> *import com.test.drools.Facts.FileType;*
> *
> *
> *global java.util.List allowedExtensions;*
>  * *
> *rule "Filter File Types"*
> * *
> * **when**                *
> * **FileType( type memberOf allowedExtensions )*
> * **then*
> * **System.out.println("ALLOW");*
> *end*
>
> You will need to set the global list before inserting any Fact:
> ksession.setGlobal("allowedExtensions",somePrePopulatedList);
>
> Best,
>
>
> 2010/5/9 eyal edri <eyal.edri at gmail.com>
>
>>  Hi,
>>
>> sorry for the newbi question, i'm just starting to find my way in Drools.
>>
>> i want to  write a rule that filters URLs with a certain suffix (e.g. jpg,
>> gif, css, etc...).
>>
>> i read about global vars and other variables and i'm not sure what to do.
>>
>> i need to create a List with all the suffixes i want to filter, should i
>> create it inside FileType?
>>
>> can you help?
>>
>> Eyal.
>> -------------------------------------------
>>
>> here's why i had so far:
>>
>>
>> the .drl file:
>>
>> *package com.test.drools*
>> * *
>> *import com.test.drools.Facts.FileType;*
>> *
>> *
>> * *
>> *rule "Filter File Types"*
>> * *
>> * **when*
>> *                $fileTypes : ??? *
>> * **FileType( type memberOf $fileTypes )*
>> * **then*
>> * **System.out.println("ALLOW");*
>> *end*
>>
>> here's FileType:
>>
>> package com.commtouch.drools;
>>
>> import java.net.*;
>> import java.util.regex.Matcher;
>> import java.util.regex.Pattern;
>>
>> public class Facts {
>>  // return a file type of a url
>>  public static class FileType {
>>
>> private String type = "html";
>>
>> public FileType (URL url) {
>>  // get the path from the url
>>  //TODO: use parser to do it?
>>  String path = url.getPath();
>>  if (path != null) {
>>  // define regex to extract file from path
>>  Pattern fileRegex = Pattern.compile("([^/]+)$");
>>  Matcher fileMatcher = fileRegex.matcher(path);
>>      // get regex capure $1 (filename)
>>  String file = null;
>>      while (fileMatcher.find())
>>      file = fileMatcher.group(1);
>>
>>      String suffix = null;
>>      if (file != null)
>>      {
>>      //try to extract suffix from file
>>      Pattern suffixRegex = Pattern.compile("\\.([^\\.]+)$");
>>  Matcher suffixMatcher = suffixRegex.matcher(file);
>>  while (suffixMatcher.find())
>>      suffix = suffixMatcher.group(1);
>>  //verify that the suffix is a valid suffix
>>  if (suffix != null && (suffix.length()> 1 && suffix.length() < 6))
>>  setType(suffix);
>>      }
>>  }
>>  }
>>
>>  public void setType(String type) {
>>  this.type = type;
>>  }
>>  public String getType() {
>>  return type;
>>  }
>> }
>> }
>>
>>
>> --
>> Eyal Edri
>>
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>
>
> --
> XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
>
> Esteban Aliverti
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
>


-- 
Eyal Edri
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100510/38bb681a/attachment.html 


More information about the rules-users mailing list