org.junit.jupiter.api.function.ThrowingSupplier#org.kie.internal.utils.KieHelper源码实例Demo

下面列出了org.junit.jupiter.api.function.ThrowingSupplier#org.kie.internal.utils.KieHelper 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

源代码1 项目: kogito-runtimes   文件: AbductionTest.java
protected KieSession getSessionFromString( String drlString, KieBaseConfiguration kbConf ) {
    KieHelper kieHelper = new KieHelper();
    kieHelper.addContent( drlString, ResourceType.DRL );

    Results res = kieHelper.verify();
    if ( res.hasMessages( Message.Level.ERROR ) ) {
        fail( res.getMessages( Message.Level.ERROR ).toString() );
    }

    if ( kbConf == null ) {
        kbConf = KieServices.Factory.get().newKieBaseConfiguration();
    }
    kbConf.setOption( EqualityBehaviorOption.EQUALITY );
    KieBase kieBase = kieHelper.build( kbConf );


    KieSessionConfiguration ksConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    ((SessionConfiguration) ksConf).setBeliefSystemType( BeliefSystemType.DEFEASIBLE );
    return kieBase.newKieSession( ksConf, null );
}
 
源代码2 项目: kogito-runtimes   文件: PropertySpecificTest.java
@Test
public void testRTNodeWithConstraintsNoPropertySpecific() {
    String rule = "package org.drools.compiler.integrationtests\n" +
                  "import " + Person.class.getCanonicalName() + "\n" +
                  "rule r1\n" +
                  "when\n" +
                  "   Person( name == 'bobba')\n" +
                  "then\n" +
                  "end\n";
    
    KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build();
    
    ObjectTypeNode otn = getObjectTypeNode(kbase, "Person" );
    assertNotNull( otn );

    AlphaNode alphaNode = ( AlphaNode ) otn.getObjectSinkPropagator().getSinks()[0];
    assertEquals( AllSetBitMask.get(), alphaNode.getDeclaredMask() );
    assertEquals( AllSetBitMask.get(), alphaNode.getInferredMask() );
    
    
    LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) alphaNode.getObjectSinkPropagator().getSinks()[0];
    
    RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0];
    assertEquals( AllSetBitMask.get(), rtNode.getDeclaredMask() );
    assertEquals( AllSetBitMask.get(), rtNode.getInferredMask() );
}
 
源代码3 项目: kogito-runtimes   文件: JittingTest.java
@Test
public void testJittingEnum() {
    final String drl = "import " + AnEnum.class.getCanonicalName() + ";\n" +
            " rule R1 \n" +
            " when \n" +
            "    $enumFact: AnEnum(this == AnEnum.FIRST)\n" +
            " then \n" +
            " end ";

    final KieHelper kieHelper = new KieHelper();
    kieHelper.addContent( drl, ResourceType.DRL );
    final KieBase kieBase = kieHelper.build(ConstraintJittingThresholdOption.get(0));
    final KieSession kieSession = kieBase.newKieSession();

    kieSession.insert(AnEnum.FIRST);
    assertThat(kieSession.fireAllRules()).isEqualTo(1);
}
 
源代码4 项目: kogito-runtimes   文件: ParallelEvaluationTest.java
@Test
public void testMultipleParallelKieSessionsWithDeletes() throws InterruptedException, ExecutionException, TimeoutException {
    final int NUMBER_OF_PARALLEL_SESSIONS = 5;

    /* Create KIE base */
    StringBuilder sb = new StringBuilder(400);
    sb.append("global java.util.List list;\n");
    for (int i = 1; i < 11; i++) {
        sb.append(getRule(i, "delete( $i );\n"));
    }
    for (int i = 1; i < 11; i++) {
        sb.append(getNotRule(i));
    }
    KieBase kbase = new KieHelper().addContent(sb.toString(), ResourceType.DRL)
            .build(MultithreadEvaluationOption.YES);

    List<Callable<Void>> tasks = new ArrayList<>();
    for (int i = 0; i < NUMBER_OF_PARALLEL_SESSIONS; i++) {
        tasks.add(getMultipleParallelKieSessionsWithDeletesCallable(kbase));
    }

    /* Run tasks in parallel */
    runTasksInParallel(tasks);
}
 
