@Test public void testLoadingRuleFlowInPackage3() throws Exception { // only adding ruleflow without any generated rules builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "empty_ruleflow.rfm" ) ) ); builder.getPackages(); }
@Test public void testRuleFlowActionDialects() throws Exception { builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "test_ActionDialects.rfm" ) ) ); final KieSession session = createKieSession(true, builder.getPackages()); List<String> list = new ArrayList<String>(); session.setGlobal( "list", list ); session.startProcess( "ActionDialects" ); assertEquals( 2, list.size() ); assertEquals( "mvel was here", list.get( 0 ) ); assertEquals( "java was here", list.get( 1 ) ); }
@Test public void testRuleFlowClear() throws Exception { builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "test_ruleflowClear.drl" ) ) ); builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "test_ruleflowClear.rfm" ) ) ); KieSession workingMemory = createKieSession(true, builder.getPackages()); assertEquals( 4, agenda.sizeOfRuleFlowGroup( "flowgroup-1" ) ); assertEquals( 0, agenda.getAgendaGroup( "MAIN" ).size() ); assertEquals( 0, activations.size() );
@Test public void testSimpleReturnValueConstraintEvaluator() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); null ); pkgBuilder.addPackageFromDrl( new StringReader( "package pkg1;\nglobal Boolean value;" ) ); kbase.addPackages(Arrays.asList(pkgBuilder.getPackages())); final KieSession ksession = kbase.newKieSession();
private static KieBase readDynamicSubProcess() throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "</process>"); builder.addRuleFlow(source); source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + builder.addRuleFlow(source); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(Arrays.asList(builder.getPackages())); return kbase;
@Test public void testRuleFlow() throws Exception { builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) ); builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); KieSession workingMemory = createKieSession(true, builder.getPackages()); final List<String> list = new ArrayList<String>(); workingMemory.setGlobal( "list", list ); workingMemory.fireAllRules(); assertEquals( 0, list.size() ); final ProcessInstance processInstance = workingMemory.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 ) ); }
@Test public void testLoadingRuleFlowInPackage2() throws Exception { // only adding ruleflow builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); builder.getPackages(); }
@Test public void testSimpleReturnValueConstraintEvaluator() throws Exception { final InternalKnowledgePackage pkg = new KnowledgePackageImpl( "pkg1" ); null ); pkgBuilder.addPackageFromDrl(new StringReader("package pkg1;\n global Boolean value;\n")); kbase.addPackages(Arrays.asList(pkgBuilder.getPackages())); final KieSession ksession = kbase.newKieSession();
private static KieBase readRule(boolean independent) throws Exception { KnowledgeBuilderImpl builder = new KnowledgeBuilderImpl(); Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "</process>"); builder.addRuleFlow(source); source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + builder.addRuleFlow(source); InternalKnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(); kbase.addPackages(Arrays.asList(builder.getPackages())); return kbase;
@Test public void testRuleFlowInPackage() throws Exception { builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) ); builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); final KieSession workingMemory = createKieSession(true, builder.getPackages()); final List<String> list = new ArrayList<String>(); workingMemory.setGlobal( "list", list ); workingMemory.fireAllRules(); assertEquals( 0, list.size() ); final ProcessInstance processInstance = workingMemory.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 ) ); }
@Test public void testLoadingRuleFlowInPackage1() throws Exception { // adding ruleflow before adding package builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.rfm" ) ) ); builder.addPackageFromDrl( new InputStreamReader( getClass().getResourceAsStream( "ruleflow.drl" ) ) ); builder.getPackages(); }
@Test public void testRuleFlowUpgrade() throws Exception { builder.addRuleFlow( new InputStreamReader( getClass().getResourceAsStream( "ruleflow40.rfm" ) ) ); KieSession workingMemory = createKieSession(true, builder.getPackages()); assertEquals( 0, list.size() ); final ProcessInstance processInstance = workingMemory.startProcess( "0" ); assertEquals( ProcessInstance.STATE_COMPLETED, processInstance.getState() ); assertEquals( 4, list.size() ); assertEquals( "Rule1",
@Test public void testBuildBigDecimalLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigDecimal", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this == 10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigDecimal. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigDecimal ); } }
@Test public void testProcessExceptionHandlerTriggerNode() { Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "</process>"); builder.addRuleFlow(source); KieSession session = createKieSession(builder.getPackages()); ProcessInstance processInstance = ( ProcessInstance ) session.startProcess("org.drools.exception"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState());
@Test public void testBuildBigIntegerLiteralConstraint() throws Exception { final PackageDescr pkgDescr = new PackageDescr( "org.drools" ); final RuleDescr ruleDescr = new RuleDescr( "Test Rule" ); AndDescr andDescr = new AndDescr(); PatternDescr patDescr = new PatternDescr( "java.math.BigInteger", "$bd" ); ExprConstraintDescr fcd = new ExprConstraintDescr( "this==10" ); patDescr.addConstraint( fcd ); andDescr.addDescr( patDescr ); ruleDescr.setLhs( andDescr ); ruleDescr.setConsequence( "" ); pkgDescr.addRule( ruleDescr ); final KnowledgeBuilderImpl kBuilder = new KnowledgeBuilderImpl(); kBuilder.addPackage(pkgDescr); assertTrue(kBuilder.getErrors().toString(), kBuilder.getErrors().isEmpty()); final RuleImpl rule = kBuilder.getPackages()[0].getRule( "Test Rule" ); final GroupElement and = rule.getLhs(); final Pattern pat = (Pattern) and.getChildren().get( 0 ); if (pat.getConstraints().get(0) instanceof MvelConstraint) { final MvelConstraint fc = (MvelConstraint) pat.getConstraints().get( 0 ); assertTrue( "Wrong class. Expected java.math.BigInteger. Found: " + fc.getField().getValue().getClass(), fc.getField().getValue() instanceof BigInteger ); } }
@Test public void testProcessExceptionHandlerAction() { Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + "</process>"); builder.addRuleFlow(source); KieSession session = createKieSession(builder.getPackages()); ProcessInstance processInstance = ( ProcessInstance ) session.startProcess("org.drools.exception"); assertEquals(ProcessInstance.STATE_ACTIVE, processInstance.getState()); assertEquals(1, list.size()); assertEquals("SomeValue", list.get(0));
@Test public void testForEach() { Reader source = new StringReader( "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" + "<process xmlns=\"http://drools.org/drools-5.0/process\"\n" + builder.addRuleFlow(source); KieSession workingMemory = createKieSession(builder.getPackages()); params.put("collection", collection); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("org.drools.ForEach", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(3, myList.size());
@Test public void testSplitWithJavaContextConstraint() { Reader source = new StringReader( "<process xmlns=\"http://drools.org/drools-5.0/process\"" + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + builder.addRuleFlow(source); KieSession workingMemory = createKieSession(builder.getPackages()); params.put("name", "John Doe"); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("org.jbpm.process-split", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size());
@Test public void testSplitWithMVELGlobalConstraint() { Reader source = new StringReader( "<process xmlns=\"http://drools.org/drools-5.0/process\"" + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + builder.addRuleFlow(source); KieSession workingMemory = createKieSession(builder.getPackages()); params.put("name", "John Doe"); ProcessInstance processInstance = ( ProcessInstance ) workingMemory.startProcess("org.jbpm.process-split", params); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size());
@Test public void testSplitWithJavaGlobalConstraint() { Reader source = new StringReader( "<process xmlns=\"http://drools.org/drools-5.0/process\"" + " xmlns:xs=\"http://www.w3.org/2001/XMLSchema-instance\"" + builder.addRuleFlow(source); KieSession workingMemory = createKieSession(builder.getPackages()); workingMemory.startProcess("org.jbpm.process-split"); assertEquals(ProcessInstance.STATE_COMPLETED, processInstance.getState()); assertEquals(1, list.size());