/* * Copyright 2015 Red Hat, Inc. and/or its affiliates. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * * 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.compiler.phreak; import org.drools.core.common.InternalFactHandle; import org.junit.Test; import org.kie.api.io.ResourceType; import org.kie.internal.KnowledgeBase; import org.kie.internal.KnowledgeBaseFactory; import org.kie.internal.builder.KnowledgeBuilder; import org.kie.internal.builder.KnowledgeBuilderFactory; import org.kie.internal.io.ResourceFactory; import org.kie.internal.runtime.StatefulKnowledgeSession; public class PhreakLiaNodeTest { @Test public void test() { String str = "package org.drools.compiler.test\n" + "\n" + "import " + A.class.getCanonicalName() + "\n" + "import " + B.class.getCanonicalName() + "\n" + "\n" + "rule r1 \n" + " when \n" + " $a : A( object == 1 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n" + "rule r2 \n" + " when \n" + " $a : A( object == 2 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n " + "rule r3 \n" + " when \n" + " $a : A( object == 2 )\n" + " $b : B( )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n " + "rule r4 \n" + " when \n" + " $a : A( object == 3 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n"; KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add( ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL); if ( builder.hasErrors() ) { throw new RuntimeException(builder.getErrors().toString()); } KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages()); StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession(); InternalFactHandle fhB = ( InternalFactHandle ) ksession.insert( B.b(1) ); InternalFactHandle fhA = ( InternalFactHandle ) ksession.insert( A.a(1) ); ksession.fireAllRules(); System.out.println( "---1---" ); // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); // System.out.println( "---2---" ); // ksession.update( fhA, A.a(2) ); ksession.fireAllRules(); System.out.println( "---3---" ); ksession.update( fhA, A.a(2) ); ksession.fireAllRules(); System.out.println( "---4---" ); ksession.update( fhA, A.a(3) ); ksession.fireAllRules(); System.out.println( "---5---" ); ksession.update( fhB, B.b(1) ); ksession.update( fhA, A.a(3) ); ksession.fireAllRules(); // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); // // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); ksession.dispose(); } @Test public void test2() { String str = "package org.drools.compiler.test\n" + "\n" + "import " + A.class.getCanonicalName() + "\n" + "import " + B.class.getCanonicalName() + "\n" + "\n" + "rule r1 \n" + " when \n" + " $a : A( object == 1 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n" + "rule r2 \n" + " when \n" + " $a : A( object == 2 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n " + "rule r3 \n" + " when \n" + " $a : A( object == 2 )\n" + " $b : B( )\n" + " then \n" + " System.out.println( $a + \" : \" + $b );" + " modify($a) { setObject(3) }; \n" + "end \n " + "rule r4 \n" + " when \n" + " $a : A( object == 3 )\n" + " then \n" + " System.out.println( $a ); \n" + "end \n"; KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add( ResourceFactory.newByteArrayResource( str.getBytes() ), ResourceType.DRL); if ( builder.hasErrors() ) { throw new RuntimeException(builder.getErrors().toString()); } KnowledgeBase knowledgeBase = KnowledgeBaseFactory.newKnowledgeBase(); knowledgeBase.addKnowledgePackages(builder.getKnowledgePackages()); StatefulKnowledgeSession ksession = knowledgeBase.newStatefulKnowledgeSession(); InternalFactHandle fhB = ( InternalFactHandle ) ksession.insert( B.b(1) ); InternalFactHandle fhA = ( InternalFactHandle ) ksession.insert( A.a(1) ); ksession.fireAllRules(); System.out.println( "---1---" ); // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); // System.out.println( "---2---" ); // InternalFactHandle fhB2 = ( InternalFactHandle ) ksession.insert( B.b(2) ); InternalFactHandle fhB3 = ( InternalFactHandle ) ksession.insert( B.b(3) ); ksession.update( fhA, A.a(2) ); ksession.fireAllRules(); System.out.println( "---3---" ); // ksession.update( fhA, a(2) ); // ksession.fireAllRules(); // System.out.println( "---4---" ); // // ksession.update( fhA, a(3) ); // ksession.fireAllRules(); // System.out.println( "---5---" ); // // ksession.update( fhB, b(1) ); // // ksession.update( fhA, a(3) ); // ksession.fireAllRules(); // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); // // ksession.update( fhA, a(1) ); // ksession.fireAllRules(); ksession.dispose(); } }