源代码5 项目: kogito-runtimes   文件: TypeDeclarationTest.java
@Test
public void testGenerics() throws Exception {
    // DROOLS-4939
    String drl =
            "package org.drools.compiler\n" +
                    "import java.util.List\n" +
                    "declare Node\n" +
                    "    values: List<String>\n" +
                    "end\n" +
                    "rule R1 when\n" +
                    "   $node: Node( values.get(0).length == 4 )\n" +
                    "then\n" +
                    "   System.out.println( $node );\n" +
                    "end";

    KieBase kbase = new KieHelper().addContent(drl, ResourceType.DRL).build();
    KieSession ksession = kbase.newKieSession();

    FactType nodeType = kbase.getFactType( "org.drools.compiler", "Node" );
    Object parent = nodeType.newInstance();
    nodeType.set( parent, "values", Arrays.asList("test") );
    ksession.insert( parent );

    int rules = ksession.fireAllRules();
    assertEquals( 1, rules );
}
 
源代码6 项目: kogito-runtimes   文件: PropertySpecificTest.java
@Test
public void testBetaNodeWithConstraintsNoPropertySpecific() {
    String rule = "package org.drools.compiler.integrationtests\n" +
                  "import " + Person.class.getCanonicalName() + "\n" +
                  "import " + Cheese.class.getCanonicalName() + "\n" +
                  "rule r1\n" +
                  "when\n" +
                  "   Person()\n" +
                  "   Cheese( type == 'brie' )\n" +
                  "then\n" +
                  "end\n";
    
    KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build();
    
    ObjectTypeNode otn = getObjectTypeNode(kbase, "Cheese" );
    assertNotNull( otn );

    AlphaNode alphaNode = ( AlphaNode ) otn.getObjectSinkPropagator().getSinks()[0];
    assertEquals( AllSetBitMask.get(), alphaNode.getDeclaredMask() );
    assertEquals( AllSetBitMask.get(), alphaNode.getInferredMask() );
    
    BetaNode betaNode = ( BetaNode ) alphaNode.getObjectSinkPropagator().getSinks()[0];
    
    assertEquals( AllSetBitMask.get(), betaNode.getRightDeclaredMask() );
    assertEquals( AllSetBitMask.get(), betaNode.getRightInferredMask() );
}
 
源代码7 项目: kogito-runtimes   文件: PolymorphismTest.java
@Test
public void testModifySubclassOverWindow() {
    // DROOLS-1501
    String drl = "declare Number @role( event ) end\n" +
                 "declare Integer @role( event ) end\n" +
                 "\n" +
                 "rule R1 no-loop when\n" +
                 "    $i: Integer()\n" +
                 "then\n" +
                 "    update($i);\n" +
                 "end\n" +
                 "rule R2 when\n" +
                 "    $n: Number() over window:length(1)\n" +
                 "then\n" +
                 "end";

    KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
                                         .build( EventProcessingOption.STREAM )
                                         .newKieSession();
    ksession.insert(1);
    ksession.fireAllRules();
}
 
源代码8 项目: kogito-runtimes   文件: MarshallerTest.java
@ParameterizedMarshallerTest
public void testFromWithFireAfterSerialization(Environment env) throws Exception {
    String str =
            "import java.util.Collection\n" +
                    "rule R1 when\n" +
                    "    String() from [ \"x\", \"y\", \"z\" ]\n" +
                    "then\n" +
                    "end\n";

    KieBase kbase = new KieHelper().addContent(str, ResourceType.DRL).build();
    KieSession ksession = null;
    try {
        ksession = kbase.newKieSession(null, env);

        ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, true);

        assertEquals(3, ksession.fireAllRules());
    } finally {
        if (ksession != null) {
            ksession.dispose();
        }
    }
}
 
