/* * Copyright 2010 salaboy. * * 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. * under the License. */ package org.drools.grid; import org.drools.KnowledgeBase; import org.drools.KnowledgeBaseFactoryService; import org.drools.builder.DirectoryLookupFactoryService; import org.drools.builder.KnowledgeBuilder; import org.drools.builder.KnowledgeBuilderFactoryService; import org.drools.builder.ResourceType; import org.drools.io.ResourceFactory; import org.drools.runtime.StatefulKnowledgeSession; import org.junit.Assert; import org.junit.Test; /** * * @author salaboy */ public abstract class ExecutionNodeBase { protected ExecutionNode node; public ExecutionNodeBase() { } @Test public void fireAllRules() { String str = ""; str += "package org.drools \n"; str += "global java.util.List list \n"; str += "rule rule1 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello1!!!\" ); \n"; str += "end \n"; str += "rule rule2 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello2!!!\" ); \n"; str += "end \n"; KnowledgeBuilder kbuilder = this.node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( "Errors: " + kbuilder.getErrors() ); } KnowledgeBase kbase = this.node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(); Assert.assertNotNull( kbase ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); Assert.assertNotNull( ksession ); int fired = ksession.fireAllRules(); Assert.assertEquals( 2, fired ); } @Test public void testExecute() throws Exception { String str = ""; str += "package org.drools \n"; str += "global java.util.List list \n"; str += "rule rule1 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello1!!!\" ); \n"; str += "end \n"; str += "rule rule2 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello2!!!\" ); \n"; str += "end \n"; KnowledgeBuilder kbuilder = this.node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( "Errors: " + kbuilder.getErrors() ); } KnowledgeBase kbase = this.node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(); Assert.assertNotNull( kbase ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); int fired = ksession.fireAllRules(); Assert.assertEquals( 2, fired ); } @Test public void testNamedService() throws Exception { String str = ""; str += "package org.drools \n"; str += "global java.util.List list \n"; str += "rule rule1 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello1!!!\" ); \n"; str += "end \n"; str += "rule rule2 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello2!!!\" ); \n"; str += "end \n"; KnowledgeBuilder kbuilder = this.node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( "Errors: " + kbuilder.getErrors() ); } KnowledgeBase kbase = this.node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(); Assert.assertNotNull( kbase ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); this.node.get( DirectoryLookupFactoryService.class ).register( "ksession1", ksession ); int fired = ((StatefulKnowledgeSession) this.node.get( DirectoryLookupFactoryService.class ).lookup( "ksession1" )).fireAllRules(); Assert.assertEquals( 2, fired ); } @Test public void testVsmPipeline() throws Exception { String str = ""; str += "package org.drools \n"; str += "global java.util.List list \n"; str += "rule rule1 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello1!!!\" ); \n"; str += "end \n"; str += "rule rule2 \n"; str += " dialect \"java\" \n"; str += "when \n"; str += "then \n"; str += " System.out.println( \"hello2!!!\" ); \n"; str += "end \n"; KnowledgeBuilder kbuilder = this.node.get( KnowledgeBuilderFactoryService.class ).newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { System.out.println( "Errors: " + kbuilder.getErrors() ); } KnowledgeBase kbase = this.node.get( KnowledgeBaseFactoryService.class ).newKnowledgeBase(); Assert.assertNotNull( kbase ); kbase.addKnowledgePackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); this.node.get( DirectoryLookupFactoryService.class ).register( "ksession1", ksession ); int fired = ((StatefulKnowledgeSession) this.node.get( DirectoryLookupFactoryService.class ).lookup( "ksession1" )).fireAllRules(); Assert.assertEquals( 2, fired ); } }