public int executeExample() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); DecisionTableConfiguration dtconf = KnowledgeBuilderFactory.newDecisionTableConfiguration(); dtconf.setInputType( DecisionTableInputType.XLS ); kbuilder.add( ResourceFactory.newClassPathResource( "/data/ExamplePolicyPricing.xls", getClass() ), ResourceType.DTABLE, dtconf ); if ( kbuilder.hasErrors() ) { throw new RuntimeException( kbuilder.getErrors().toString() ); } //BUILD RULEBASE InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); //NEW WORKING MEMORY final KieSession session = kbase.newKieSession(); //now create some test data Driver driver = new Driver(); Policy policy = new Policy(); session.insert( driver ); session.insert( policy ); session.fireAllRules(); System.out.println( "BASE PRICE IS: " + policy.getBasePrice() ); System.out.println( "DISCOUNT IS: " + policy.getDiscountPercent() ); return policy.getBasePrice(); }
@Test public void testPricing() throws Exception { final ExternalSpreadsheetCompiler converter = new ExternalSpreadsheetCompiler(); final List<DataListener> listeners = new ArrayList<DataListener>(); TemplateDataListener l1 = new TemplateDataListener(10, 3, "/templates/test_pricing1.drl"); listeners.add(l1); TemplateDataListener l2 = new TemplateDataListener(30, 3, "/templates/test_pricing2.drl"); listeners.add(l2); converter.compile("/data/ExamplePolicyPricing.xls", InputType.XLS, listeners); //COMPILE KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newByteArrayResource(l1.renderDRL().getBytes()), ResourceType.DRL); kbuilder.add(ResourceFactory.newByteArrayResource(l2.renderDRL().getBytes()), ResourceType.DRL); assertFalse(kbuilder.hasErrors()); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); KieSession kSession = kbase.newKieSession(); //now create some test data Driver driver = new Driver(); Policy policy = new Policy(); kSession.insert(driver); kSession.insert(policy); kSession.fireAllRules(); System.out.println("BASE PRICE IS: " + policy.getBasePrice()); System.out.println("DISCOUNT IS: " + policy.getDiscountPercent()); int basePrice = policy.getBasePrice(); assertEquals(120, basePrice); }
@Test public void testInsurancePricingExample() throws Exception { KnowledgeBase kbase = SerializationHelper.serializeObject( loadKnowledgeBase( "insurance_pricing_example.drl" ) ); StatefulKnowledgeSession ksession = createKnowledgeSession( kbase ); // now create some test data final Driver driver = new Driver(); final Policy policy = new Policy(); ksession.insert( driver ); ksession.insert( policy ); ksession.fireAllRules(); assertEquals( 120, policy.getBasePrice() ); }