<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns:p="urn:schemas-microsoft-com:office:powerpoint" xmlns:a="urn:schemas-microsoft-com:office:access" xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882" xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882" xmlns:rs="urn:schemas-microsoft-com:rowset" xmlns:z="#RowsetSchema" xmlns:b="urn:schemas-microsoft-com:office:publisher" xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet" xmlns:c="urn:schemas-microsoft-com:office:component:spreadsheet" xmlns:odc="urn:schemas-microsoft-com:office:odc" xmlns:oa="urn:schemas-microsoft-com:office:activation" xmlns:html="http://www.w3.org/TR/REC-html40" xmlns:q="http://schemas.xmlsoap.org/soap/envelope/" xmlns:rtc="http://microsoft.com/officenet/conferencing" xmlns:D="DAV:" xmlns:Repl="http://schemas.microsoft.com/repl/" xmlns:mt="http://schemas.microsoft.com/sharepoint/soap/meetings/" xmlns:x2="http://schemas.microsoft.com/office/excel/2003/xml" xmlns:ppda="http://www.passport.com/NameSpace.xsd" xmlns:ois="http://schemas.microsoft.com/sharepoint/soap/ois/" xmlns:dir="http://schemas.microsoft.com/sharepoint/soap/directory/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:dsp="http://schemas.microsoft.com/sharepoint/dsp" xmlns:udc="http://schemas.microsoft.com/data/udc" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:sub="http://schemas.microsoft.com/sharepoint/soap/2002/1/alerts/" xmlns:ec="http://www.w3.org/2001/04/xmlenc#" xmlns:sp="http://schemas.microsoft.com/sharepoint/" xmlns:sps="http://schemas.microsoft.com/sharepoint/soap/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:udcs="http://schemas.microsoft.com/data/udc/soap" xmlns:udcxf="http://schemas.microsoft.com/data/udc/xmlfile" xmlns:udcp2p="http://schemas.microsoft.com/data/udc/parttopart" xmlns:wf="http://schemas.microsoft.com/sharepoint/soap/workflow/" xmlns:dsss="http://schemas.microsoft.com/office/2006/digsig-setup" xmlns:dssi="http://schemas.microsoft.com/office/2006/digsig" xmlns:mdssi="http://schemas.openxmlformats.org/package/2006/digital-signature" xmlns:mver="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns:mrels="http://schemas.openxmlformats.org/package/2006/relationships" xmlns:spwp="http://microsoft.com/sharepoint/webpartpages" xmlns:ex12t="http://schemas.microsoft.com/exchange/services/2006/types" xmlns:ex12m="http://schemas.microsoft.com/exchange/services/2006/messages" xmlns:pptsl="http://schemas.microsoft.com/sharepoint/soap/SlideLibrary/" xmlns:spsl="http://microsoft.com/webservices/SharePointPortalServer/PublishedLinksService" xmlns:Z="urn:schemas-microsoft-com:" xmlns:st="" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 12 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
span.text-cell
        {mso-style-name:text-cell;}
