Hello:
I had generated the decisiontable using the eclipse plugin for drools 4.x. using the eclipse the DecisionsampleTest works fine but on running it from the command line gets the following error:
/C:\FirstDroolPrj\bin>java com.sample.DecisionTableTest
org.drools.rule.InvalidRulePackage: Rule Compilation error : [Rule name=HelloWor
ld_11, agendaGroup=MAIN, salience=0, no-loop=false]
com/sample/Rule_HelloWorld_11_0.java (8:411) : The method update(Decisio
nTableTest.Message) is undefined for the type Rule_HelloWorld_11_0
com/sample/Rule_HelloWorld_11_0.java (9:453) : The method update(Decisio
nTableTest.Message) is undefined for the type Rule_HelloWorld_11_0

       at org.drools.rule.Package.checkValidity(Package.java:419)
at org.drools.common.AbstractRuleBase.addPackage(AbstractRuleBase.java:2
92)
at com.sample.DecisionTableTest.readDecisionTable(DecisionTableTest.java
:62)
       at com.sample.DecisionTableTest.main(DecisionTableTest.java:35)
/
Have attached the .xsl and the DecisionTableTest for the reference.

Thanks for your help and time,

Regards,
Ravi

Attachment: Sample.xls
Description: MS-Excel spreadsheet

package com.sample;

/*
 * Copyright 2005 JBoss Inc
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.StringReader;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.PackageBuilder;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.rule.Package;

public class DecisionTableTest {

    public static final void main(String[] args) {
        try {
        	
        	//load up the rulebase
            RuleBase ruleBase = readDecisionTable();
            WorkingMemory workingMemory = ruleBase.newStatefulSession();
            
            //go !
            Message message = new Message();
            message.setMessage(  "Hello World fellows" );
            message.setStatus( Message.HELLO );
            workingMemory.insert( message );
            workingMemory.fireAllRules();   
            
            
        } catch (Throwable t) {
            t.printStackTrace();
        }
    }

    /**
     * Please note that this is the "low level" rule assembly API.
     */
	private static RuleBase readDecisionTable() throws Exception {
		//read in the source
        final SpreadsheetCompiler converter = new SpreadsheetCompiler();
        final String drl = converter.compile( "/Sample.xls", InputType.XLS );
		PackageBuilder builder = new PackageBuilder();
		builder.addPackageFromDrl( new StringReader( drl ) );
		Package pkg = builder.getPackage();
		RuleBase ruleBase = RuleBaseFactory.newRuleBase();
		ruleBase.addPackage( pkg );
		return ruleBase;
	}

	public static class Message {
		public static final int HELLO = 0;
		public static final int GOODBYE = 1;
		
		private String message;
		
		private int status;
		
		public String getMessage() {
			return this.message;
		}
		
		public void setMessage(String message) {
			this.message = message;
		}
		
		public int getStatus() {
			return this.status;
		}
		
		public void setStatus( int status ) {
			this.status = status;
		}
	}
    
}
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users

Reply via email to