[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