<div><div>Hi,</div><div><br></div><div>I have a problem with nesting prefix-and and prefix-or. I found a bug in JIRA but it been fixed in drools expert 5.0. Here is snippet to reproduce the problem (based on the original rule). I get the following error :</div>
<div>java.lang.RuntimeException: [48,5]: [ERR 102] Line 48:5 mismatched input &#39;EmployeePreferredShift&#39; in rule &quot;assign-preferred-position&quot; <br>
</div><div><br></div><div><div>declare EntityA</div><div>   number : int</div><div>end</div><div><br></div><div>declare EntityB</div><div>   number : int</div><div>end</div><div><br></div><div>declare EntityC</div><div>   number : int</div>
<div>end</div><div><br></div><div>rule &quot;and-or-snippet&quot;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>dialect &quot;java&quot;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>when</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>EntityA(</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>$number : number)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>not ( and</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>EntityB (</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>number == $number )</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>( or </div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>( and </div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>EntityC (</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>number &lt; $number)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>not EntityB (</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>number == 4)</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>) </div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>not EntityC (</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>number == 10 )</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>)</div>
<div><span class="Apple-tab-span" style="white-space:pre">                        </span>EntityA ( </div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>number &lt;= $number )</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>( or</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>not EntityC (</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>number &gt;= $number)</div><div><span class="Apple-tab-span" style="white-space:pre">                                </span>( and </div>
<div><span class="Apple-tab-span" style="white-space:pre">                                        </span>EntityC ( </div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>number == 4 || number &gt;=10 )</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>not EntityB (</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                                </span>number == -3)</div><div><span class="Apple-tab-span" style="white-space:pre">                                        </span>not EntityB (</div><div><span class="Apple-tab-span" style="white-space:pre">                                                </span>number == -10 )</div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>)</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>)</div><div><span class="Apple-tab-span" style="white-space:pre">                        </span>not EntityB( </div>
<div><span class="Apple-tab-span" style="white-space:pre">                                </span>number == 0)</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>)</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>then</div>
<div><span class="Apple-tab-span" style="white-space:pre">                </span>System.out.println(&quot;Working&quot;);</div><div>end</div></div></div><div><br></div><br clear="all">Patrik Dufresne<br>