Package org.plugtree.training

Source Code of org.plugtree.training.DSLExampleTest

package org.plugtree.training;

import java.util.ArrayList;
import java.util.List;



import org.drools.KnowledgeBase;
import org.drools.KnowledgeBaseFactory;
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.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.CustomerType;
import org.plugtree.training.enums.ShippingType;
import org.plugtree.training.model.Customer;
import org.plugtree.training.model.Order;

public class DSLExampleTest {

  private StatefulKnowledgeSession ksession;
  private List<Order> rejectedNational = new ArrayList<Order>();
  private List<Order> rejectedInternational = new ArrayList<Order>();
  private List<Order> priorityCustomer = new ArrayList<Order>();
        @Before
  public void setUp() throws Exception {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(new ClassPathResource("/rules/CustomLanguage.dsl", getClass()), ResourceType.DSL);
    kbuilder.add(new ClassPathResource("/rules/Rules.dslr", getClass()), ResourceType.DSLR);
    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() {

    Customer johnInternational = new Customer("John Z", CustomerType.INTERNATIONAL);
    Customer annaInternational = new Customer("Anna M", CustomerType.INTERNATIONAL);
    Customer maryInternational = new Customer("Mary C", CustomerType.NATIONAL);
    Customer jesseNational = new Customer("Jessy D", CustomerType.NATIONAL);

    Order internationalExpressOrder = new Order();
    internationalExpressOrder.setCustomer(johnInternational);
    internationalExpressOrder.setShipping(ShippingType.EXPRESS);
    internationalExpressOrder.setAmount(100);

    Order internationalUSPSOrderRejected = new Order();
    internationalUSPSOrderRejected.setCustomer(annaInternational);
    internationalUSPSOrderRejected.setShipping(ShippingType.USPS);
    internationalUSPSOrderRejected.setAmount(10);

    Order internationalUSPSOrderAccepted = new Order();
    internationalUSPSOrderAccepted.setCustomer(johnInternational);
    internationalUSPSOrderAccepted.setShipping(ShippingType.USPS);
    internationalUSPSOrderAccepted.setAmount(110);

    Order nationalStandardOrder = new Order();
    nationalStandardOrder.setCustomer(maryInternational);
    nationalStandardOrder.setShipping(ShippingType.STANDARD);
    nationalStandardOrder.setAmount(90.7f);

    Order nationalExpressOrder = new Order();
    nationalExpressOrder.setCustomer(jesseNational);
    nationalExpressOrder.setShipping(ShippingType.EXPRESS);
    nationalExpressOrder.setAmount(930);

    ksession.setGlobal("rejectedNational", rejectedNational);
    ksession.setGlobal("rejectedInternational", rejectedInternational);
    ksession.setGlobal("priorityCustomer", priorityCustomer);

    ksession.insert(internationalExpressOrder);
    ksession.insert(internationalUSPSOrderRejected);
    ksession.insert(internationalUSPSOrderAccepted);
    ksession.insert(nationalStandardOrder);
    ksession.insert(nationalExpressOrder);
    ksession.fireAllRules();

    Assert.assertEquals(1, rejectedNational.size());
    Assert.assertEquals(1, rejectedInternational.size());
    Assert.assertEquals(2, priorityCustomer.size());

  }

}
TOP

Related Classes of org.plugtree.training.DSLExampleTest

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.