源代码9 项目: kogito-runtimes   文件: QueryTest.java
@Test
public void testQueryWithIncompatibleArgs() {
    String drl = "global java.util.List list; " +
                 "" +
                 "query foo( String $s, String $s, String $s ) end " +
                 "" +
                 "rule React \n" +
                 "when\n" +
                 "  $i : Integer() " +
                 "  foo( $i, $x, $i ; ) " +
                 "then\n" +
                 "end";

    KieHelper helper = new KieHelper();
    helper.addContent( drl, ResourceType.DRL );
    Results results = helper.verify();
    assertTrue( results.hasMessages( Message.Level.ERROR ) );
    assertEquals( 2, results.getMessages( Message.Level.ERROR ).size() );
}
 
源代码10 项目: kogito-runtimes   文件: PropertySpecificTest.java
@Test
public void testRTNodeNoConstraintsNoPropertySpecific() {
    String rule = "package org.drools.compiler.integrationtests\n" +
                  "import " + Person.class.getCanonicalName() + "\n" +
                  "rule r1\n" +
                  "when\n" +
                  "   Person()\n" +
                  "then\n" +
                  "end\n";
    
    KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build();
    
    ObjectTypeNode otn = getObjectTypeNode(kbase, "Person" );
    assertNotNull( otn );

    LeftInputAdapterNode liaNode = ( LeftInputAdapterNode ) otn.getObjectSinkPropagator().getSinks()[0];
    
    RuleTerminalNode rtNode = ( RuleTerminalNode ) liaNode.getSinkPropagator().getSinks()[0];
    assertEquals( AllSetBitMask.get(), rtNode.getDeclaredMask() );
    assertEquals( AllSetBitMask.get(), rtNode.getInferredMask() );
}
 
源代码11 项目: kogito-runtimes   文件: TypeDeclarationTest.java
@Test
public void testRedeclareWithInterfaceExtensionAndOverride() {
    final String s1 = "package test;\n" +

                      "declare trait " + Ext.class.getCanonicalName() + " extends " + Base.class.getCanonicalName() + " " +
                      " fld : String " +
                      "end " +

                      "declare trait " + Base.class.getCanonicalName() + " " +
                      "end " +
                      "";

    KieHelper kh = new KieHelper();
    kh.addContent( s1, ResourceType.DRL );

    assertEquals( 0, kh.verify().getMessages( Message.Level.ERROR ).size() );
}
 
源代码12 项目: kogito-runtimes   文件: PropertyReactivityTest.java
@Test
public void testModifyWithGetter() {
    final String rule1 =
            "package foo.bar\n" +
            "import " + Person.class.getName() + "\n" +
            "declare Person @propertyReactive end\n" +
            "rule x\n" +
            "    when\n" +
            "       $p : Person( address != null ) @watch(!address) \n" +
            "    then\n" +
            "       modify($p){getAddress().setStreet(\"foo\");}\n" +
            "end";

    final KieHelper helper = new KieHelper();
    helper.addContent(rule1, ResourceType.DRL);
    final KieSession ksession = helper.build().newKieSession();

    final Person p = new Person();
    p.setAddress(new Address());
    ksession.insert(p);

    final int fired = ksession.fireAllRules(10);

    assertEquals(1, fired);
    assertEquals("foo", p.getAddress().getStreet());
}
 
