org.junit.jupiter.api.function.ThrowingSupplier#org.kie.api.io.ResourceType源码实例Demo

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

源代码1 项目: kogito-runtimes   文件: ParallelBuildTest.java
@Test
public void testParallelBuild() {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();

    StringBuilder sb = new StringBuilder();
    int rc = 0;
    for (Class<?> c : classes) {
        sb.append("rule \"rule_" + rc++ + "\"\n");
        sb.append("  when\n");
        sb.append("    a : " + c.getName() + "()\n");
        sb.append("  then\n");
        sb.append("    System.out.print(\".\");\n");
        sb.append("end\n");
        sb.append("\n");
    }

    kbuilder.add(ResourceFactory.newByteArrayResource(sb.toString().getBytes(StandardCharsets.UTF_8)), ResourceType.DRL);
}
 
源代码2 项目: kogito-runtimes   文件: OOPathBindTest.java
private void testScenarioBindString(final String drl, final String... expectedResults) {
    final KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL )
            .build()
            .newKieSession();

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

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

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

    assertThat(list).containsExactlyInAnyOrder(expectedResults);
}
 
源代码3 项目: 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() );
}
 
源代码4 项目: Liudao   文件: KieService.java
/**
 * 单一规则上线
 *
 * @param packageName
 * @param ruleName
 */
public void addRule(String packageName, String ruleName) {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newClassPathResource(packageName + "/" + ruleName + ".drl"), ResourceType.DRL);
    if (kbuilder.hasErrors()) {
        logger.error("Unable to compile drl. " + packageName + ruleName + ".drl");
        return;
    } else {
        if (kbase.getRule(packageName, ruleName) != null) {
            logger.info("update rule: " + packageName + "." + ruleName);
        } else {
            logger.info("add rule: " + packageName + "." + ruleName);
        }
    }

    kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
    kieSession = kbase.newStatelessKieSession();
    setGlobal();
    printRules();
}
 
源代码5 项目: kogito-runtimes   文件: ParallelEvaluationTest.java
@Test
public void testMultipleParallelKieSessionsFireUntilHalt() 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 = 0; i < 10; i++) {
        sb.append(getRule(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(getMultipleParallelKieSessionsFireUntilHaltCallable(kbase, false));
    }

    /* Run tasks in parallel */
    runTasksInParallel(tasks);
}
 
@Test
public void testSegmentMemoryPrototype() {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource(DRL.getBytes()),
                  ResourceType.DRL );

    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages( kbuilder.getKnowledgePackages() );

    KieSession ksession = kbase.newKieSession();
    try {
        checkKieSession(ksession);
    } finally {
        ksession.dispose();
    }

    // Create a 2nd KieSession (that will use segment memory prototype) and check that it works as the former one
    KieSession ksession2 = kbase.newKieSession();
    try {
        checkKieSession(ksession2);
    } finally {
        ksession2.dispose();
    }
}
 
源代码7 项目: kogito-runtimes   文件: KnowledgeBuilderTest.java
@Test
public void testAddKPackageCollection() throws Exception {
    String rule = "package org.drools.compiler.test\n" +
                  "import org.drools.compiler.StockTick\n" +
                  "declare StockTick @role(event) end\n" +
                  "rule R1 when\n" +
                  "   StockTick()\n" +
                  "then\n" +
                  "end\n";

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource( rule.getBytes() ), ResourceType.DRL );
    assertFalse(kbuilder.hasErrors(), kbuilder.getErrors().toString());

    Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages();
    assertEquals( 2, kpkgs.size() );

    byte[] skpkg = DroolsStreamUtils.streamOut( kpkgs );

    kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource( skpkg ), ResourceType.PKG );
    assertFalse(kbuilder.hasErrors(), kbuilder.getErrors().toString());

    kpkgs = kbuilder.getKnowledgePackages();
    assertEquals( 2, kpkgs.size() );
}
 
