Package org.plugtree.training.expert

Source Code of org.plugtree.training.expert.SpreadsheetExampleTest

package org.plugtree.training.expert;


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.KnowledgeBuilderError;
import org.drools.builder.KnowledgeBuilderErrors;
import org.drools.builder.KnowledgeBuilderFactory;
import org.drools.builder.ResourceType;
import org.drools.decisiontable.InputType;
import org.drools.decisiontable.SpreadsheetCompiler;
import org.drools.io.impl.ClassPathResource;
import org.drools.runtime.StatefulKnowledgeSession;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.plugtree.training.enums.CreditStatus;
import org.plugtree.training.model.Job;
import org.plugtree.training.model.Person;

public class SpreadsheetExampleTest  {

    private StatefulKnowledgeSession ksession;

    @Before
    public void setUp() throws Exception {
        DecisionTableConfiguration dtableconfiguration = KnowledgeBuilderFactory.newDecisionTableConfiguration();
        dtableconfiguration.setInputType(DecisionTableInputType.XLS);

       
        SpreadsheetCompiler compiler = new SpreadsheetCompiler();
        String drl = compiler.compile("/rules/CreditRules.xls", InputType.XLS);
        System.out.println("DRL String:"+drl);
       
        KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
        kbuilder.add(new ClassPathResource("/rules/CreditRules.xls", getClass()), ResourceType.DTABLE, dtableconfiguration);
        KnowledgeBuilderErrors errors = kbuilder.getErrors();
        if (errors.size() > 0) {
            for (KnowledgeBuilderError error : errors) {
                System.err.println(error);
            }
            throw new IllegalArgumentException("Could not parse knowledge.");
        }

   
//       
        KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
        kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
        ksession = kbase.newStatefulKnowledgeSession();
        //KnowledgeRuntimeLogger logger = KnowledgeRuntimeLoggerFactory.newConsoleLogger(ksession);
    }
    @Test
    public void testExecution() {
        Person p1 = new Person(20);
        p1.setJob(new Job(2, 3000f));
        Person p2 = new Person(18);
        p2.setJob(new Job(0, 5000f));
        Person p3 = new Person(47);
        p3.setJob(new Job(10, 4500f));
        ksession.insert(p1);
        ksession.insert(p2);
        ksession.insert(p3);
        ksession.fireAllRules();

        Assert.assertEquals(CreditStatus.ACCEPTED, p1.getCredit().getStatus());
        Assert.assertEquals(CreditStatus.REJECTED, p2.getCredit().getStatus());
        Assert.assertEquals(CreditStatus.REJECTED, p2.getCredit().getStatus());
       
        ksession.dispose();

    }
}
TOP

Related Classes of org.plugtree.training.expert.SpreadsheetExampleTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.