[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