<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Hi.&nbsp;<div><br></div><div>I am working on Drools 5.5.0.Final and have a question regarding XLS and a Decision Table structure,</div><div><br></div><div>I have a ConditionObject and an ActionObject and wanted to know or see an example for XLS that produces a "does exist" for the ActionObject</div><div>in the when.</div><div><br></div><div>I can simply write the rule in a DRL, but translating how to make the XLS compiler create the same is proving challenging.</div><div><br></div><div>An example:</div><div><br></div><div>I want to produce a set of rules like below</div><div><br></div><div><font face="Monaco">rule "Test rule_11"</font></div><div><font face="Monaco">when</font></div><div><font face="Monaco">&nbsp; &nbsp; $c : ConditionObject( somefield )</font></div><div><font face="Monaco">&nbsp; &nbsp;&nbsp;EmbeddedObject(myField == AnEnum.SomeValue) from $c.embedded</font></div><div><font face="Monaco">&nbsp; &nbsp; $a : ActionObject( )</font></div><div><font face="Monaco">then&nbsp;</font></div><div><font face="Monaco">&nbsp; &nbsp; $a.someMethod("value")</font></div><div><font face="Monaco">&nbsp; &nbsp; $a.someMethod2(10)</font></div><div><font face="Monaco">&nbsp; &nbsp; $a.someMethod3("A")</font></div><div><font face="Monaco">end</font></div><div><br></div><div><div><font face="Monaco">rule "Test rule_12"</font></div></div><div><font face="Monaco">// some other AnEnum checks.</font></div><div><br></div><div>What I can't work out is how I get the test of "existence" of the Action Object into the "when" for the rule, so that I can "use" the Object in the ACTION.</div><div>In addition, is there a away that I can avoid needing a whole column just for "existence of an object with a field.. collect as a variable $c : (ConditionObject( somefield )" ?</div><div><br></div><div>CONDITION<span class="Apple-tab-span" style="white-space:pre">                        </span>CONDITION<span class="Apple-tab-span" style="white-space:pre">                                                </span>ACTION<span class="Apple-tab-span" style="white-space:pre">                                        </span>ACTION<span class="Apple-tab-span" style="white-space:pre">                                </span>ACTION</div><div>$c : ConditionObject<span class="Apple-tab-span" style="white-space:pre">                </span>EmbeddedObject() from $c.embedded<span class="Apple-tab-span" style="white-space:pre">        </span></div><div>$param<span class="Apple-tab-span" style="white-space:pre">                                </span>myField == AnEnum.$param<span class="Apple-tab-span" style="white-space:pre">                        </span>$a.someMethod("$param")<span class="Apple-tab-span" style="white-space:pre">        </span>$a.someMethod2($param)<span class="Apple-tab-span" style="white-space:pre">        </span>$a.someMethod3($param)</div><div>"Description"<span class="Apple-tab-span" style="white-space:pre">                        </span>"Description"<span class="Apple-tab-span" style="white-space:pre">                                                </span>"Description"<span class="Apple-tab-span" style="white-space:pre">                                </span>"Description"<span class="Apple-tab-span" style="white-space:pre">                        </span>"Description"</div><div>somefield<span class="Apple-tab-span" style="white-space:pre">                                </span>SomeValue<span class="Apple-tab-span" style="white-space:pre">                                                </span>value<span class="Apple-tab-span" style="white-space:pre">                                        </span>10<span class="Apple-tab-span" style="white-space:pre">                                        </span>A<span class="Apple-tab-span" style="white-space:pre">        </span></div><div>somefield<span class="Apple-tab-span" style="white-space:pre">                                </span>SomeOtherValue<span class="Apple-tab-span" style="white-space:pre">                                        </span>someOtherValue<span class="Apple-tab-span" style="white-space:pre">                        </span>50<span class="Apple-tab-span" style="white-space:pre">                                        </span>B</div><div><br></div><div>This is the XLS of the above.</div><div><br></div><div><a href="https://www.dropbox.com/s/lw3zb5hwtjdbpcm/sample_rules.xls?v=1scns">https://www.dropbox.com/s/lw3zb5hwtjdbpcm/sample_rules.xls?v=1scns</a></div><div><br></div><div>When this sheet is compiled, I get the following: How do I setup a "condition" for ActionObject to get in the when ?</div><div><br></div><div><div><div><font face="Monaco">package packageName;</font></div><div><font face="Monaco">//generated from Decision Table</font></div><div><font face="Monaco">// rule values at A8, header at A3</font></div><div><font face="Monaco">rule "Test rule_8"</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>when</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$c : ConditionObject(somefield)</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>EmbeddedObject(myField == AnEnum.SomeValue) from $c.embedded</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>then</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod("value")</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod2(10)</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod3(A)</font></div><div><font face="Monaco">end</font></div><div><font face="Monaco"><br></font></div><div><font face="Monaco">// rule values at A9, header at A3</font></div><div><font face="Monaco">rule "Test rule_9"</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>when</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$c : ConditionObject(somefield)</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>EmbeddedObject(myField == AnEnum.SomeOtherValue) from $c.embedded</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">        </span>then</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod("someOtherValue")</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod2(50)</font></div><div><font face="Monaco"><span class="Apple-tab-span" style="white-space:pre">                </span>$a.someMethod3(B)</font></div><div><font face="Monaco">end</font></div><div><br></div></div><div><br></div></div><div><br></div><div><br></div><div><div apple-content-edited="true">
<span class="Apple-style-span" style="border-collapse: separate; border-spacing: 0px; "><div>Ramon Buckland</div><div><a href="mailto:ramon@thebuckland.com">ramon@thebuckland.com</a></div><div><br></div></span><br class="Apple-interchange-newline">

</div>


<br></div></body></html>