private Collection<CompositePackageDescr> buildPackageDescr() {
    Map<String, CompositePackageDescr> packages = new HashMap<>();
    buildResource(packages, ResourceType.DRL, ResourceToPkgDescrMapper.DRL_TO_PKG_DESCR);
    buildResource(packages, ResourceType.GDRL,ResourceToPkgDescrMapper. DRL_TO_PKG_DESCR);
    buildResource(packages, ResourceType.RDRL, ResourceToPkgDescrMapper.DRL_TO_PKG_DESCR);
    buildResource(packages, ResourceType.DESCR, ResourceToPkgDescrMapper.DRL_TO_PKG_DESCR);
    buildResource(packages, ResourceType.DSLR, ResourceToPkgDescrMapper.DSLR_TO_PKG_DESCR);
    buildResource(packages, ResourceType.RDSLR, ResourceToPkgDescrMapper.DSLR_TO_PKG_DESCR);
    buildResource(packages, ResourceType.XDRL, ResourceToPkgDescrMapper.XML_TO_PKG_DESCR);
    buildResource(packages, ResourceType.DTABLE, ResourceToPkgDescrMapper.DTABLE_TO_PKG_DESCR);
    buildResource(packages, ResourceType.TDRL, ResourceToPkgDescrMapper.DRL_TO_PKG_DESCR);
    buildResource(packages, ResourceType.TEMPLATE, ResourceToPkgDescrMapper.TEMPLATE_TO_PKG_DESCR);
    buildResource(packages, ResourceType.GDST, ResourceToPkgDescrMapper.GUIDED_DTABLE_TO_PKG_DESCR);
    this.resourcesByType.remove(ResourceType.DRT); // drt is a template for dtables but doesn't have to be built on its own
    return packages.values();
}
 
源代码9 项目: kogito-runtimes   文件: KnowledgeBuilderTest.java
@Test
public void testAddPackageSingle() throws Exception {
    String rule = "package org.drools.compiler.test\n" +
                  "import org.drools.compiler.StockTick\n" +
                  "rule R1 when\n" +
                  "   StockTick()\n" +
                  "then\n" +
                  "end\n";

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL);

    assertFalse(kbuilder.hasErrors(), kbuilder.getErrors().toString());

    Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages();
    assertEquals( 2, kpkgs.size() );
    KiePackage kpkg = kpkgs.iterator().next();
    assertEquals( 1, kpkg.getRules().size() );
}
 
@Test
public void testSessionCache() {
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource(DRL.getBytes()),
                  ResourceType.DRL );

    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages( kbuilder.getKnowledgePackages() );

    StatefulKnowledgeSessionImpl ksession = (StatefulKnowledgeSessionImpl)kbase.newKieSession();
    try {
        checkKieSession(ksession);
    } finally {
        try {
            ksession.reset();
            checkKieSession(ksession);
        } finally {
            ksession.dispose();
        }
    }
}
 
源代码11 项目: kogito-runtimes   文件: ParallelEvaluationTest.java
@Test
public void testMultipleParallelKieSessionsWithInsertions() throws InterruptedException, ExecutionException, TimeoutException {
    final int NUMBER_OF_PARALLEL_SESSIONS = 5;

    /* Create KIE base */
    StringBuilder sb = new StringBuilder();
    sb.append("global java.util.List list;\n");
    final int ruleNr = 200;

    for (int i = 0; i < ruleNr; i++) {
        sb.append(getRule(i, "insert( $i + 10 );\ninsert( \"\" + ($i + 10) );\n"));
    }
    KieBase kBase = new KieHelper().addContent(sb.toString(), ResourceType.DRL)
            .build(MultithreadEvaluationOption.YES);

    /* Create parallel tasks */
    List<Callable<Void>> tasks = new ArrayList<>();
    for (int i = 0; i < NUMBER_OF_PARALLEL_SESSIONS; i++) {
        tasks.add(getMultipleParallelKieSessionsWithInsertionsCallable(kBase, ruleNr));
    }

    runTasksInParallel(tasks);
}
 
源代码12 项目: kogito-runtimes   文件: MatchTest.java
@Test
public void testGetObjectsAccumulateWithNoMatchingFacts() {
    // DROOLS-1470
    String drl =
            "global java.util.List list\n" +
            "rule R when\n" +
            "  accumulate(\n" +
            "    Object(false);\n" +
            "    $total : count()\n" +
            "  )\n" +
            "then\n" +
            "  list.addAll(((org.drools.core.spi.Activation)kcontext.getMatch()).getObjectsDeep());\n" +
            "end\n";

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

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

    ksession.fireAllRules();
    assertTrue(list.contains(0L));

    ksession.dispose();
}
 
源代码13 项目: 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() );
}
 
源代码14 项目: kogito-runtimes   文件: ExtendsTest.java
@Test
public void testDeclareExtendsWithFullyQualifiedName() {
    String drl = "package org.drools.extends.test; \n" +
                 "" +
                 "declare org.drools.extends.test.Foo end \n" +
                 "declare org.drools.extends.test.Bar extends org.drools.extends.test.Foo end \n" +
                 "";
    KieServices kieServices = KieServices.Factory.get();
    KieFileSystem kfs = kieServices.newKieFileSystem();
    kfs.write( kieServices.getResources().newByteArrayResource( drl.getBytes() )
                       .setSourcePath( "test.drl" )
                       .setResourceType( ResourceType.DRL ) );
    KieBuilder kieBuilder = kieServices.newKieBuilder( kfs );
    kieBuilder.buildAll();

    assertFalse( kieBuilder.getResults().hasMessages( Message.Level.ERROR ) );

}
 
