Please ignore this, I figured it out!
On 7/6/07, Ronald R. DiFrango <ron.difrango(a)gmail.com> wrote:
Changed the loading order and now I get the following:
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.circuitcity.rtvcrms.test.MainBasedTester.testRules(
MainBasedTester.java :31)
at com.circuitcity.rtvcrms.test.MainBasedTester.main(
MainBasedTester.java:23)
Caused by: java.lang.RuntimeException: Failure loading the Rules
at com.circuitcity.rtvcrms.rules.RtvDecisionEngine.<clinit>(
RtvDecisionEngine.java:47)
... 2 more
Caused by: org.drools.rule.InvalidRulePackage: [1,0]: unknown:1:0 required
(...)+ loop (decision=2) did not match anything;
token=[@0,0:6='created',<8>,1:0]
at org.drools.rule.Package.checkValidity(Package.java:409)
at org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java
:262)
at com.circuitcity.rtvcrms.rules.RtvDecisionEngine.<clinit>(
RtvDecisionEngine.java :43)
... 2 more
On 7/6/07, Ronald R. DiFrango <ron.difrango(a)gmail.com> wrote:
>
> I am getting the following exception all of a sudden:
>
> Exception in thread "main" java.lang.ExceptionInInitializerError
> at com.circuitcity.rtvcrms.test.MainBasedTester.testRules(
> MainBasedTester.java :31)
> at com.circuitcity.rtvcrms.test.MainBasedTester.main(
> MainBasedTester.java:23)
> Caused by: java.lang.RuntimeException: Failure loading the Rules
> at com.circuitcity.rtvcrms.rules.RtvDecisionEngine.<clinit>(
> RtvDecisionEngine.java:47)
> ... 2 more
> Caused by:
> org.drools.compiler.PackageBuilder$MissingPackageNameException: Missing
> package name for rule package.
> at org.drools.compiler.PackageBuilder.validatePackageName (
> PackageBuilder.java:278)
> at org.drools.compiler.PackageBuilder.addPackage(PackageBuilder.java
> :214)
> at org.drools.compiler.PackageBuilder.addPackageFromDrl(
> PackageBuilder.java:147)
> at com.circuitcity.rtvcrms.rules.RtvDecisionEngine .<clinit>(
> RtvDecisionEngine.java:40)
> ... 2 more
>
>
> Here are my DRL files:
>
> created on: Dec 7, 2006
> package com.circuitcity.rtvcrms.rules
>
> #list any import classes here.
> import java.math.BigDecimal ;
> import java.math.BigInteger;
> import com.circuitcity.rtvcrms.bw.Constants;
> import com.circuitcity.rtvcrms.bw.DocumentTypes;
> import com.circuitcity.rtvcrms.bw.StatusConstants;
>
> import com.circuitcity.rtvcrms.Adjustment ;
> import com.circuitcity.rtvcrms.DetailLine;
> import com.circuitcity.rtvcrms.EffectivePrice;
> import com.circuitcity.rtvcrms.RepaymentCode;
> import com.circuitcity.rtvcrms.MatchingOutput;
>
> #declare any global variables here
> global java.util.List matchedList;
>
> rule "CM Qty EQ RTV Qty"
> salience 10
>
> when
> cmDetailLine : DetailLine(cmNumber != null, lineNumber != null,
> status != StatusConstants.MATCHED , cmRtvNumber : cmRtvNumber, cmBrand :
> brand , cmModel : model, cmQuantity : availableQuantity )
> rtvDetailLine : DetailLine(rtvNumber != null, rtvNumber ==
> cmRtvNumber, lineNumber != null, status != StatusConstants.MATCHED ,
> brand == cmBrand, model == cmModel, availableQuantity == cmQuantity )
> then
> System.out.println(StatusConstants.MATCHED);
>
> MatchingOutput output =
> buildMatchingOutput(
> rtvDetailLine.getBrand(),
> rtvDetailLine.getClazz(),
> cmDetailLine.getLineNumber(),
> cmDetailLine.getCmNumber(),
> (String)null, // defTag
> rtvDetailLine.getEffectivePrice(),
> (BigDecimal)null, // keyRecNo
> rtvDetailLine.getItemCost(),
> rtvDetailLine.getAvailableQuantity(),
> rtvDetailLine.getModel (),
> (String)null, // originalRepaymentCode
> (BigDecimal)null, // rrLineNumber
> rtvDetailLine.getLineNumber(),
> rtvDetailLine.getRtvNumber(),
> StatusConstants.MATCHED,
> DocumentTypes.RTV_CM,
> (String)null); // vendorNumber
>
> matchedList.add(output);
>
> cmDetailLine.setAvailableQuantity(Constants.NO_MORE_QUANTITY );
> cmDetailLine.setStatus(StatusConstants.MATCHED);
> rtvDetailLine.setAvailableQuantity(Constants.NO_MORE_QUANTITY);
> rtvDetailLine.setStatus(StatusConstants.MATCHED);
> end
>
> rule "RNR Qty EQ RTV Qty"
> salience 10
>
> when
> rnrDetailLine : DetailLine(keyRecNo != null, lineNumber != null,
> status != StatusConstants.MATCHED, cmRtvNumber : cmRtvNumber, cmBrand :
> brand , cmModel : model, cmQuantity : availableQuantity )
> rtvDetailLine : DetailLine(rtvNumber != null, rtvNumber ==
> cmRtvNumber, lineNumber != null, status != StatusConstants.MATCHED,
> brand == cmBrand, model == cmModel, availableQuantity == cmQuantity )
> then
> System.out.println(StatusConstants.MATCHED);
>
> MatchingOutput output =
> buildMatchingOutput(
> rtvDetailLine.getBrand(),
> rtvDetailLine.getClazz (),
> (BigDecimal)null, // cmDetailLine.getLineNumber(),
> (String)null, // cmDetailLine.getCmNumber(),
> (String)null, // defTag
> rtvDetailLine.getEffectivePrice (),
> rnrDetailLine.getKeyRecNo(), // keyRecNo
> rtvDetailLine.getItemCost(),
> rtvDetailLine.getAvailableQuantity(),
> rtvDetailLine.getModel(),
> (String)null, // originalRepaymentCode
> rnrDetailLine.getLineNumber(), // rrLineNumber
> rtvDetailLine.getLineNumber(),
> rtvDetailLine.getRtvNumber(),
> StatusConstants.MATCHED,
> DocumentTypes.RTV_RR,
> (String)null); // vendorNumber
>
> matchedList.add(output);
>
> rnrDetailLine.setAvailableQuantity(Constants.NO_MORE_QUANTITY);
> rnrDetailLine.setStatus(StatusConstants.MATCHED);
> rtvDetailLine.setAvailableQuantity(Constants.NO_MORE_QUANTITY);
> rtvDetailLine.setStatus(StatusConstants.MATCHED);
> end
>
> #created on: Apr 10, 2007
> package com.circuitcity.rtvcrms.rules
>
> #list any import classes here.
> import java.math.BigDecimal;
>
> import com.circuitcity.rtvcrms.bw.ModelDiscrepancyOutput;
> import com.circuitcity.rtvcrms.bw.StatusConstants ;
> import com.circuitcity.rtvcrms.Adjustment;
> import com.circuitcity.rtvcrms.DetailLine;
> import com.circuitcity.rtvcrms.RepaymentCode;
> import com.circuitcity.rtvcrms.MatchingOutput;
> import org.drools.WorkingMemory ;
> import org.drools.QueryResults;
> import org.drools.QueryResult;
> import java.util.Iterator;
>
> #declare any global variables here
>
> rule "Sum CM"
> salience 90
>
> when
> mdOutput : ModelDiscrepancyOutput ()
> repaymentCode : RepaymentCode( code == "MD")
> cmAdjustment : Adjustment(cmNumber != null, lineNumber != null,
> originalRepaymentCode == "MD" )
> then
> System.out.println ("Sum CM");
> mdOutput.setSumCmAndRnr(cmAdjustment.getAvailableQuantity());
> end
>
> Any thoughts?
>