<style>
<!--
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Arial;
        color:windowtext;}
@page Section1
        {size:595.3pt 841.9pt;
        margin:2.0cm 42.5pt 2.0cm 3.0cm;}
div.Section1
        {page:Section1;}
-->
</style><div class="Section1">
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">Hello, 
All!</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US"> </span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">I’m evaluating the new version of 
Drools (5.0.1), so I’m especially interested in multithreading and partitioning 
options, implemented in Drools v5.</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">I’ve prepared a little test case to 
check how the feature works. Here is the rule I’m 
using:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">package 
test</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">rule 
test</span></font></p>
<p class="MsoNormal" style="text-indent: 35.4pt;"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">when</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">                        NODE2($p : 
value &gt; 20)</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            
then</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">                        
System.out.println(&quot;Fired :” + $p);</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">end</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US"> </span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">The NODE2 POJO is very 
simple:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">public class NODE2 
{</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            private int 
value;</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            public NODE2(int value) 
{</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">                        this.value = 
value;</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            
}</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            public int getValue() 
{</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">                        return 
value;</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            
}</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US"> </span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            public void setValue(int 
value) {</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">                        this.value = 
value;</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            
}</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">}</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US"> </span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">And here is the main code 
snippet:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">1:         
KnowledgeBaseConfiguration conf = 
KnowledgeBaseFactory.newKnowledgeBaseConfiguration();</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">2:         
conf.setOption(MultithreadEvaluationOption.YES);</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">3:         
conf.setOption(MaxThreadsOption.get(10));</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">4:         KnowledgeBase kb = 
KnowledgeBaseFactory.newKnowledgeBase(conf);</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">5:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">6:         KnowledgeBuilder bld = 
KnowledgeBuilderFactory.newKnowledgeBuilder();</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">7:         
bld.add(ResourceFactory.newReaderResource(new StringReader(rule)), 
ResourceType.DRL);</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">8:         
kb.addKnowledgePackages(bld.getKnowledgePackages());</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">9:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">10:       StatefulKnowledgeSession 
session = kb.newStatefulKnowledgeSession();                       
</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">11:       session.insert(new 
NODE2(25));</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">12:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">13:       
session.fireAllRules();</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">In such a case my program hangs and 
nothing is displayed in the Console.</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">If I put lines 10-11 prior to line 
6, I get a NullPointerException:</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">Exception in thread &quot;main&quot; 
java.lang.NullPointerException</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">            at 
org.drools.reteoo.ObjectSource.addObjectSink(ObjectSource.java:124)</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">…</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">But, if I comment out the lines 
2&amp;3, everything works ok…</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">So, please help – what I’m doing 
wrong?</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US"> </span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">Best 
regards,</span></font></p>
<p class="MsoNormal"><font size="2" face="Arial"><span style="font-size: 10pt; font-family: Arial;" lang="EN-US">Andrey</span></font></p></div>