Maybe you can define a global List so you would not need to add it as a Fact:<div><br></div><div><br></div><div><div><font color="#990000"><b>package com.test.drools</b></font></div><div><font color="#990000"><b> </b></font></div>

<div><font color="#990000"><b>import com.test.drools.Facts.FileType;</b></font></div><div><font color="#990000"><b><br></b></font></div><div><font color="#990000"><b>global java.util.List allowedExtensions;</b></font></div>

<div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>rule &quot;Filter File Types&quot;</b></font></div><div><span style="white-space: pre; "><font color="#990000"><b>        </b></font></span></div><div>

<span style="white-space: pre; "><font color="#990000"><b>        </b></font></span><font color="#990000"><b>when</b></font><span class="Apple-style-span" style="color: rgb(153, 0, 0); "><b>               <span style="background-color: rgb(255, 255, 0); "> </span></b></span></div>

<div><span style="white-space: pre; "><font color="#990000"><b>                </b></font></span><font color="#990000"><b>FileType( type memberOf <span class="Apple-style-span" style="font-weight: normal; "><b>allowedExtensions</b></span> )</b></font></div>

<div><span style="white-space: pre; "><font color="#990000"><b>        </b></font></span><font color="#990000"><b>then</b></font></div><div><span style="white-space: pre; "><font color="#990000"><b>                </b></font></span><font color="#990000"><b>System.out.println(&quot;ALLOW&quot;);</b></font></div>

<div><font color="#990000"><b>end</b></font></div></div><div><br></div><div>You will need to set the global list before inserting any Fact: ksession.setGlobal(&quot;allowedExtensions&quot;,somePrePopulatedList);</div><div>

<br></div><div>Best,</div><div><br><br><div class="gmail_quote">2010/5/9 eyal edri <span dir="ltr">&lt;<a href="mailto:eyal.edri@gmail.com">eyal.edri@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<div dir="ltr">Hi,<div><br></div><div>sorry for the newbi question, i&#39;m just starting to find my way in Drools.</div><div><br></div><div>i want to  write a rule that filters URLs with a certain suffix (e.g. jpg, gif, css, etc...).</div>



<div><br></div><div>i read about global vars and other variables and i&#39;m not sure what to do.</div><div><br></div><div>i need to create a List with all the suffixes i want to filter, should i create it inside FileType? </div>



<div><br></div><div>can you help?</div><div><br></div><div>Eyal.</div><div>-------------------------------------------</div><div><br></div><div>here&#39;s why i had so far:</div><div><br></div><div><br></div><div>the .drl file:</div>



<div><br></div><div><div><font color="#990000"><b>package com.test.drools</b></font></div><div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>import com.test.drools.Facts.FileType;</b></font></div>



<div><font color="#990000"><b><br></b></font></div><div><font color="#990000"><b> </b></font></div><div><font color="#990000"><b>rule &quot;Filter File Types&quot;</b></font></div>

<div><span style="white-space:pre"><font color="#990000"><b>        </b></font></span></div><div><span style="white-space:pre"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>when</b></font></div>

<div><font color="#990000"><b>               <span style="background-color:rgb(255, 255, 0)"> $fileTypes : ??? </span></b></font></div><div><span style="white-space:pre"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>FileType( type memberOf $fileTypes )</b></font></div>



<div><span style="white-space:pre"><font color="#990000"><b>        </b></font></span><font color="#990000"><b>then</b></font></div><div><span style="white-space:pre"><font color="#990000"><b>                </b></font></span><font color="#990000"><b>System.out.println(&quot;ALLOW&quot;);</b></font></div>



<div><font color="#990000"><b>end</b></font></div><div><br></div><div>here&#39;s FileType:</div><div><br></div><div><div><span style="font-size:x-small">package com.commtouch.drools;</span></div>

<div><span style="font-size:x-small"><br></span></div><div><span style="font-size:x-small">import java.net.*;</span></div><div><span style="font-size:x-small">import java.util.regex.Matcher;</span></div>

<div><span style="font-size:x-small">import java.util.regex.Pattern;</span></div><div><span style="font-size:x-small"><br></span></div><div><span style="font-size:x-small">public class Facts {</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">// return a file type of a url</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">public static class FileType {</span></div>

<div><span style="font-size:x-small"><br></span></div><div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">private String type = &quot;html&quot;;</span></div>



<div><span style="font-size:x-small"><br></span></div><div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">public FileType (URL url) {</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">// get the path from the url</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">//TODO: use parser to do it?</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">String path = url.getPath();</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">if (path != null) {</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                </span></span><span style="font-size:x-small">// define regex to extract file from path</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                </span></span><span style="font-size:x-small">Pattern fileRegex = Pattern.compile(&quot;([^/]+)$&quot;);</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                </span></span><span style="font-size:x-small">Matcher fileMatcher = fileRegex.matcher(path);</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">// get regex capure $1 (filename)</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                                </span></span><span style="font-size:x-small">String file = null;</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">while (fileMatcher.find()) </span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small"> file = fileMatcher.group(1);</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">String suffix = null;</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">if (file != null)</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">{</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">//try to extract suffix from file</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">Pattern suffixRegex = Pattern.compile(&quot;\\.([^\\.]+)$&quot;);</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                                        </span></span><span style="font-size:x-small">Matcher suffixMatcher = suffixRegex.matcher(file);</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                        </span></span><span style="font-size:x-small">while (suffixMatcher.find()) </span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small"> suffix = suffixMatcher.group(1);</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                                        </span></span><span style="font-size:x-small">//verify that the suffix is a valid suffix </span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                        </span></span><span style="font-size:x-small">if (suffix != null &amp;&amp; (suffix.length()&gt; 1 &amp;&amp; suffix.length() &lt; 6))</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                                                        </span></span><span style="font-size:x-small">setType(suffix);</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">    </span><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">}</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">}</span></div><div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">}</span></div><div><span style="font-size:x-small"><br>

</span></div><div><span style="white-space:pre"><span style="font-size:x-small">        </span></span></div><div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">public void setType(String type) {</span></div>



<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">this.type = type;</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">}</span></div><div><span style="white-space:pre"><span style="font-size:x-small">                </span></span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">public String getType() {</span></div>

<div><span style="white-space:pre"><span style="font-size:x-small">                        </span></span><span style="font-size:x-small">return type;</span></div><div>

<span style="white-space:pre"><span style="font-size:x-small">                </span></span><span style="font-size:x-small">}</span></div><div><span style="white-space:pre"><span style="font-size:x-small">        </span></span><span style="font-size:x-small">}</span></div>



<div><span style="font-size:x-small">}</span></div></div><div><br></div><div><br>-- <br>Eyal Edri<br>
</div></div></div>
<br>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org">rules-users@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/rules-users" target="_blank">https://lists.jboss.org/mailman/listinfo/rules-users</a><br>
<br></blockquote></div><br><br clear="all"><br>-- <br>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<br><br>Esteban Aliverti<br>
</div>