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

Edgardo edgardoibanez at gmail.com
Tue Aug 7 10:15:02 EDT 2007


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



-- 
Edgardo Ibañez O.



More information about the rules-users mailing list