源代码13 项目: kogito-runtimes   文件: OOPathQueriesTest.java
@Test
public void testQueryFromCode() {
    final String drl =
            "import org.drools.compiler.oopath.model.Thing;\n" +
                    "query isContainedIn( Thing $x, Thing $y )\n" +
                    "    $y := /$x/children\n" +
                    "or\n" +
                    "    ( $z := /$x/children and isContainedIn( $z, $y; ) )\n" +
                    "end\n";

    final Thing smartphone = new Thing("smartphone");
    final List<String> itemList = Arrays.asList(new String[] { "display", "keyboard", "processor" });
    itemList.stream().map(item -> new Thing(item)).forEach((thing) -> smartphone.addChild(thing));

    final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
            .build()
            .newKieSession();
    ksession.insert(smartphone);

    final QueryResults queryResults = ksession.getQueryResults("isContainedIn", new Object[] { smartphone, Variable.v });
    final List<String> resultList = StreamSupport.stream(queryResults.spliterator(), false)
            .map(row -> ((Thing) row.get("$y")).getName()).collect(Collectors.toList());
    assertThat(resultList).as("Query does not contain all items").containsAll(itemList);

    ksession.dispose();
}
 
源代码14 项目: kogito-runtimes   文件: PropertyReactivityTest.java
@Test
public void testUpdateOnNonExistingProperty() {
    // DROOLS-2170
    final String str1 =
            "import " + Klass.class.getCanonicalName() + "\n" +
            "rule R when\n" +
            "  Klass( b == 2 )\n" +
            "then\n" +
            "end\n";

    final KieSession ksession = new KieHelper().addContent( str1, ResourceType.DRL )
            .build()
            .newKieSession();

    final Klass bean = new Klass( 1, 2, 3, 4, 5, 6 );
    final FactHandle fh = ksession.insert( bean );
    ksession.fireAllRules();

    try {
        ksession.update( fh, bean, "z" );
        fail("Trying to update not existing property must fail");
    } catch (Exception e) {
        assertTrue( e.getMessage().contains( Klass.class.getName() ) );
    }
}
 
源代码15 项目: kogito-runtimes   文件: PropertyReactivityTest.java
@Test
public void testPRAfterAccumulate() {
    // DROOLS-2427
    final String str1 =
            "import " + Order.class.getCanonicalName() + "\n" +
            "import " + OrderLine.class.getCanonicalName() + "\n" +
            "rule R when\n" +
            "        $o: Order($lines: orderLines)\n" +
            "        Number(intValue >= 15) from accumulate(\n" +
            "            OrderLine($q: quantity) from $lines\n" +
            "            , sum($q)\n" +
            "        )\n" +
            "    then\n" +
            "        modify($o) { setPrice(10) }\n" +
            "end\n";

    final KieSession ksession = new KieHelper().addContent( str1, ResourceType.DRL )
            .build()
            .newKieSession();

    Order order = new Order( Arrays.asList(new OrderLine( 9 ), new OrderLine( 8 )), 12 );
    ksession.insert( order );
    ksession.fireAllRules();

    assertEquals( 10, order.getPrice() );
}
 
源代码16 项目: kogito-runtimes   文件: QueryTest.java
@Test
public void testQueryWithSyntaxError() {
    String drl = "global java.util.List list; " +
                 "" +
                 "query foo( Integer $i ) end " +
                 "" +
                 "rule React \n" +
                 "when\n" +
                 "  $i : Integer() " +
                 "  foo( $i ) " +   // missing ";" should result in 1 compilation error
                 "then\n" +
                 "end";

    KieHelper helper = new KieHelper();
    helper.addContent( drl, ResourceType.DRL );
    Results results = helper.verify();
    assertTrue( results.hasMessages( Message.Level.ERROR ) );
    assertEquals( 1, results.getMessages( Message.Level.ERROR ).size() );
}
 
源代码17 项目: fw-spring-cloud   文件: KieSessionUtils.java
public static KieSession createKieSessionFromDRL(String drl) throws Exception{
    KieHelper kieHelper = new KieHelper();
    kieHelper.addContent(drl, ResourceType.DRL);
    Results results = kieHelper.verify();
    if (results.hasMessages(Message.Level.WARNING, Message.Level.ERROR)) {
        List<Message> messages = results.getMessages(Message.Level.WARNING, Message.Level.ERROR);
        for (Message message : messages) {
            System.out.println("Error: "+message.getText());
        }
        // throw new IllegalStateException("Compilation errors were found. Check the logs.");
    }
    return kieHelper.build().newKieSession();
}
 
