/** * Copyright 2010 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. */ package org.drools.examples; import java.util.Arrays; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactory; import org.drools.builder.DecisionTableConfiguration; import org.drools.builder.DecisionTableInputType; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactory; import org.drools.builder.ResourceType; import org.drools.examples.decisiontable.Driver; import org.drools.examples.decisiontable.Policy; import org.drools.io.ResourceFactory; import org.drools.runtime.StatelessKnowledgeSession; /** * This shows off a decision table. */ public class PricingRuleDTExample { public static final void main(String[] args) throws Exception { PricingRuleDTExample launcher = new PricingRuleDTExample(); launcher.executeExample(); } public int executeExample() throws Exception { DecisionTableConfiguration dtableconfiguration = KnowledgeBuilderFactory.newDecisionTableConfiguration(); dtableconfiguration.setInputType( DecisionTableInputType.XLS ); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "org/drools/examples/ExamplePolicyPricing.xls", getClass() ), ResourceType.DTABLE, dtableconfiguration ); if ( kbuilder.hasErrors() ) { System.err.print( kbuilder.getErrors() ); return -1; } KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); // typical decision tables are used statelessly StatelessKnowledgeSession ksession = kbase.newStatelessKnowledgeSession(); //now create some test data Driver driver = new Driver(); Policy policy = new Policy(); ksession.execute( Arrays.asList( new Object[]{driver, policy} ) ); System.out.println( "BASE PRICE IS: " + policy.getBasePrice() ); System.out.println( "DISCOUNT IS: " + policy.getDiscountPercent() ); return policy.getBasePrice(); } }