context.loadTaskVariables(task); kieSession.insert(task); kieSession.fireAllRules(); Set<Assignment> assignments = new TreeSet<>(); String queryName = System.getProperty("org.jbpm.task.assignment.rules.query"); } else { logger.debug("No query defined, retrieving all facts of type Assignment"); Collection<Assignment> results = (Collection<Assignment>) kieSession.getObjects(new ClassObjectFilter(Assignment.class));
@Test public void testIntermediateCatchEventConditionSetVariableAfter() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventConditionSetVariableAfter.bpmn2"); ksession.addEventListener(new RuleAwareProcessEventLister()); Collection<? extends Object> processInstances = ksession.getObjects(new ObjectFilter() { assertThat(processInstances.size()).isEqualTo(1); ksession.insert(person); assertProcessInstanceFinished(processInstance, ksession); processInstances = ksession.getObjects(new ObjectFilter() { assertThat(processInstances.size()).isEqualTo(0);
@Test public void deleteUpdatedFactDifferentClassTest() { FactHandle fact = ksession.insert(new Person("George", 18)); Assertions.assertThat(ksession.getObjects()).hasSize(1); Assertions.assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Person.class); ksession.update(fact, new Cheese("Cheddar", 50)); Assertions.assertThat(ksession.getObjects()).hasSize(1); Assertions.assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Cheese.class); ksession.delete(fact); Assertions.assertThat(ksession.getObjects()).isEmpty(); }
@Override public Void call() { KieSession ksession = kbase.newKieSession(); assertThat(((InternalWorkingMemory) ksession).getAgenda().isParallelAgenda()).isTrue(); List<Integer> list = new DebugList<Integer>(); ksession.setGlobal( "list", list ); insertFacts(ksession, 11); ksession.fireAllRules(); assertThat(ksession.getObjects()).isEmpty(); assertThat(list.size()).isEqualTo(20); return null; } };
@Test public void testIntermediateCatchEventConditionRemovePIAfter() throws Exception { KieBase kbase = createKnowledgeBase("BPMN2-IntermediateCatchEventCondition.bpmn2"); ksession.addEventListener(new RuleAwareProcessEventLister()); Collection<? extends Object> processInstances = ksession.getObjects(new ObjectFilter() { assertThat(processInstances.size()).isEqualTo(1); ksession.insert(person); assertProcessInstanceFinished(processInstance, ksession); processInstances = ksession.getObjects(new ObjectFilter() { assertThat(processInstances.size()).isEqualTo(0);
@Test public void updateTheOnlyFactTest() { final Person person = new Person("George", 18); final FactHandle factPerson = ksession.insert(person); assertThat(ksession.getObjects()).hasSize(1); assertThat(ksession.getObjects().iterator().next()).isInstanceOf(Person.class); Person personToBeVerified = (Person) ksession.getObjects().iterator().next(); verifyPerson(person, personToBeVerified, 18, "George", true); ksession.update(factPerson, new Person("Henry", 21)); verifyFactsPresentInSession(1, Person.class); personToBeVerified = (Person) ksession.getObjects().iterator().next(); verifyPerson(person, personToBeVerified, 21, "Henry", false); }
private void testEventsExpiredInThePast(final String drl) { final KieSessionConfiguration sessionConfig = KnowledgeBaseFactory.newKnowledgeSessionConfiguration(); sessionConfig.setOption( ClockTypeOption.get( ClockType.PSEUDO_CLOCK.getId() ) ); final KieHelper helper = new KieHelper(); helper.addContent( drl, ResourceType.DRL ); final KieBase kieBase = helper.build( EventProcessingOption.STREAM ); final KieSession kieSession = kieBase.newKieSession( sessionConfig, null ); PseudoClockScheduler clock = kieSession.getSessionClock(); final long currentTime = clock.getCurrentTime(); clock.advanceTime(100, TimeUnit.MILLISECONDS); kieSession.insert(new BasicEvent(new Date(currentTime + 20), 10L, "20ms-30ms")); clock.advanceTime(1, TimeUnit.MILLISECONDS); kieSession.insert(new BasicEvent(new Date(currentTime + 20), 20L, "20ms-40ms")); clock.advanceTime(100, TimeUnit.MILLISECONDS); Assertions.assertThat(kieSession.fireAllRules()).isEqualTo(1); clock.advanceTime(10, TimeUnit.MILLISECONDS); Assertions.assertThat(kieSession.getObjects()).isEmpty(); } }
@Test(timeout = 10000 ) public void testRetractNegativeDefeaters() { String drl = "declare Foo end " + "rule Def " + " @Defeater " + "when " + " String() " + "then " + " insertLogical( new Foo(), 'neg' ); " + "end "; KieSession session = getSessionFromString( drl ); FactHandle h = session.insert( "foo" ); session.fireAllRules(); assertEquals( 1, session.getObjects().size() ); session.delete( h ); session.fireAllRules(); assertEquals( 0, session.getObjects().size() ); }
@Test public void updateWithDifferentClassGetObjectsTest() { final Person person = new Person("George", 18); final FactHandle factPerson = ksession.insert(person); final Person personToBeVerified = verifyFactsPresentInSession(1, Person.class).get(0); assertThat(personToBeVerified).isEqualTo(person); final Cheese cheese = new Cheese("Camembert", 50); ksession.update(factPerson, cheese); verifyFactsPresentInSession(1, Cheese.class); final Cheese cheeseToBeVerified = (Cheese) ksession.getObjects().iterator().next(); verifyCheese(cheeseToBeVerified, 50, "Camembert"); }
@Test public void testInsertRetractNoloop() throws Exception { // read in the source KieBase kbase = loadKnowledgeBase("test_Insert_Retract_Noloop.drl"); KieSession ksession = kbase.newKieSession(); ksession.insert( new Cheese( "stilton", 15 ) ); ksession.fireAllRules(); assertEquals(0, ksession.getObjects().size()); }
@Test public void updateWithDifferentClassGetQueryResultsTest() { final Person person = new Person("George", 18); final FactHandle fact = ksession.insert(person); verifyFactsWithQuery(Person.class, "persons", person); final Cheese cheese = new Cheese("Camembert", 2); ksession.update(fact, cheese); verifyWithQueryNoPersonsPresentInFacts(); verifyFactsPresentInSession(1, Cheese.class); Cheese cheeseToBeVerified = (Cheese) ksession.getObjects().iterator().next(); verifyCheese(cheeseToBeVerified, 2, "Camembert"); cheeseToBeVerified = verifyFactPresentInSession(fact, Cheese.class); verifyCheese(cheeseToBeVerified, 2, "Camembert"); }
@Test(timeout=10000) public void traitManyTimes() { KieSession ksession = getSession( "org/drools/compiler/factmodel/traits/testTraitDonMultiple.drl" ); TraitFactory.setMode( mode, ksession.getKieBase() ); List list = new ArrayList(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); for ( Object o : ksession.getObjects() ) { System.err.println( o ); } Collection x = ksession.getObjects(); assertEquals( 2, ksession.getObjects().size() ); assertEquals( 5, list.size() ); assertEquals( 0, list.get( 0 ) ); assertTrue( list.contains( 1 ) ); assertTrue( list.contains( 2 ) ); assertTrue( list.contains( 3 ) ); assertTrue( list.contains( 4 ) ); }
@Test(timeout=10000) public void testTraitLegacy() { String source = "org/drools/compiler/factmodel/traits/testTraitLegacyTrait.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); System.err.println( " -------------- " + ks.getObjects().size() + " ---------------- " ); for (Object o : ks.getObjects()) { System.err.println( "\t\t" + o ); } System.err.println( " -------------- ---------------- " ); System.err.println( info ); System.err.println( " -------------- ---------------- " ); assertEquals( 5, info.size() ); assertTrue( info.contains( "OK" ) ); assertTrue( info.contains( "OK2" ) ); assertTrue( info.contains( "OK3" ) ); assertTrue( info.contains( "OK4" ) ); assertTrue( info.contains( "OK5" ) ); }
@Test() public void testTraitCore() { String source = "org/drools/compiler/factmodel/traits/testTraitLegacyCore.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); System.err.println( " -------------- " + ks.getObjects().size() + " ---------------- " ); for (Object o : ks.getObjects()) { System.err.println( "\t\t" + o ); } System.err.println( " -------------- ---------------- " ); System.err.println( info ); System.err.println( " -------------- ---------------- " ); assertTrue( info.contains( "OK" ) ); assertTrue( info.contains( "OK2" ) ); assertEquals( 2, info.size() ); }
@Test(timeout=10000) public void testTraitCollections() { String source = "org/drools/compiler/factmodel/traits/testTraitCollections.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); System.err.println( " -------------- " + ks.getObjects().size() + " ---------------- " ); for (Object o : ks.getObjects()) { System.err.println( "\t\t" + o ); } System.err.println( " -------------- ---------------- " ); System.err.println( info ); System.err.println( " -------------- ---------------- " ); assertEquals( 1, info.size() ); assertTrue( info.contains( "OK" ) ); }
@Test public void testIterateObjects() throws Exception { final KieBase kbase = SerializationHelper.serializeObject(loadKnowledgeBase("test_IterateObjects.drl")); final KieSession ksession = createKnowledgeSession(kbase); final List results = new ArrayList(); ksession.setGlobal("results", results); ksession.insert(new Cheese("stilton", 10)); ksession.fireAllRules(); final Iterator events = ksession.getObjects(new ClassObjectFilter(PersonInterface.class)).iterator(); assertTrue(events.hasNext()); assertEquals(1, results.size()); assertEquals(results.get(0), events.next()); } }
@Test public void testRetract( ) { String drl = "package org.drools.compiler.trait.test; \n" + "import org.drools.core.factmodel.traits.Traitable; \n" + "" + "declare Foo @Traitable end\n" + "declare trait Bar end \n" + "" + "rule Init when then\n" + " Foo foo = new Foo(); \n" + " don( foo, Bar.class ); \n" + "end\n" + "rule Retract \n" + "when\n" + " $bar : Bar()\n" + "then\n" + " delete( $bar ); \n" + "end\n"; KieSession ks = getSessionFromString( drl ); TraitFactory.setMode(mode, ks.getKieBase()); assertEquals(2, ks.fireAllRules()); for(Object o : ks.getObjects()) { System.out.println(o); } assertEquals(0, ks.getObjects().size()); }
@Test(timeout=10000) public void testTraitDon() { String source = "org/drools/compiler/factmodel/traits/testTraitDon.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); ks.fireAllRules(); Collection<? extends Object> wm = ks.getObjects(); ks.insert( "go" ); ks.fireAllRules(); assertTrue( info.contains( "DON" ) ); assertTrue( info.contains( "SHED" ) ); Iterator it = wm.iterator(); Object x = it.next(); if ( x instanceof String ) { x = it.next(); } System.out.println( x.getClass() ); System.out.println( x.getClass().getSuperclass() ); System.out.println( Arrays.asList( x.getClass().getInterfaces() )); }
@Test(timeout=10000) public void testTraitShed() { String source = "org/drools/compiler/factmodel/traits/testTraitShed.drl"; KieSession ks = getSession( source ); TraitFactory.setMode( mode, ks.getKieBase() ); List info = new ArrayList(); ks.setGlobal( "list", info ); assertTrue( info.isEmpty() ); ks.fireAllRules(); assertTrue( info.contains( "Student" ) ); assertEquals( 1, info.size() ); ks.insert( "hire" ); ks.fireAllRules(); Collection c = ks.getObjects(); assertTrue( info.contains( "Worker" ) ); assertEquals( 2, info.size() ); ks.insert( "check" ); ks.fireAllRules(); assertEquals( 4, info.size() ); assertTrue( info.contains( "Conflict" ) ); assertTrue( info.contains( "Nothing" ) ); }
@Test public void testMarshalWithProtoBuf() throws Exception { KieBase kbase = loadKnowledgeBase( "../test_Serializable.drl" ); KieSession ksession = kbase.newKieSession(); ksession.setGlobal( "list", new ArrayList() ); final Person bob = new Person( "bob" ); ksession.insert( bob ); ksession = marsallStatefulKnowledgeSession( ksession ); assertEquals( 1, ksession.getFactCount() ); assertEquals( bob, ksession.getObjects().iterator().next() ); int fired = ksession.fireAllRules(); assertEquals( 3, fired ); List list = (List) ksession.getGlobal( "list" ); assertEquals( 3, list.size() ); // because of agenda-groups assertEquals( new Integer( 4 ), list.get( 0 ) ); Collection<? extends Object> facts = ksession.getObjects(); System.out.println( new ArrayList( facts ) ); assertEquals( 2, facts.size() ); }