private static KieBase loadKnowledgeBase(String bpmn2FileName) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource(bpmn2FileName, UnmarshallingOverdueTimersTest.class), ResourceType.BPMN2); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); return kbase; }
@Test public void testLocalTransactionPerStatement() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource( ruleString.getBytes() ), ResourceType.DRL ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); } kbase.addPackages( kbuilder.getKnowledgePackages() ); StatefulKnowledgeSession ksession = JPAKnowledgeService.newStatefulKnowledgeSession( kbase, null, env ); List<?> list = new ArrayList<Object>(); ksession.setGlobal( "list", list ); ksession.insert( 1 ); ksession.insert( 2 ); ksession.insert( 3 ); ksession.fireAllRules(); assertEquals( 3, list.size() ); }
@Test public void testSingleActionNode() throws Exception { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( new ClassPathResource( "ActionNodeTest.xml", ActionNodeTest.class ), ResourceType.DRF ); KieBase kbase = kbuilder.newKieBase(); KieSession ksession = kbase.newKieSession(); List<String> list = new ArrayList<String>(); ksession.setGlobal( "list", list ); ksession.startProcess( "process name" ); assertEquals( 1, list.size() ); assertEquals( "action node was here", list.get(0) ); } }
public void initialize() { try { Resource addTask = ResourceFactory.newClassPathResource(DEFAULT_ADD_TASK_RULES); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(addTask, ResourceType.DRL); kieBases.put(TaskRuleService.ADD_TASK_SCOPE, kbuilder.newKieBase()); } catch (Exception e) { } try { Resource completeTask = ResourceFactory.newClassPathResource(DEFAULT_COMPLETE_TASK_RULES); KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(completeTask, ResourceType.DRL); kieBases.put(TaskRuleService.COMPLETE_TASK_SCOPE, kbuilder.newKieBase()); } catch (Exception e) { } }
private KieBase createBase() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("processinstance/HelloWorld.rf"), ResourceType.DRF); assertFalse(kbuilder.getErrors().toString(), kbuilder.hasErrors()); return kbuilder.newKieBase(); }
@Test public void testIntegregation() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource("changeset1Test.xml", getClass()), ResourceType.CHANGE_SET ); assertFalse( kbuilder.hasErrors() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); KieSession ksession = createKnowledgeSession(kbase); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); ksession.dispose(); assertEquals( 2, list.size() ); assertTrue( list.containsAll( Arrays.asList( new String[]{"rule1", "rule2"} ) ) ); }
str += "end\n"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource(str.getBytes()), ResourceType.DRL ); if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); KieSession ksession = kbase.newKieSession(); ksession.setGlobal( "list", list ); ksession.insert( new Person("darth", 36) ); ksession.fireAllRules(); return kbase.getPackage( "org.drools.compiler.test" );
rule += "end"; KnowledgeBuilder builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add( new ReaderResource( new StringReader( rule )), ResourceType.DRL ); " </connections>\n" + "</process>"; builder.add( new ReaderResource( new StringReader( process )), ResourceType.DRF ); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( builder.getKnowledgePackages() ); KieSession session = kbase.newKieSession(); TestWorkItemHandler handler = new TestWorkItemHandler(); session.getWorkItemManager().registerWorkItemHandler("Human Task", handler); session.setGlobal( "list", list ); session.insert( p ); ProcessInstance processInstance = ( ProcessInstance ) session.startProcess("org.test.ruleflow"); " </connections>\n" + "</process>"; builder = KnowledgeBuilderFactory.newKnowledgeBuilder(); builder.add( new ReaderResource( new StringReader( process2 )), ResourceType.DRF ); kbase.addPackages( builder.getKnowledgePackages() );
@Test public void testOrWithVariableResolution() throws Exception { // KieBase kbase = loadKnowledgeBase( "test_OrCEFollowedByMultipleEval.drl"); // KieSession workingMemory = createKnowledgeSession(kbase); final KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newClassPathResource( "test_OrCEFollowedByMultipleEval.drl", FirstOrderLogicTest.class ), ResourceType.DRL ); assertFalse( kbuilder.getErrors().toString(), kbuilder.hasErrors() ); final InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); final KieSession ksession = createKnowledgeSession(kbase); final AgendaEventListener al = mock( AgendaEventListener.class ); ksession.addEventListener( al ); ksession.insert( new FactA( "a" ) ); ksession.insert( new FactB( "b" ) ); ksession.insert( new FactC( "c" ) ); ksession.fireAllRules(); verify( al, times( 6 ) ).afterMatchFired(any(AfterMatchFiredEvent.class)); }
private List doTest(String dsl, String drl) { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource(dsl.getBytes()), ResourceType.DSL ); kbuilder.add( ResourceFactory.newByteArrayResource(drl.getBytes()), ResourceType.DSLR ); assertFalse(kbuilder.hasErrors()); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilder.getKnowledgePackages() ); KieSession ksession = kbase.newKieSession(); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.insert(new Person("Mario", 38)); ksession.fireAllRules(); ksession.dispose(); return list; }
"</process>"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newReaderResource(new StringReader(rule)), ResourceType.DRL ); kbuilder.add( ResourceFactory.newReaderResource( new StringReader( process ) ), ResourceType.DRF ); KieSession ksession = createKieSession(kbuilder.getKnowledgePackages().toArray(new KiePackage[0])); ksession.getEnvironment().set("org.jbpm.rule.task.waitstate", true); ksession.setGlobal( "list", list ); ksession.insert( p ); ksession.startProcess("org.test.ruleflow");
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newClassPathResource("BPMN2-MultiThreadServiceProcess-Timer.bpmn", getClass()), ResourceType.BPMN2); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(kbuilder.getKnowledgePackages()); ksession.addEventListener(listener); ksession.startProcess("hello-world"); } catch (Throwable t) { t.printStackTrace();
@Test public void testWorkItemImmediateCompletion() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "\n" + "</process>"); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages(); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kpkgs ); KieSession ksession = kbase.newKieSession(); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); ksession.getWorkItemManager().registerWorkItemHandler("Human Task", handler); Map<String, Object> parameters = new HashMap<String, Object>(); parameters.put("UserName", "John Doe"); parameters.put("Person", person); WorkflowProcessInstance processInstance = (WorkflowProcessInstance) ksession.startProcess("org.drools.actions", parameters); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
@Test public void testShadowAlias() { KnowledgeBuilder kbuilderImpl = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilderImpl.add( ResourceFactory.newClassPathResource( "org/drools/compiler/factmodel/traits/testTraitedAliasing.drl" ), ResourceType.DRL ); if ( kbuilderImpl.hasErrors() ) { fail( kbuilderImpl.getErrors().toString() ); } InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kbuilderImpl.getKnowledgePackages() ); TraitFactory.setMode( mode, kbase ); KieSession ks = kbase.newKieSession(); ArrayList list = new ArrayList( ); ks.setGlobal( "list", list ); ks.fireAllRules(); for ( Object o : ks.getObjects() ) { System.out.println( o ); } try { ks = SerializationHelper.getSerialisedStatefulKnowledgeSession( ks, true ); } catch ( Exception e ) { e.printStackTrace(); fail( e.getMessage() ); } System.out.println( list ); assertFalse( list.contains( false ) ); assertEquals( 8, list.size() ); }
@Test public void testSplitWithProcessInstanceConstraint2() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); Reader source = new StringReader( "<process xmlns=\"http://drools.org/drools-5.0/process\"" + "" + "</process>"); kbuilder.add( ResourceFactory.newReaderResource( source ), ResourceType.DRF ); for (KnowledgeBuilderError error: kbuilder.getErrors()) { logger.error(error.toString()); Collection<KiePackage> kpkgs = kbuilder.getKnowledgePackages(); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages( kpkgs ); KieSession ksession = kbase.newKieSession(); List<Long> list = new ArrayList<Long>(); ksession.setGlobal("list", list); ksession.insert(john); ksession.insert(jane);
@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"); }
@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(); } }
@Test public void testNoNewlineAtTheEnd() { KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add(ResourceFactory.newReaderResource(new StringReader(drl + "//test")), ResourceType.DRL); if (kbuilder.hasErrors()) { fail(kbuilder.getErrors().toString()); } }
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()); }
"</process>"; KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder(); kbuilder.add( ResourceFactory.newByteArrayResource(drl.getBytes()), ResourceType.DRL ); kbuilder.add( ResourceFactory.newByteArrayResource(rf.getBytes()), ResourceType.DRF ); if ( kbuilder.hasErrors() ) { fail( kbuilder.getErrors().toString() ); KieSession ksession = createKieSession(kbuilder.getKnowledgePackages().toArray(new KiePackage[0])); message.setMessage("Hello World"); message.setStatus(Message.HELLO); ksession.insert(message); ksession.startProcess("process-test");