[rules-users] Please help - losing hair

Richard Hoberman richard.hoberman at sadalbari.com
Thu Aug 16 09:08:31 EDT 2007


That did the trick.  Thank you!  The "insert" keyword also feels a lot
more natural (although I get that "assert" went with "fact") :-)

Manjax23 wrote:
> I had same problem with 4M2 release. Please upgrade it to either 4.0.0 GA or
> 4M3 release.
> You can also find a sample example ShoppingExample.java and Shopping.drl,
> which is self-explanatory.
> However, I was not able to test few MVEL features like projections, which i
> think if added would make drools even more dynamic.
>
> Thanks,
> manjax23
>
>
> Richard Hoberman wrote:
>   
>> 1. I can't find any mention of dialects anywhere in the Drools 4
>> manual.  Am I missing something?
>>
>> 2. I've tried the following after finding a snippet in the archives for
>> this list:
>>
>>     package mvanamibia.claim;
>>
>>     import java.lang.Object;
>>     import java.lang.String;
>>     import java.lang.Double;
>>     import java.util.Date;
>>     import java.util.List;
>>     import java.util.ArrayList;
>>     import com.sadalbari.mvanamibia.beans.Claim;
>>     import com.sadalbari.mvanamibia.beans.Mandate;
>>     import com.sadalbari.mvanamibia.beans.SubmissionInfo;
>>     import com.sadalbari.mvanamibia.inspector.ClaimEvaluation;
>>
>>     global ClaimEvaluation evaluation;
>>
>>     rule "hasDateReceived"
>>         dialect "mvel"
>>         when
>>             Claim( submissionInfo == null )
>>         then
>>             evaluation.getViolations().add("missing: date received");
>>     end
>>
>>
>> but it gives the following exception:
>>
>>     java.lang.NullPointerException
>>         at
>>    
>> org.drools.rule.builder.RuleBuildContext.<init>(RuleBuildContext.java:115)
>>         at
>>     org.drools.compiler.PackageBuilder.addRule(PackageBuilder.java:350)
>>         at
>>     org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java:233)
>>         at
>>    
>> org.drools.compiler.PackageBuilder.addPackageFromDrl(PackageBuilder.java:157)
>>         at
>>    
>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.setupWorkingMemory(UnregisteredClaimValidationTest.java:29)
>>         at
>>    
>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.testEmptyClaim(UnregisteredClaimValidationTest.java:42)
>>     ... Removed 22 stack frames
>>
>>
>> Thanks
>>
>> Richard
>>
>>
>> Mark Proctor wrote:
>>     
>>> in theory for nested accessors it should switch to the MVEL dialect
>>> automatically. You only need to specify the MVEL dialect explicitely
>>> for eval, return value and consequences.
>>>
>>> Mark
>>> Manjax23 wrote:
>>>       
>>>> I think you should use dialect "mvel" when accessing the nested
>>>> accessors.
>>>> and I had some trouble with "mvel" dialect in 4M2 release.
>>>>
>>>> Please let me know if it works for you..
>>>>
>>>> Thanks,
>>>> Manjax23
>>>>
>>>>
>>>> Richard Hoberman wrote:
>>>>   
>>>>         
>>>>> I'm using Drools 4 (M2), which is supposed to support nested accessors*
>>>>>
>>>>> This works: when Claim( submissionInfo == null), but not this: when
>>>>> Claim( submissionInfo.date == null)
>>>>>
>>>>> Rule file, SubmissionInfo.java and exception are below.
>>>>>
>>>>> What am I missing?
>>>>>
>>>>> Richard
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> * See
>>>>> http://article.gmane.org/gmane.comp.java.drools.user/8079/match=nested+properties,
>>>>> which states "Support to nested accessors, property navigation and
>>>>> simplified collection, arrays and maps syntax"
>>>>>
>>>>> Rule File
>>>>>
>>>>> ---------------------------------------------------------------------------------------
>>>>> package mvanamibia.claim;
>>>>>
>>>>> import java.lang.Object;
>>>>> import java.lang.String;
>>>>> import java.lang.Double;
>>>>> import java.util.Date;
>>>>> import java.util.List;
>>>>> import java.util.ArrayList;
>>>>> import com.sadalbari.mvanamibia.beans.Claim;
>>>>> import com.sadalbari.mvanamibia.beans.Mandate;
>>>>> import com.sadalbari.mvanamibia.beans.SubmissionInfo;
>>>>> import com.sadalbari.mvanamibia.inspector.ClaimEvaluation;
>>>>>
>>>>> global ClaimEvaluation evaluation;
>>>>>
>>>>> rule "hasDateReceived"
>>>>>
>>>>>     when
>>>>>         Claim( submissionInfo.date == null )
>>>>>     then
>>>>>         evaluation.getFailures().add("missing: date received");
>>>>> end
>>>>>
>>>>> -----------------------------------------------------------------------------------
>>>>>
>>>>> Exception
>>>>> -----------------------------------------------------------------------------------
>>>>> org.drools.rule.InvalidRulePackage: [19,23]: unknown:19:23 mismatched
>>>>> token: [@137,471:471='.',<69>,19:23]; expecting type RIGHT_PAREN
>>>>>     at org.drools.rule.Package.checkValidity(Package.java:368)
>>>>>     at
>>>>> org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:250)
>>>>>     at
>>>>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.setupWorkingMemory(UnregisteredClaimValidationTest.java:33)
>>>>>     at
>>>>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.testMandateClaim(UnregisteredClaimValidationTest.java:56)
>>>>> ... Removed 22 stack frames
>>>>> FAILED: testEmptyClaim
>>>>> org.drools.rule.InvalidRulePackage: [19,23]: unknown:19:23 mismatched
>>>>> token: [@137,471:471='.',<69>,19:23]; expecting type RIGHT_PAREN
>>>>>     at org.drools.rule.Package.checkValidity(Package.java:368)
>>>>>     at
>>>>> org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:250)
>>>>>     at
>>>>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.setupWorkingMemory(UnregisteredClaimValidationTest.java:33)
>>>>>     at
>>>>> com.sadalbari.mvanamibia.model.UnregisteredClaimValidationTest.testEmptyClaim(UnregisteredClaimValidationTest.java:42)
>>>>> ... Removed 22 stack frames
>>>>>
>>>>>
>>>>> ------------------------------------------------------
>>>>> SubmissionInfo (relevant bits)
>>>>>
>>>>> public class SubmissionInfo implements Serializable {
>>>>>
>>>>>     private Date date;
>>>>>
>>>>>     public Date getDate() {
>>>>>         return date;
>>>>>     }
>>>>>
>>>>>     public void setDate(Date date) {
>>>>>         this.date = date;
>>>>>     }
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> rules-users mailing list
>>>>> rules-users at lists.jboss.org
>>>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>>>
>>>>>
>>>>>     
>>>>>           
>>>>   
>>>>         
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> rules-users mailing list
>>> rules-users at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-users
>>>   
>>>       
>> _______________________________________________
>> rules-users mailing list
>> rules-users at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/rules-users
>>
>>
>>     
>
>   




More information about the rules-users mailing list