源代码18 项目: kogito-runtimes   文件: KieSessionIterationTest.java
@BeforeEach
public void setup() {
    this.kieBase = new KieHelper().build();
    // create several KieSessions
    this.kieBase.newKieSession();
    this.kieBase.newKieSession();
    this.kieBase.newKieSession();
}
 
源代码19 项目: kogito-runtimes   文件: OOPathOnGraphTest.java
@Test
public void testOOPathOnGraphWithReactiveContentModificationInSubgraph() {
    String drl =
            "import org.drools.compiler.oopath.graph.*;\n" +
            "import " + Library.class.getCanonicalName() + ";\n" +
            "import " + Book.class.getCanonicalName() + ";\n" +
            "import " + Person.class.getCanonicalName() + ";\n" +
            "global java.util.List list\n" +
            "\n" +
            "rule R when\n" +
            "  Vertex( it instanceof Library, $v : /outVs/outVs[ /it#Person[ age > 25 ] ] )\n" +
            "then\n" +
            "  list.add( ((Person)$v.getIt()).getName() );\n" +
            "end\n";

    KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
                                         .build()
                                         .newKieSession();

    List<String> list = new ArrayList<String>();
    ksession.setGlobal( "list", list );

    Vertex<Library> library = getGraph();
    ksession.insert( library );
    ksession.fireAllRules();

    assertEquals( 1, list.size() );
    assertTrue( list.contains( "Mario" ) );
    list.clear();

    Person raoul = (Person)library.getOutVs().get(0).getOutVs().get(0).getIt();
    assertEquals( "Raoul", raoul.getName() );
    raoul.setAge( raoul.getAge() + 1 );

    ksession.fireAllRules();
    assertEquals( 1, list.size() );
    assertTrue( list.contains( "Raoul" ) );
}
 
源代码20 项目: kogito-runtimes   文件: PropertySpecificTest.java
@Test
public void testAccBigDecimal() {
    // DROOLS-4896
    String rule =
            "package com.sample.rules\n" +
            "import java.math.BigDecimal;\n" +
            "import " + BigDecimalFact.class.getCanonicalName() + "\n" +
            "rule R when\n" +
            "        accumulate( BigDecimalFact( $bdVal: bdVal), $minVal : min($bdVal))\n" +
            "        accumulate( BigDecimalFact( $bdVal2: bdVal, $bdVal2 > $minVal), $minVal2 : min($bdVal2))\n" +
            "\n" +
            "        \n" +
            "        $minFact: BigDecimalFact( bdVal == new BigDecimal($minVal.intValue()))\n" +
            "        $minFact2: BigDecimalFact( bdVal == new BigDecimal($minVal2.intValue()))\n" +
            "\n" +
            "then\n" +
            "    BigDecimal $difference = new BigDecimal($minVal2.intValue() - $minVal.intValue());\n" +
            "    $minFact2.setBdDiff($difference);\n" +
            "    update($minFact2);\n" +
            "    retract($minFact);\n" +
            "end\n";

    KieBase kbase = new KieHelper(PropertySpecificOption.ALLOWED).addContent(rule, ResourceType.DRL).build();
    KieSession kSession = kbase.newKieSession();

    final int NUM = 5;

    for (int i = 0; i < NUM; i++) {
        BigDecimalFact fact = new BigDecimalFact(100 + i*i*10);
        kSession.insert(fact);
    }

    assertEquals(NUM-1, kSession.fireAllRules());
}
 
