<div dir="ltr">Hello Edson,<br><br>thank you for your support.<br><br>Your suggestions work very well.<br><br>In my case the "Compound Value Restriction" is exactly what I was looking for.<br><br>This is the way I will use it in my domain:<br>
<br>a : Abbreviation( pos1 == 'A' && ( pos2 not in ('-','D','H') || pos3 != '-' || pos4 not in ('O', 'R', 'U', 'L')) )<br><br>Thank you very much.<br>
<br>Cheers Pete<br><br><div class="gmail_quote">On Tue, Jul 29, 2008 at 5:15 PM, Edson Tirelli <span dir="ltr"><<a href="mailto:tirelli@post.com">tirelli@post.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br> If you have each character in a different attribute, you can use "in" and "not in" to list the valid/invalid characters:<br><br> a : Abbreviation( pos1 == 'A', pos2 in ('-','D','H'), pos3 == '-', pos4 in ('O', 'R', 'U', 'L') )<br>
a : Abbreviation( pos1 == 'A', pos2 not in ('-','D','H'), pos3 != '-', pos4 not in ('O', 'R', 'U', 'L') )<br>
<br> Also, if you have a String storing the sequence of characters you are using, you can use "matches" and "not matches" with appropriate regexps:<br><br> a : Abbreviation( stringRepresentation matches "A[-DH]-[ORUL]" )<br>
a : Abbreviation( stringRepresentation not matches "A[-DH]-[ORUL]" )<br>
<br> Cheers,<br> Edson<br><br><div class="gmail_quote">2008/7/28 Pete Crenshaw <span dir="ltr"><<a href="mailto:Pete.Crenshaw@gmx.de" target="_blank">Pete.Crenshaw@gmx.de</a>></span><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">
<div dir="ltr">Hello Droolers,<br><br>I'm a Drools novice and I'm stuck with a basic rule problem.<br><br>In my domain I use a list of abbreviations to describe the conditions of a system.<br>Before I can check the state of my system I have to verify all applied abbreviations.<br>
<br>The List of abbreviations is not a fixed list it's more like a combination of chars, combined in different ways on fixed positions.<br><br>This is a small cutout:<br><br>A cutout of possible chars at Position 1: A B C D F H<br>
A cutout of possible chars at Position 2: - A C s n b<br>A cutout of possible chars at Position 3: - A B E F M<br>A cutout of possible chars at Position 4: - H L O R U<br><br>Now it is allowed to combine the following abbreviations:<br>
(another small cutout)<br><br>A--O A--R A--U A--L<br>BAAO BAAR BAAU BAAL<br><br>but it is not allowed to combine this:<br><br>AA** B-** (* stands for all possible chars on a position)<br><br>Now I have 2 basic Questions:<br>
<br>1) How can I pick abbreviations that are NOT allowed?<br> I think it's easy to say:<br><br> rule "Rule 1"<br> when<br> a : Abbreviation( pos1 == 'A', pos2 == '-', pos3 == '-', pos4 == 'O' )<br>
then<br> # do something positiv<br> end<br><br> But how can I pick up all the wrong combinations without hardcoding them?<br> This would end up in a never-ending story.<br><br>2) Upgrading the "Rule 1" from my 1st Question I'm looking for a way to make the<br>
Rules more generic.<br> I don't want to hardcode all possible abbreviation combinations.<br> How can I realise something like this VERY INFORMAL notation:<br><br> rule "Rule 2"<br> when<br> a : Abbreviation( pos1 == 'A', pos2 == ['-','D','H'], pos3 == '-', pos4 == ['O', 'R', 'U', 'L'] )<br>
# If abbreviation looks like A--O, AD-O, AD-U, AH-R, etc. everything is fine.<br> # It's time for "Rule 2" to do something positiv<br> then<br> # do something positiv<br> end<br><br> "Rule 2" should find all the abbreviations that are build up according to a set of allowed char combinations.<br>
<br> OR<br><br> rule "Rule 3"<br> when<br> a : Abbreviation( pos1 == 'A', pos2 != ['-','D','H'], pos3 != '-', pos4 != ['O', 'R', 'U', 'L'] )<br>
# If abbreviation looks like AA-O, AB-U, A-AO, A--K, etc. something is wrong.<br> # It's time for "RULE 3" to announce something negative<br> then<br> # announce something negative<br> end<br>
<br> "Rule 3" should filter all the abbreviations that are violating a set of allowed char combinations.<br><br>Thanx 2 all droolers in advance.<br><font color="#888888"><br>Pete</font></div>
<br></div></div>_______________________________________________<br>
rules-users mailing list<br>
<a href="mailto:rules-users@lists.jboss.org" target="_blank">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> Edson Tirelli<br> JBoss Drools Core Development<br> JBoss, a division of Red Hat @ <a href="http://www.jboss.com" target="_blank">www.jboss.com</a><br>
</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></div>