源代码15 项目: 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();
}
 
源代码16 项目: kogito-runtimes   文件: StrictAnnotationTest.java
@Test
public void testExplictPositionalArguments() throws InstantiationException, IllegalAccessException {
    String str = "package org.test;\n" +
                 "global java.util.List names;\n" +
                 "declare Person\n" +
                 "    @Position(1) name : String \n" +
                 "    @Position(0) age : int \n" +
                 "end\n" +
                 "rule R when \n" +
                 "    $p : Person( 37, \"Mark\"; )\n" +
                 "then\n" +
                 "    names.add( $p.getName() );\n" +
                 "end\n";

    KieBase kieBase = new KieHelper()
            .setKieModuleModel(KieServices.Factory.get().newKieModuleModel()
                                                  .setConfigurationProperty(LanguageLevelOption.PROPERTY_NAME,
                                                                            LanguageLevelOption.DRL6_STRICT.toString()))
            .addContent(str, ResourceType.DRL)
            .build();

    FactType factType = kieBase.getFactType("org.test", "Person");
    Object instance = factType.newInstance();
    factType.set(instance, "name", "Mark");
    factType.set(instance, "age", 37);

    List<String> names = new ArrayList<String>();
    KieSession ksession = kieBase.newKieSession();
    try {
        ksession.setGlobal("names", names);

        ksession.insert(instance);
        ksession.fireAllRules();

        assertEquals(1, names.size());
        assertEquals("Mark", names.get(0));
    } finally {
        ksession.dispose();
    }
}
 
源代码17 项目: kogito-runtimes   文件: ExecutionFlowControlTest.java
@Test
public void testRuleFlowUpgrade() throws Exception {
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    // Set the system property so that automatic conversion can happen
    System.setProperty( "drools.ruleflow.port", "true" );

    kbuilder.add( ResourceFactory.newClassPathResource("ruleflow.drl", ExecutionFlowControlTest.class), ResourceType.DRL);
    kbuilder.add( ResourceFactory.newClassPathResource("ruleflow40.rfm", ExecutionFlowControlTest.class), ResourceType.DRF);
    KieBase kbase = kbuilder.newKieBase();
    final KieSession ksession = kbase.newKieSession();
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    ksession.fireAllRules();
    assertEquals(0, list.size());
    final ProcessInstance processInstance = ksession.startProcess("0");
    assertEquals( ProcessInstance.STATE_COMPLETED,
            processInstance.getState() );
    
    assertEquals( 4,
                  list.size() );
    assertEquals( "Rule1",
                  list.get( 0 ) );
    list.subList(1,2).contains( "Rule2" );
    list.subList(1,2).contains( "Rule3" );
    assertEquals( "Rule4",
                  list.get( 3 ) );
    assertEquals( ProcessInstance.STATE_COMPLETED,
                  processInstance.getState() );
    // Reset the system property so that automatic conversion should not happen
    System.setProperty("drools.ruleflow.port", "false");
}
 
源代码18 项目: kogito-runtimes   文件: OOPathTest.java
@Test
public void testDereferencedDeclarationOutsideOOPath() {
    // DROOLS-1411
    final String drl =
            "import org.drools.compiler.oopath.model.*;\n" +
            "global java.util.Set duplicateNames; \n" +
            "\n" +
            "rule DIFF_FILES_BUT_WITH_SAME_FILENAME when\n" +
            "  $dir1 : TMFileSet( $ic1 : /files )\n" +
            "  TMFileSet( this == $dir1, $ic2 : /files[this != $ic1], $ic2.name == $ic1.name )\n" +
            "then\n" +
            "  System.out.println( $dir1 + \".: \" + $ic1 + \" \" + $ic2 );\n" +
            "  duplicateNames.add( $ic1.getName() );\n" +
            "end\n";

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

    final Set<String> duplicateNames = new HashSet<>();
    ksession.setGlobal("duplicateNames", duplicateNames);

    final TMFileSet x = new TMFileSet("X");
    final TMFile file0 = new TMFile("File0", 47);
    final TMFile file1 = new TMFile("File1", 47);
    final TMFile file2 = new TMFile("File0", 47);
    x.getFiles().addAll(Arrays.asList(file0, file1, file2));

    ksession.insert(x);
    ksession.fireAllRules();

    assertTrue( duplicateNames.contains("File0") );
    assertFalse( duplicateNames.contains("File1") );
}
 