源代码21 项目: kogito-runtimes   文件: OOPathReactiveTest.java
@Test
public void testReactiveMap() {
    final String drl =
            "import org.drools.compiler.oopath.model.*;\n" +
                    "global java.util.List list\n" +
                    "\n" +
                    "rule R when\n" +
                    "  Man( $bodyMeasurement: /wife/bodyMeasurementsMap/entrySet )\n" +
                    "then\n" +
                    "  list.add( $bodyMeasurement.getValue() );\n" +
                    "end\n";

    final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
            .build()
            .newKieSession();

    final List<Integer> list = new ArrayList<>();
    ksession.setGlobal("list", list);

    final Man bob = new Man("Bob", 40);
    final Woman alice = new Woman("Alice", 38);
    alice.putBodyMeasurement(CHEST, 80);
    bob.setWife(alice);

    ksession.insert(bob);
    ksession.fireAllRules();
    assertThat(list).containsExactlyInAnyOrder(80);

    list.clear();
    alice.putBodyMeasurement(RIGHT_FOREARM, 38);
    ksession.fireAllRules();
    assertThat(list).containsExactlyInAnyOrder(38, 80);
}
 
源代码22 项目: kogito-runtimes   文件: MemoryLeakTest.java
@Test
public void testStagedLeftTupleLeak() throws Exception {
    // BZ-1058874
    String str =
            "rule R1 when\n" +
            "    String( this == \"this\" )\n" +
            "    String( this == \"that\" )\n" +
            "then\n" +
            "end\n";

    KieBase kbase = new KieHelper().addContent( str, ResourceType.DRL ).build();
    KieSession ksession = kbase.newKieSession();
    ksession.fireAllRules();

    for ( int i = 0; i < 10; i++ ) {
        FactHandle fh = ksession.insert( "this" );
        ksession.fireAllRules();
        ksession.delete( fh );
        ksession.fireAllRules();
    }

    Rete rete = ( (KnowledgeBaseImpl) kbase ).getRete();
    LeftInputAdapterNode liaNode = null;
    for ( ObjectTypeNode otn : rete.getObjectTypeNodes() ) {
        if ( String.class == otn.getObjectType().getValueType().getClassType() ) {
            AlphaNode alphaNode = (AlphaNode) otn.getObjectSinkPropagator().getSinks()[0];
            liaNode = (LeftInputAdapterNode) alphaNode.getObjectSinkPropagator().getSinks()[0];
            break;
        }
    }

    assertNotNull( liaNode );
    InternalWorkingMemory wm = (InternalWorkingMemory) ksession;
    LeftInputAdapterNode.LiaNodeMemory memory = (LeftInputAdapterNode.LiaNodeMemory) wm.getNodeMemory( liaNode );
    TupleSets<LeftTuple> stagedLeftTuples = memory.getSegmentMemory().getStagedLeftTuples();
    assertNull( stagedLeftTuples.getDeleteFirst() );
    assertNull( stagedLeftTuples.getInsertFirst() );
}
 
源代码23 项目: kogito-runtimes   文件: ExistentialOperatorTest.java
@Test
public void testForallAfterOr() throws Exception {
    // DROOLS-2710
    String str =
            "package redhat\n" +
            "declare Fact\n" +
            "    integer : int\n" +
            "    string1 : String\n" +
            "    string2 : String\n" +
            "end\n" +
            "rule \"Rule\"\n" +
            "when\n" +
            "Fact(string2 == \"Y\")\n" +
            "(\n" +
            "    exists (Fact(integer == 42)) or\n" +
            "    Fact(integer == 43)\n" +
            ")\n" +
            "forall (Fact(string1 == \"X\"))\n" +
            "then\n" +
            "end";

    KieBase kieBase = new KieHelper().addContent( str, ResourceType.DRL ).build();
    KieSession kieSession = kieBase.newKieSession();

    FactType factType = kieBase.getFactType("redhat", "Fact");

    Object fact = factType.newInstance();
    factType.set(fact, "string1", "X");
    factType.set(fact, "string2", "Y");
    factType.set(fact, "integer", 42);

    kieSession.insert(fact);

    int n = kieSession.fireAllRules();
    assertEquals(1, n);
}
 
