[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