Check the results on the PackageBuilder before getting the package and adding it to the RuleBase. PackageBuilder provides the list of problems, rather than the toString() that RuleBase does.

Mark
Ronald R. DiFrango wrote:
Please ignore this, I figured it out!

On 7/6/07, *Ronald R. DiFrango* <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> 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;
    [EMAIL PROTECTED],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* < [EMAIL PROTECTED]
    <mailto:[EMAIL PROTECTED]>> 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?



------------------------------------------------------------------------

_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

_______________________________________________
rules-users mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to