[rules-users] Guided editor (BRL) rules in the drools-examples-brms dont work

Mark Proctor mproctor at codehaus.org
Tue Aug 7 15:59:29 EDT 2007


MVEL does not dynamically import package classes, they must be imported 
manually, so I actually imagine its that. the consequence syntax you 
have is valid for both java and MVEL.

Mark
Edgardo wrote:
> Hi,finally the problem is the guided editor, the code generated in 
> assert fact is not for the mvel compiler, the solution for mi problem 
> was add a new dialect option with "java" parameter.
>
> - The source code of the rule:
>
> rule "Driver is crazy"
>     dialect "java"
>     when
>          Driver( age >= "20"  && < "25" , locationRiskProfile == 
> "HIGH" , name == "Fernando Meyer" )
>          Policy( type == "PROBLEMATIC" )
>     then
>     insert(new Rejection(" Go away drunk "));
> end
>
> - The result:
>
> RuleAgent(insuranceconfig) INFO (Tue Aug 07 09:56:30 CLT 2007): 
> Configuring with newInstance=true, secondsToRefresh=30
> RuleAgent(insuranceconfig) INFO (Tue Aug 07 09:56:30 CLT 2007): 
> Configuring package provider : URLScanner monitoring URLs:  
> http://localhost:8080/drools-jbrms/org.drools.brms.JBRMS/package/org.acme.insurance/InsuranceSnapshot 
>
> RuleAgent(insuranceconfig) INFO (Tue Aug 07 09:56:31 CLT 2007): 
> Applying changes to the rulebase.
> RuleAgent(insuranceconfig) INFO (Tue Aug 07 09:56:31 CLT 2007): 
> Creating a new rulebase as per settings.
> RuleAgent(insuranceconfig) INFO (Tue Aug 07 09:56:31 CLT 2007): Adding 
> package called org.acme.insurance
> REJECTED:  Go away drunk
>
> :):):)
>
> I hope my solution work for anybody have the same problem
>
> PD: The classpath was not the problem.
>
> Thanks, see you in another post :)
>
>
> En Mon, 06 Aug 2007 12:28:37 -0400, Mark Proctor 
> <mproctor at codehaus.org> escribió:
>
>> Edgardo wrote:
>>> Hi, when I use the BRL editor, I can't edit the source code of the 
>>> rule, that is available in read-only mode, when you or other users 
>>> fire this rules, you don't have this problem ?
>>>
>> The BRL editor does not allow the source code to be edited, so you'll 
>> have to accept what it generates for now.
>>> RuleAgent(insuranceconfig) INFO (Fri Aug 03 16:05:58 CLT 2007):
>>> Adding package called org.acme.insurance
>>> org.mvel.CompileException: class or class reference not found: 
>>> Rejection()
>>> at 
>>> org.mvel.optimizers.impl.asm.ASMAccessorOptimizer.optimizeObjectCreation(ASMAccessorOptimizer.java:1771) 
>>>
>> This issue means the compiler cannot find your model, the class 
>> Rejection is not in the classpath.
>>>
>>> Greetings
>>>
>>> En Mon, 06 Aug 2007 08:00:47 -0400, Mark Proctor 
>>> <mproctor at codehaus.org> escribió:
>>>
>>>> btw if you are using the mvel dialect you can just do
>>>> fact0 = new Rejection();
>>>> fact0.reason = "Go away drunk" ;
>>>> insert( fact0 );
>>>>
>>>> MVEL has type inference, so it doesn't need to be used explicitley 
>>>> and also javascript style property accessors.
>>>>
>>>> Mark
>>>> Edgardo wrote:
>>>>> Hi fernando, the package source code is:
>>>>>
>>>>> package org.acme.insurance
>>>>> import org.acme.insurance.Driver
>>>>> import org.acme.insurance.Approve
>>>>> import org.acme.insurance.Policy
>>>>> import org.acme.insurance.Rejection
>>>>>
>>>>> ...
>>>>>
>>>>> rule "Driver is crazy"
>>>>>     dialect "mvel"
>>>>>     when
>>>>>         Driver( age >= "20"  && < "25" , locationRiskProfile == 
>>>>> "HIGH" , name == "Fernando Meyer" )
>>>>>         Policy( type == "PROBLEMATIC" )
>>>>>     then
>>>>>         Rejection fact0 = new Rejection();
>>>>>         fact0.setReason( "Go away drunk" );
>>>>>         insert( fact0 );
>>>>> end
>>>>>
>>>>> ...
>>>>>
>>>>> I import this from repository_export.xml in the resource folder, 
>>>>> and for fire "Driver is crazy" rule, I append the next code to 
>>>>> InsuranceBusiness class:
>>>>>
>>>>> public void executeExample() throws Exception {
>>>>>         RuleBase ruleBase = loadRuleBase();
>>>>>
>>>>>         testUnsafeDriver(ruleBase);
>>>>>         testSafeMature(ruleBase);
>>>>>         testUnsafeAreaAndPriors(ruleBase);
>>>>>         testDriverIsCrazy(ruleBase);  //-----> This
>>>>>     }
>>>>>
>>>>> /*** And this method ***/
>>>>>
>>>>> private void testDriverCrazy(RuleBase ruleBase) {
>>>>>         StatefulSession session = ruleBase.newStatefulSession();
>>>>>                Driver driver = new Driver();
>>>>>         driver.setAge(new Integer(23));
>>>>>         driver.setLocationRiskProfile("HIGH");
>>>>>         driver.setName("Fernando Meyer");
>>>>>                Policy policy = new Policy();
>>>>>         policy.setType("PROBLEMATIC");
>>>>>         policy.setApproved(false);
>>>>>                session.insert(driver);
>>>>>         session.insert(policy);
>>>>>         session.fireAllRules();
>>>>>     }
>>>>>
>>>>> In the example you dont fire the rules where I have the problems
>>>>>
>>>>> Thanks and sorry again for my english
>>>>>
>>>>> Greetings
>>>>>
>>>>> En Sun, 05 Aug 2007 11:46:14 -0400, Fernando Meyer 
>>>>> <fmcamargo at gmail.com> escribió:
>>>>>
>>>>>> Hi Eduardo,
>>>>>>
>>>>>>     Probably you missed some importing statement in your package 
>>>>>> configuration, check this please;
>>>>>>
>>>>>> Regards
>>>>>>
>>>>>> Fernando Meyer http://fmeyer.org
>>>>>> fmcamargo at gmail.com
>>>>>> PGP: 0xD804DDFB
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Aug 4, 2007, at 4:49 PM, Edgardo wrote:
>>>>>>
>>>>>>> Hi list, I post my problem in the rules-dev list. The problem is 
>>>>>>> execute the "Driver is Crazy", "Driver is too old" and "Driver 
>>>>>>> special age Approved" rules. I have the problem of the next 
>>>>>>> section:
>>>>>>>
>>>>>>>> Edgardo wrote:
>>>>>>>>> Yes, I did it, in the package configuration. I use the 
>>>>>>>>> drools-4.0.0-brms version. The problem is at the moment to 
>>>>>>>>> evaluate the next generate code of the rule:
>>>>>>>>>
>>>>>>>>> then
>>>>>>>>>         Rejection fact0 = new Rejection();
>>>>>>>>>         fact0.setReason( "Driver too old" );
>>>>>>>>>         insert( fact0 );
>>>>>>>>>
>>>>>>>>> If I use the Technical rule text editor, i dont have any problem.
>>>>>>>>>
>>>>>>>>> Greetings from Chile :)
>>>>>>>>>
>>>>>>>>> En Fri, 03 Aug 2007 19:06:05 -0400, Mark Proctor 
>>>>>>>>> <mproctor at codehaus.org> escribió:
>>>>>>>>>
>>>>>>>>>> did you upload your model and import it?
>>>>>>>>>>
>>>>>>>>>> Mark
>>>>>>>>>> Edgardo wrote:
>>>>>>>>>>> Hi rules-dev list, (my english is very poor, sorry) I am 
>>>>>>>>>>> interested in using the
>>>>>>>>>>> BRMS of JBoss Rules, but when I use the guided editor, this 
>>>>>>>>>>> rules dont
>>>>>>>>>>> work, and in drools-examples-brms example, this dont work 
>>>>>>>>>>> too, the error message (in the
>>>>>>>>>>> "Driver is Crazy" rule)is:
>>>>>>>>>>>
>>>>>>>>>>> RuleAgent(insuranceconfig) INFO (Fri Aug 03 16:05:58 CLT 
>>>>>>>>>>> 2007): Adding
>>>>>>>>>>> package called org.acme.insurance
>>>>>>>>>>> org.mvel.CompileException: class or class reference not 
>>>>>>>>>>> found: Rejection()
>>>>>>>>>>>     at
>>>>>>>>>>> org.mvel.optimizers.impl.asm.ASMAccessorOptimizer.optimizeObjectCreation(ASMAccessorOptimizer.java:1771)     
>>>>>>>>>>> at
>>>>>>>>>>> org.mvel.ast.NewObjectNode.getReducedValueAccelerated(NewObjectNode.java:49)     
>>>>>>>>>>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:87)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:98) 
>>>>>>>>>>>
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:93) 
>>>>>>>>>>>
>>>>>>>>>>>     at
>>>>>>>>>>> org.mvel.ast.TypedVarNode.getReducedValueAccelerated(TypedVarNode.java:36)     
>>>>>>>>>>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:87)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:98) 
>>>>>>>>>>>
>>>>>>>>>>>     at org.mvel.MVEL.executeExpression(MVEL.java:202)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:32) 
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:545) 
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:509) 
>>>>>>>>>>>     at
>>>>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:430)     
>>>>>>>>>>> at
>>>>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:392)     
>>>>>>>>>>> at
>>>>>>>>>>> org.acme.insurance.launcher.InsuranceBusiness.testDriverCrazy(InsuranceBusiness.java:93)     
>>>>>>>>>>> at
>>>>>>>>>>> org.acme.insurance.launcher.InsuranceBusiness.executeExample(InsuranceBusiness.java:19)     
>>>>>>>>>>> at 
>>>>>>>>>>> org.acme.insurance.launcher.MainClass.main(MainClass.java:13)
>>>>>>>>>>> org.drools.spi.ConsequenceException: 
>>>>>>>>>>> org.mvel.CompileException: class or
>>>>>>>>>>> class reference not found: Rejection()
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:549) 
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.common.DefaultAgenda.fireNextItem(DefaultAgenda.java:509) 
>>>>>>>>>>>     at
>>>>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:430)     
>>>>>>>>>>> at
>>>>>>>>>>> org.drools.common.AbstractWorkingMemory.fireAllRules(AbstractWorkingMemory.java:392)     
>>>>>>>>>>> at
>>>>>>>>>>> org.acme.insurance.launcher.InsuranceBusiness.testDriverCrazy(InsuranceBusiness.java:93)     
>>>>>>>>>>> at
>>>>>>>>>>> org.acme.insurance.launcher.InsuranceBusiness.executeExample(InsuranceBusiness.java:19)     
>>>>>>>>>>> at 
>>>>>>>>>>> org.acme.insurance.launcher.MainClass.main(MainClass.java:13)
>>>>>>>>>>> Caused by: org.mvel.CompileException: class or class 
>>>>>>>>>>> reference not found:
>>>>>>>>>>> Rejection()
>>>>>>>>>>>     at
>>>>>>>>>>> org.mvel.optimizers.impl.asm.ASMAccessorOptimizer.optimizeObjectCreation(ASMAccessorOptimizer.java:1771)     
>>>>>>>>>>> at
>>>>>>>>>>> org.mvel.ast.NewObjectNode.getReducedValueAccelerated(NewObjectNode.java:49)     
>>>>>>>>>>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:87)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:98) 
>>>>>>>>>>>
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:93) 
>>>>>>>>>>>
>>>>>>>>>>>     at
>>>>>>>>>>> org.mvel.ast.TypedVarNode.getReducedValueAccelerated(TypedVarNode.java:36)     
>>>>>>>>>>> at org.mvel.MVELRuntime.execute(MVELRuntime.java:87)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.mvel.CompiledExpression.getValue(CompiledExpression.java:98) 
>>>>>>>>>>>
>>>>>>>>>>>     at org.mvel.MVEL.executeExpression(MVEL.java:202)
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.base.mvel.MVELConsequence.evaluate(MVELConsequence.java:32) 
>>>>>>>>>>>     at 
>>>>>>>>>>> org.drools.common.DefaultAgenda.fireActivation(DefaultAgenda.java:545) 
>>>>>>>>>>>     ... 6 more
>>>>>>>>>>>
>>>>>>>>>>> Thanks :), I am waiting for you response...
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> rules-dev mailing list
>>>>>>>>>> rules-dev at lists.jboss.org
>>>>>>>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> rules-dev mailing list
>>>>>>>> rules-dev at lists.jboss.org
>>>>>>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --Edgardo Ibañez O.
>>>>>>> _______________________________________________
>>>>>>> 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
>>>
>>>
>>>
>>
>> _______________________________________________
>> 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