[rules-users] FW: Decision Tables
Mark Proctor
mproctor at codehaus.org
Wed Aug 29 12:59:02 EDT 2007
This isn't bug, you aren't using drools correctly. Only valid java can
be used in an Action. anAnswer:BooleanAnswer is not valid java and shows
up in your generated code:
anAnswer: BooleanAnswer.anAnswer.setAnswer(true);;
Hehl, Thomas wrote:
>
> The problem appears to be that the rule being generated is just flat
> wrong. I'm starting to think this is a bug in decision tables for 4.0 GA.
>
>
>
> The following entry:
>
>
>
>
>
>
>
> ACTION
>
>
>
> anAnswer: BooleanAnswer
>
>
>
> anAnswer.setAnswer($param);
>
>
>
> *Allowed*
>
>
>
> *TRUE*
>
>
>
>
>
>
> *TRUE*
>
>
>
>
>
>
>
>
>
>
> Generates this rule:
>
>
>
> rule "postponePart_10"
>
>
>
> when
>
> PoolInfo(courtLocation == "101", statusCode >= 0,
> statusCode <= 2, numberFta < 1, numberOfDeferralsPosted < 2,
> daysBeforeSummons>= 1, daysBeforeSummons<= 1)
>
> then
>
> anAnswer: BooleanAnswer.anAnswer.setAnswer(true);;
>
> end
>
>
>
> This doesn't seem right at all. What I'm trying to do is to call the
> setAnswer method on the object I passed in with:
>
>
>
> StatelessSession session =
> participantRuleBase.newStatelessSession();
>
>
>
> //now create some test data
>
> PoolInfo pool = part.getActivePool();
>
> BooleanAnswer answer = *new* BooleanAnswer();
>
>
>
> Object[] rules = *new* Object[]{pool, answer};
>
> session.execute(rules);
>
>
>
> *return* answer.isTrue();
>
>
>
>
>
> Advice?
>
>
>
> Thanks.
>
>
>
>
>
>
>
> ------------------------------------------------------------------------
>
> *From:* Hehl, Thomas
> *Sent:* Tuesday, August 28, 2007 4:10 PM
> *To:* 'rules-users at lists.jboss.org'
> *Subject:* Decision Tables
>
>
>
> I'm having trouble figuring out the ACTION section of a decision
> table. Everything else appears to be working.
>
>
>
> My rules result in a simple True/False condition. To do this in a
> decision table, I've created a class called BooleanAnswer that looks like:
>
>
>
> public class BooleanAnswer {
>
>
>
> private boolean answer;
>
>
>
>
>
> /**
>
> * no-arg constructor
>
> */
>
> public BooleanAnswer(){
>
> }
>
>
>
>
>
> /**
>
> * create your own default answer
>
> * @param answer the answer to set
>
> */
>
> public BooleanAnswer(boolean answer){
>
> setAnswer(answer);
>
> }
>
>
>
>
>
> /**
>
> * @return the answer
>
> */
>
> public boolean isTrue() {
>
> return answer;
>
> }
>
>
>
>
>
> /**
>
> * @param answer the answer to set
>
> */
>
> public void setAnswer(boolean answer) {
>
> this.answer = answer;
>
> }
>
> }
>
>
>
>
>
> Then I create a decision table with the following ACTION in it:
>
>
>
> ACTION
>
>
>
>
>
> answer: BooleanAnswer
>
>
>
>
>
> answer.setAnswer($param);
>
>
>
>
>
> *Allowed*
>
>
>
>
>
> *TRUE*
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> This generates the following errors:
>
>
>
> ...
>
> Caused by: org.drools.rule.InvalidRulePackage: Rule Compilation error
> : [Rule name=postponePart_15, agendaGroup=MAIN, salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_15_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_13, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_13_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_14, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_14_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_16, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_16_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_17, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_17_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_10, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_10_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_11, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_11_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_18, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_18_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_19, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_19_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
> Rule Compilation error : [Rule name=postponePart_12, agendaGroup=MAIN,
> salience=0, no-loop=false]
>
> participantPostponementRules/Rule_postponePart_12_0.java
> (8:343) : The field BooleanAnswer.answer is not visible
>
>
>
> at org.drools.rule.Package.checkValidity(Package.java:408)
>
> at
> org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:288)
>
> at
> com.acs.gs.juror.bizstrategy.PostponementStrategy.init(PostponementStrategy.java:129)
>
> ... 14 more
>
> )
>
> at junit.framework.Assert.fail(Assert.java:47)
>
> at junit.framework.TestSuite$1.runTest(TestSuite.java:263)
>
> at junit.framework.TestCase.runBare(TestCase.java:127)
>
> at junit.framework.TestResult$1.protect(TestResult.java:106)
>
> at
> junit.framework.TestResult.runProtected(TestResult.java:124)
>
> at junit.framework.TestResult.run(TestResult.java:109)
>
> at junit.framework.TestCase.run(TestCase.java:118)
>
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
>
> at junit.framework.TestSuite.run(TestSuite.java:203)
>
> at
> org.eclipse.jdt.internal.junit.runner.junit3.JUnit3TestReference.run(JUnit3TestReference.java:128)
>
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
>
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
>
>
>
>
>
> Help for a newbie, please?
>
>
>
> Thanks.
>
> **Thom Hehl***
> *Sr. eJuror Architect
>
> **)**** ****Office (859) 277-8800 x 144**
>
> ******* ****Thomas.Hehl at acs-inc.com
> <mailto:Thomas.Hehl at acs-inc.com>**** ***
> ***ACS, Inc.**
>
> **Government Solutions**
>
> **1733 Harrodsburg Road***
> **Lexington****, KY 40504-3617***
>
> **This e-mail message, including any attachments, is for the sole use
> of the intended recipient(s) and may contain confidential and
> privileged information. Any unauthorized review, use, disclosure or
> distribution is prohibited. If you are not the intended recipient,
> please contact the sender by reply e-mail and destroy all copies of
> the original message and notify sender via e-mail at
> _Thomas.Hehl at acs-inc.com <mailto:Thomas.Hehl at acs-inc.com>_ or by
> telephone at 859-277-8800 ext. 144. Thank you.**
>
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20070829/4de229da/attachment.html
More information about the rules-users
mailing list