private KieBase getKnowledgeBase(final Reader[] readers) throws IOException,
                                                              ClassNotFoundException {
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    for ( Reader reader : readers ) {
        kbuilder.add( ResourceFactory.newReaderResource(reader),
                      ResourceType.DRL );
    }
    assertFalse(kbuilder.hasErrors(), kbuilder.getErrors().toString());
    KieBase kbase = getKnowledgeBase( kbuilder );
    return kbase;
}
 
源代码20 项目: kogito-runtimes   文件: LegacyTraitTest.java
private KieSession getSessionFromString(String drl) {
    KnowledgeBuilder knowledgeBuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    knowledgeBuilder.add(ResourceFactory.newByteArrayResource(drl.getBytes()),
                         ResourceType.DRL);
    if (knowledgeBuilder.hasErrors()) {
        throw new RuntimeException(knowledgeBuilder.getErrors().toString());
    }

    InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(knowledgeBuilder.getKnowledgePackages());

    KieSession session = kbase.newKieSession();
    return session;
}
 
源代码21 项目: kogito-runtimes   文件: PropertySpecificTest.java
@Test
public void testWrongPropertyNameInWatchAnnotation() throws Exception {
    String rule = "package org.drools.compiler.integrationtests\n" +
            "dialect \"mvel\"\n" +
            "declare A\n" +
            "    s : String\n" +
            "end\n" +
            "declare B\n" +
            "    @propertyReactive\n" +
            "    on : boolean\n" +
            "    s : String\n" +
            "end\n" +
            "rule R1\n" +
            "when\n" +
            "    A($s : s)\n" +
            "    $b : B(s != $s) @watch( !s1, on )\n" +
            "then\n" +
            "    modify($b) { setS($s) }\n" +
            "end\n" +
            "rule R2\n" +
            "when\n" +
            "    $b : B(on == false)\n" +
            "then\n" +
            "    modify($b) { setOn(true) }\n" +
            "end\n";

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource(rule.getBytes()), ResourceType.DRL );
    assertEquals(1, kbuilder.getErrors().size());
}
 
源代码22 项目: kogito-runtimes   文件: KieAssemblerService.java
default void addResources(Object kbuilder, Collection<ResourceWithConfiguration> resources, ResourceType type) throws Exception {
    for (ResourceWithConfiguration rd : resources) {
        rd.getBeforeAdd().accept(kbuilder);
        addResource(kbuilder, rd.getResource(), type, rd.getResourceConfiguration());
        rd.getAfterAdd().accept(kbuilder);
    }
}
 
源代码23 项目: kogito-runtimes   文件: CommonTestMethodBase.java
protected void testInvalidDrl(final String drl) {
    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newByteArrayResource(drl.getBytes()), ResourceType.DRL);

    if (kbuilder.hasErrors()) {
        logger.warn(kbuilder.getErrors().toString());
    }
    assertTrue(kbuilder.hasErrors());
}
 
源代码24 项目: kogito-runtimes   文件: OOPathTest.java
@Test
public void testIndexedAccess() {
    final String drl =
            "import org.drools.compiler.oopath.model.*;\n" +
            "global java.util.List list\n" +
            "\n" +
            "rule R when\n" +
            "  Man( $toy: /wife/children[0]/toys[1] )\n" +
            "then\n" +
            "  list.add( $toy.getName() );\n" +
            "end\n";

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

    final List<String> 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", 11 );
    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("ball");
}
 
源代码25 项目: kogito-runtimes   文件: CommonTestMethodBase.java
public Collection<KiePackage> loadKnowledgePackages(KnowledgeBuilderConfiguration kbuilderConf, PackageDescr descr) {
    if (kbuilderConf == null) {
        kbuilderConf = KnowledgeBuilderFactory.newKnowledgeBuilderConfiguration();
    }
    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(kbuilderConf);
    kbuilder.add(ResourceFactory.newDescrResource(descr), ResourceType.DESCR);
    if (kbuilder.hasErrors()) {
        fail(kbuilder.getErrors().toString());
    }
    Collection<KiePackage> knowledgePackages = kbuilder.getKnowledgePackages();
    return knowledgePackages;
}
 
源代码26 项目: kogito-runtimes   文件: DescrResource.java
public DescrResource(KieDescr descr ) {
    if ( descr == null ) {
        throw new IllegalArgumentException( "descr cannot be null" );
    }
    this.descr = descr;
    setResourceType( ResourceType.DESCR );
}
 