源代码24 项目: kogito-runtimes   文件: ExpirationTest.java
@Test
public void testAlpha() {
    String drl = "import " + A.class.getCanonicalName() + "\n" +
                 "declare A @role( event ) @expires(11ms) end\n" +
                 "global java.util.concurrent.atomic.AtomicInteger counter;\n" +
                 "rule R0 when\n" +
                 "  $a: A( $Aid: id > 0 )\n" +
                 "then\n" +
                 "  System.out.println(\"[\" + $a + \"]\");" +
                 "  counter.incrementAndGet();\n" +
                 "end";

    KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    sessionConfig.setOption( ClockTypeOption.get( ClockType.PSEUDO_CLOCK.getId() ) );

    KieHelper helper = new KieHelper();
    helper.addContent( drl, ResourceType.DRL );
    KieBase kbase = helper.build( EventProcessingOption.STREAM );
    KieSession ksession = kbase.newKieSession( sessionConfig, null );

    PseudoClockScheduler sessionClock = ksession.getSessionClock();

    AtomicInteger counter = new AtomicInteger( 0 );
    ksession.setGlobal( "counter", counter );

    ksession.insert( new A(1) );

    sessionClock.advanceTime( 10, TimeUnit.MILLISECONDS );
    ksession.insert( new A(2) );

    sessionClock.advanceTime( 10, TimeUnit.MILLISECONDS );
    ksession.fireAllRules();
    assertEquals(2, counter.get());
}
 
源代码25 项目: kogito-runtimes   文件: TypeDeclarationTest.java
@Test
public void testRedeclareClassAsTrait() {
    final String s1 = "package test; " +
                      "global java.util.List list; " +

                      "declare trait " + SomeClass.class.getCanonicalName() + " end ";

    KieHelper kh = new KieHelper();
    kh.addContent( s1, ResourceType.DRL );

    assertEquals( 1, kh.verify().getMessages( Message.Level.ERROR ).size() );
}
 
源代码26 项目: kogito-runtimes   文件: OOPathBindTest.java
@Test
public void testBindListWithConstraint() {
    final String drl =
            "import org.drools.compiler.oopath.model.*;\n" +
                    "global java.util.List list\n" +
                    "\n" +
                    "rule R when\n" +
                    "  Man( $toys: /wife/children[age > 10].toys )\n" +
                    "then\n" +
                    "  list.add( $toys.size() );\n" +
                    "end\n";

    final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
            .build()
            .newKieSession();

    final List<Integer> list = new ArrayList<>();
    ksession.setGlobal( "list", list );

    final Woman alice = new Woman( "Alice", 38 );
    final Man bob = new Man( "Bob", 40 );
    bob.setWife( alice );

    final Child charlie = new Child( "Charles", 12 );
    final Child debbie = new Child( "Debbie", 8 );
    alice.addChild( charlie );
    alice.addChild( debbie );

    charlie.addToy( new Toy( "car" ) );
    charlie.addToy( new Toy( "ball" ) );
    debbie.addToy( new Toy( "doll" ) );

    ksession.insert( bob );
    ksession.fireAllRules();

    assertThat(list).containsExactlyInAnyOrder(2);
}
 
源代码27 项目: hawkular-alerts   文件: CepEngineImpl.java
public void updateConditions(String expiration, Collection<FullTrigger> activeTriggers) {
    expression = new Expression(expiration, activeTriggers);
    log.debugf("Rules: \n  %s", expression);
    stop();
    KieBaseConfiguration kieBaseConfiguration = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
    kieBaseConfiguration.setOption( EventProcessingOption.STREAM );
    KieBase kieBase = new KieHelper().addContent(expression.getDrl(), ResourceType.DRL).build(kieBaseConfiguration);
    KieSessionConfiguration kieSessionConf = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();
    kieSessionConf.setOption( ClockTypeOption.get( "realtime" ) );

    kieSession = kieBase.newKieSession(kieSessionConf, null);
    results = new ArrayList<>();
    kieSession.setGlobal("results", this);
    kieSession.setGlobal("log", log);
    if (log.isDebugEnabled()) {
        kieSession.addEventListener(new CepAgendaEventListener());
        kieSession.addEventListener(new CepRuleRuntimeEventListener());
    }
    log.debugf("Clock time [%s] ", kieSession.getSessionClock().getCurrentTime());

    kieSession.getKieBase().getKiePackages().stream().forEach(p -> log.debugf("Rules: %s", p.getRules()));

    executor.submit(() -> {
        log.info("Starting fireUntilHalt()");
        kieSession.fireUntilHalt();
        log.info("Stopping fireUntilHalt()");
    });
}
 
