[rules-users] how to create a list obj for a rule using 'memberOf'
Esteban Aliverti
esteban.aliverti at gmail.com
Sun May 9 18:10:48 EDT 2010
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20100509/91de281f/attachment.html
More information about the rules-users
mailing list