span.EmailStyle19
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle20
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle21
        {mso-style-type:personal;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
span.EmailStyle22
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=EN-US link=blue vlink=purple>
<div class=WordSection1>
<p class=MsoNormal><span style='color:#1F497D'>Thanks Thomas. I will give your
suggestions a try.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Based on my current code, is
there a reason why Rule 2 doesn’t fire? I’m assuming Rule 1 should only fire
once with “lock-on-active true” set correct? There should be at least one A left
after Rule 1 is done (i.e. A with property = 345).<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Justin<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] <b>On Behalf Of </b>Swindells,
Thomas<br>
<b>Sent:</b> Wednesday, July 21, 2010 8:51 AM<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Rules not firing when expected after
retracting object in list<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'>No the rule is run
multiple times, once per a matching A.<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'>If you did only want
the rule to run once regardless of how many matching As you have then you would
use exists:<o:p></o:p></span></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><span class=text-cell>Exists A(
property == "123" )</span><span lang=EN-GB style='color:#1F497D'><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
rules-users-bounces@lists.jboss.org
[mailto:rules-users-bounces@lists.jboss.org] <b>On Behalf Of </b>Justin Beltran<br>
<b>Sent:</b> 21 July 2010 16:47<br>
<b>To:</b> 'Rules Users List'<br>
<b>Subject:</b> Re: [rules-users] Rules not firing when expected after
retracting object in list<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Thanks for the reply.<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>What if you have multiple A’s
set with 123? Don’t you need to collect them to retract all A’s that match
that property?<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>My main concern is if you
retract one or more of the A’s, it’s possible that you should still have some
A’s that are NOT retracted, so rule B should still fire right?<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'>Justin<o:p></o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span style='color:#1F497D'><o:p> </o:p></span></p>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org]
<b>On Behalf Of </b>Swindells, Thomas<br>
<b>Sent:</b> Wednesday, July 21, 2010 8:39 AM<br>
<b>To:</b> Rules Users List<br>
<b>Subject:</b> Re: [rules-users] Rules not firing when expected after
retracting object in list<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><o:p> </o:p></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'>Why is rule 1 written
the way it is? Why can’t you just do:<o:p></o:p></span></p>
<p class=MsoNormal><span class=text-cell>rule "Rule 1 - Remove all A's
that have property set to 123" </span><br>
<span class=text-cell> salience 1000 </span><br>
<span class=text-cell>when </span><br>
<span class=text-cell> $anA : A( property == "123" )</span><br>
<span class=text-cell>then </span><br>
<span class=text-cell> retract ($anA) </span><br>
<span class=text-cell>end</span><span lang=EN-GB style='color:#1F497D'><o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'><o:p> </o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'>Thomas<o:p></o:p></span></p>
<p class=MsoNormal><span lang=EN-GB style='color:#1F497D'><o:p> </o:p></span></p>
<div style='border:none;border-left:solid blue 1.5pt;padding:0in 0in 0in 4.0pt'>
<div>
<div style='border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in'>
<p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>From:</span></b><span
style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>
rules-users-bounces@lists.jboss.org [mailto:rules-users-bounces@lists.jboss.org]
<b>On Behalf Of </b>Justin Beltran<br>
<b>Sent:</b> 21 July 2010 16:28<br>
<b>To:</b> rules-users@lists.jboss.org<br>
<b>Subject:</b> [rules-users] Rules not firing when expected after retracting
object in list<o:p></o:p></span></p>
</div>
</div>
<p class=MsoNormal><span lang=EN-GB><o:p> </o:p></span></p>
<p class=MsoNormal><span class=text-cell>Hi, </span><br>
<br>
<span class=text-cell>I'm coming across some weird behavior in Drools 4.0.7,
but maybe it's just cause I don't understand I how Drools works. Assume,
there's a class "A" that has a property called "property". </span><br>
<br>
<span class=text-cell>As facts, I have the following list of A's: </span><br>
<span class=text-cell>A1, property = 123 </span><br>
<span class=text-cell>A2, property = 345 </span><br>
<span class=text-cell>A3, property = 123 </span><br>
<br>
<span class=text-cell>I have two rules as follows: </span><br>
<br>
<span class=text-cell>rule "Rule 1 - Remove all A's that have property set
to 123" </span><br>
<span class=text-cell> salience 1000 </span><br>
<span class=text-cell> lock-on-active true </span><br>
<span class=text-cell>when </span><br>
<span class=text-cell> $listOfAs : ArrayList collect(A( property ==
"123" )) </span><br>
<span class=text-cell>then </span><br>
<span class=text-cell> for (Object a: $listOfAs ) { </span><br>
<span class=text-cell> retract (a) </span><br>
<span class=text-cell> } </span><br>
<span class=text-cell>end </span><br>
<br>
<span class=text-cell>rule "Rule 2 - Do stuff with remaining A's" </span><br>
<span class=text-cell> salience 900 </span><br>
<span class=text-cell> lock-on-active true </span><br>
<span class=text-cell>when </span><br>
<span class=text-cell> $listOfAs : ArrayList collect(A()) </span><br>
<span class=text-cell>then </span><br>
<span class=text-cell>... </span><br>
<span class=text-cell>end </span><br>
<br>
<span class=text-cell>My understanding is "Rule 1" will remove the
facts of class A that have property to 123. When it gets to "Rule
2", shouldn't the "listOfAs" only have that one A that remains
(i.e. the one where property is set to "345"). What I'm
noticing is that "Rule 2" just doesn't execute at all even though I'm
assuming there is still one "A" object that hasn't been retracted.
If I comment out the "retract" it executes "Rule 2"
fine. </span><br>
<br>
<span class=text-cell>Am I missing something about these rules work? </span><br>
<br>
<span class=text-cell>Thanks. </span><br>
<span class=text-cell>Justin</span><o:p></o:p></p>
</div>
<p class=MsoNormal><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<div class=MsoNormal align=center style='text-align:center'><span lang=EN-GB
style='font-size:12.0pt;font-family:"Times New Roman","serif"'>
<hr size=2 width="100%" align=center>
</span></div>
<p class=MsoNormal><span lang=EN-GB style='font-size:7.5pt;font-family:"Arial","sans-serif";
color:gray'><br>
**************************************************************************************<br>
This message is confidential and intended only for the addressee. If you have
received this message in error, please immediately notify the
postmaster@nds.com and delete it from your system as well as any copies. The
content of e-mails as well as traffic data may be monitored by NDS for
employment and security purposes. To protect the environment please do not
print this e-mail unless necessary.<br>
<br>
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX,
United Kingdom. A company registered in England and Wales. Registered no.
3080780. VAT no. GB 603 8808 40-00<br>
**************************************************************************************</span><span
lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>
</div>
<p class=MsoNormal><span lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p> </o:p></span></p>
<div class=MsoNormal align=center style='text-align:center'><span lang=EN-GB
style='font-size:12.0pt;font-family:"Times New Roman","serif"'>
<hr size=2 width="100%" align=center>
</span></div>
<p class=MsoNormal><span lang=EN-GB style='font-size:7.5pt;font-family:"Arial","sans-serif";
color:gray'><br>
**************************************************************************************<br>
This message is confidential and intended only for the addressee. If you have
received this message in error, please immediately notify the
postmaster@nds.com and delete it from your system as well as any copies. The
content of e-mails as well as traffic data may be monitored by NDS for
employment and security purposes. To protect the environment please do not
print this e-mail unless necessary.<br>
<br>
NDS Limited. Registered Office: One London Road, Staines, Middlesex, TW18 4EX,
United Kingdom. A company registered in England and Wales. Registered no.
3080780. VAT no. GB 603 8808 40-00<br>
**************************************************************************************</span><span
lang=EN-GB style='font-size:12.0pt;font-family:"Times New Roman","serif"'><o:p></o:p></span></p>
</div>
</body>
</html>