[rules-users] how to create a list obj for a rule using 'memberOf'
Greg Barton
greg_barton at yahoo.com
Mon May 10 10:37:34 EDT 2010
If you want to restrict to a series of literals you might check if the "in" operator is faster:
rule "Filter File
Types"
salience 100 // priority when
FileType( type in ("ico","gif","jpg","mov","wmv","jpeg","css","bmp","avi","swf","png") )
then //TODO: change to actual action
System.out.println("ALLOW");
end
I don't know if "in" is hashed behind the scenes, but if it is it probably would be much faster, especially because I think mvel recompiles the regex behind the scenes before each evaluation. (A dev please correct me if I'm wrong on that last point.)
--- On Mon, 5/10/10, eyal edri <eyal.edri at gmail.com> wrote:
From: eyal edri <eyal.edri at gmail.com>
Subject: Re: [rules-users] how to create a list obj for a rule using 'memberOf'
To: "Rules Users List" <rules-users at lists.jboss.org>
Date: Monday, May 10, 2010, 2:25 AM
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
-----Inline Attachment Follows-----
_______________________________________________
rules-users mailing list
rules-users at lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100510/909b1fc9/attachment.html
More information about the rules-users
mailing list