源代码28 项目: kogito-runtimes   文件: ExtendsTest.java
@Test
public void testInheritFromClassWithDefaults() throws Exception {

    // car is a java class with attributes
    // brand (default ferrari)
    // expensive (default true)
    String s1 = "package org.drools.compiler;\n" +
            "global java.util.List list;\n" +
            "declare Car end\n" +
            "\n" +
            "declare MyCar extends Car \n" +
            " miles : int\n" +
            "end\n" +
            "\n" +
            "rule \"Init\"\n" +
            "when\n" +
            "then\n" +
            "  MyCar c = new MyCar();\n" +
            "  c.setMiles( 100 );" +
            "  insert( c );\n" +
            "end\n" +
            "rule \"Match\"\n" +
            "when\n" +
            "  MyCar( brand == \"ferrari\", expensive == true, $miles : miles ) " +
            "then\n" +
            "  list.add( $miles );\n" +
            "end";

    KieSession kSession = new KieHelper().addContent( s1, ResourceType.DRL )
                                         .build().newKieSession();

    List list = new ArrayList();
    kSession.setGlobal( "list", list );

    kSession.fireAllRules();
    assertEquals( 1, list.size() );
    assertTrue( list.contains( 100 ) );

}
 
源代码29 项目: kogito-runtimes   文件: QueryTest.java
@Test
public void testQueryInSubnetwork() {
    // DROOLS-1386
    String str = "query myquery(Integer $i)\n" +
                 "   $i := Integer()\n" +
                 "end\n" +
                 "\n" +
                 "rule R when\n" +
                 "   String()\n" +
                 "   accumulate (myquery($i;);\n" +
                 "      $result_count : count(1)\n" +
                 "   )\n" +
                 "   eval($result_count > 0)\n" +
                 "then\n" +
                 "end\n\n";

    KieSession ksession = new KieHelper().addContent( str, ResourceType.DRL ).build().newKieSession();

    FactHandle iFH = ksession.insert( 1 );
    FactHandle sFH = ksession.insert( "" );

    ksession.fireAllRules();

    ksession.update( iFH, 1 );
    ksession.delete( sFH );

    ksession.fireAllRules();
}
 
源代码30 项目: kogito-runtimes   文件: OOPathOnGraphTest.java
@Test
public void testOOPathOnGraph() {
    String drl =
            "import org.drools.compiler.oopath.graph.*;\n" +
            "import " + Library.class.getCanonicalName() + ";\n" +
            "import " + Book.class.getCanonicalName() + ";\n" +
            "import " + Person.class.getCanonicalName() + ";\n" +
            "global java.util.List list\n" +
            "\n" +
            "rule R when\n" +
            "  Vertex( it instanceof Library, $a : /outVs/outVs/it#Person[ age > 40 ] )\n" +
            "then\n" +
            "  list.add( $a.getName() );\n" +
            "end\n";

    KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
                                         .build()
                                         .newKieSession();

    List<String> list = new ArrayList<String>();
    ksession.setGlobal( "list", list );

    Vertex<Library> library = getGraph();
    ksession.insert( library );
    ksession.fireAllRules();

    assertEquals( 1, list.size() );
    assertTrue( list.contains( "Mario" ) );
    list.clear();

    Vertex<?> book = library.getOutVs().get(0);
    Vertex<Person> alan = new Vertex<Person>( new Person( "Alan", 53 ) );
    book.connectTo( alan );

    ksession.fireAllRules();
    assertEquals( 1, list.size() );
    assertTrue( list.contains( "Alan" ) );
}