源代码27 项目: kogito-runtimes   文件: TypeDeclarationTest.java
@Test
public void testTypeDeclarationWithInnerClasses() {
    // DROOLS-150
    String str = "";
    str += "package org.drools.compiler;\n" +
           "\n" +
           "import org.drools.compiler.compiler.TypeDeclarationTest.EventBar.*;\n" +
           "" +
           "declare Foo\n" +
           " @role( event )\n" +
           "end\n" +
           "" +
           "rule R when Foo() then end";

    KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add( ResourceFactory.newByteArrayResource( str.getBytes() ),
                  ResourceType.DRL );
    System.err.println( kbuilder.getErrors() );
    assertFalse( kbuilder.hasErrors() );

    InternalKnowledgeBase kBase = KnowledgeBaseFactory.newKnowledgeBase();
    kBase.addPackages( kbuilder.getKnowledgePackages() );
    KieSession knowledgeSession = kBase.newKieSession();
    FactHandle handle = knowledgeSession.insert( new EventBar.Foo() );

    assertTrue( handle instanceof EventFactHandle );

}
 
源代码28 项目: kogito-runtimes   文件: MVELTest.java
@Test
public void testIncrementOperator() {
    String str = "";
    str += "package org.kie \n";
    str += "global java.util.List list \n";
    str += "rule rule1 \n";
    str += "    dialect \"mvel\" \n";
    str += "when \n";
    str += "    $I : Integer() \n";
    str += "then \n";
    str += "    i = $I.intValue(); \n";
    str += "    i += 5; \n";
    str += "    list.add( i ); \n";
    str += "end \n";

    final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
    kbuilder.add(ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL);
    assertFalse(kbuilder.hasErrors());

    final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase();
    kbase.addPackages(kbuilder.getKnowledgePackages());

    final KieSession ksession = createKnowledgeSession(kbase);
    final List list = new ArrayList();
    ksession.setGlobal("list", list);
    ksession.insert(5);

    ksession.fireAllRules();

    assertEquals(1, list.size());
    assertEquals(10, list.get(0));
}
 
源代码29 项目: kogito-runtimes   文件: ParallelEvaluationTest.java
@Test
public void testImmediateEventsExpiration() {
    StringBuilder sb = new StringBuilder( 400 );
    sb.append( "global java.util.List list;\n" );
    sb.append( "import " + MyEvent.class.getCanonicalName() + ";\n" );
    sb.append( "declare MyEvent @role( event ) @expires( 1ms ) @timestamp( timestamp ) end\n" );
    for (int i = 0; i < 10; i++) {
        sb.append( getRuleWithEvent( i ) );
    }

    KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration();

    KieSession ksession = new KieHelper().addContent( sb.toString(), ResourceType.DRL )
                                         .build( EventProcessingOption.STREAM, MultithreadEvaluationOption.YES )
                                         .newKieSession( sessionConfig, null );

    assertTrue( ( (InternalWorkingMemory) ksession ).getAgenda().isParallelAgenda() );

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

    for (int i = 0; i < 10; i++) {
        ksession.insert( new MyEvent( i, i*2L ) );
    }

    ksession.fireAllRules();

    assertEquals(10, list.size());
}
 
源代码30 项目: kogito-runtimes   文件: AbstractKieModule.java
public ResourceConfiguration getResourceConfiguration(String fileName) {
    ResourceConfiguration conf = resourceConfigurationCache.get(fileName);
    if (conf != null) {
        return conf;
    }
    Properties prop = new Properties();
    if (isAvailable(fileName + ".properties")) {
        // configuration file available
        try {
            prop.load(new ByteArrayInputStream(getBytes(fileName + ".properties")));
        } catch (IOException e) {
            log.error(String.format("Error loading resource configuration from file: %s.properties", fileName));
        }
    }
    if (ResourceType.DTABLE.matchesExtension(fileName)) {
        int lastDot = fileName.lastIndexOf( '.' );
        if (lastDot >= 0 && fileName.length() > lastDot+1) {
            String extension = fileName.substring( lastDot+1 );
            Object confClass = prop.get(ResourceTypeImpl.KIE_RESOURCE_CONF_CLASS);
            if (confClass == null || confClass.toString().equals( ResourceConfigurationImpl.class.getCanonicalName() )) {
                prop.setProperty( ResourceTypeImpl.KIE_RESOURCE_CONF_CLASS, DecisionTableConfigurationImpl.class.getName() );
            }
            prop.setProperty(DecisionTableConfigurationImpl.DROOLS_DT_TYPE, DecisionTableInputType.valueOf( extension.toUpperCase() ).toString());
        }
    }
    conf = prop.isEmpty() ? null : ResourceTypeImpl.fromProperties(prop);
    resourceConfigurationCache.put(fileName, conf);
    return conf;
}