Refine search
context.loadTaskVariables(task); kieSession.insert(task); kieSession.fireAllRules(); Set<Assignment> assignments = new TreeSet<>(); String queryName = System.getProperty("org.jbpm.task.assignment.rules.query"); if (queryName != null) { logger.debug("Query {} is going to be used to retrieve results from working memory", queryName); QueryResults results = kieSession.getQueryResults(queryName); results.forEach(row -> assignments.add((Assignment)row.get("assignment"))); } else { logger.debug("No query defined, retrieving all facts of type Assignment"); Collection<Assignment> results = (Collection<Assignment>) kieSession.getObjects(new ClassObjectFilter(Assignment.class));
KieSession ksession = kbase.newKieSession(); try { final Person p = new Person( "person" ); p.setAge( 2 ); FactHandle h = ksession.insert( p ); assertEquals(1, ksession.getObjects().size()); ksession.fireAllRules(); ksession = SerializationHelper.getSerialisedStatefulKnowledgeSession(ksession, false); assertEquals( 2, ksession.getObjects().size() ); Collection l = ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ); assertEquals( 1, l.size() );
@Test public void testLogicalInsertionsNoLoop() throws Exception { KieBase kbase = loadKnowledgeBase("test_LogicalInsertionsNoLoop.drl"); KieSession ksession = kbase.newKieSession(); try { final List l = new ArrayList(); final Person a = new Person( "a" ); ksession.setGlobal( "a", a ); ksession.setGlobal( "l", l ); ksession.fireAllRules(); assertEquals("a still in WM", 0, ksession.getObjects(new ClassObjectFilter(a.getClass())).size()); assertEquals( "Rule should not loop", 1, l.size() ); } finally { ksession.dispose(); } }
Sensor sensor1 = new Sensor( 100, 0 ); FactHandle sensor1Handle = session.insert( sensor1 ); Sensor sensor2 = new Sensor( 200, 0 ); FactHandle sensor2Handle = session.insert( sensor2 ); Sensor sensor3 = new Sensor( 200, 0 ); FactHandle sensor3Handle = session.insert( sensor3 ); session.fireAllRules(); true ); List temperatureList = new ArrayList( session.getObjects( new ClassObjectFilter( Integer.class ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 100 ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 200 ) ) ); session.fireAllRules(); temperatureList = new ArrayList( session.getObjects( new ClassObjectFilter( Integer.class ) ) ); assertFalse( temperatureList.contains( Integer.valueOf( 100 ) ) ); assertTrue( temperatureList.contains( Integer.valueOf( 150 ) ) );
@Test public void testDeleteLogicalAssertionFromRule() { // BZ-1317026 String drl = "global java.util.List list;\n" + "rule R1 when\n" + "then\n" + " insertLogical( \"test\" ); \n" + "end\n" + "rule R2 when\n" + " $s : String()\n" + "then\n" + " list.add( $s ); \n" + " delete( $s ); \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); try { List<String> list = new ArrayList<String>(); ksession.setGlobal( "list", list ); ksession.fireAllRules(); assertEquals( 1, list.size() ); assertEquals( "test", list.get(0) ); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 0, fhs.size() ); } finally { ksession.dispose(); } }
KieSession ksession = kbase.newKieSession(); try { ksession.setGlobal( "ga", "a" ); ksession.setGlobal( "gb", "b" ); ksession.setGlobal( "gs", new Short( (short) 3 ) ); assertEquals( "There should be 2 CheeseEqual in Working Memory, 1 justified, 1 stated", 2, ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ).size() ); assertEquals( 6, ksession.getObjects().size() ); true); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( CheeseEqual.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( Short.class ) ).size() ); assertEquals( 0, ksession.getObjects().size() );
helper.addContent( drl, ResourceType.DRL ); KieBase kbase = helper.build( EventProcessingOption.STREAM ); KieSession ksession = kbase.newKieSession( sessionConfig, null ); PseudoClockScheduler clock = ksession.getSessionClock(); ksession.insert( new ExpiringEventA() ); ksession.insert( new ExpiringEventB() ); ksession.insert( new ExpiringEventC() ); ksession.fireAllRules(); ksession.fireAllRules(); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventA.class ) ).size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventB.class ) ).size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventC.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventA.class ) ).size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventB.class ) ).size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventC.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventA.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventB.class ) ).size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( ExpiringEventC.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventA.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventB.class ) ).size() ); assertEquals( 0, ksession.getObjects( new ClassObjectFilter( ExpiringEventC.class ) ).size() );
final KieSession session = createKnowledgeSession(kbase); try { final Person b = new Person( "b" ); final Person a = new Person( "a" ); session.setGlobal( "b", b ); FactHandle h1 = session.insert( a ); session.fireAllRules(); Collection< ? > list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( 2, list.size() ); session.delete( h1 ); session.fireAllRules(); list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( "b was deleted, but it should not have. Is backed by b => b being true.", 1, ((StatefulKnowledgeSessionImpl)session).getTruthMaintenanceSystem().delete( h1 ); session.fireAllRules(); list = session.getObjects( new ClassObjectFilter( a.getClass() ) ); assertEquals( 0, list.size() );
@Test public void testStatedDeleteLogicalAssertion() { // BZ-1317026 String drl = "rule R1 when\n" + "then\n" + " insertLogical( \"test\" ); \n" + "end\n"; KieSession ksession = new KieHelper().addContent( drl, ResourceType.DRL ) .build() .newKieSession(); try { ksession.fireAllRules(); Collection<FactHandle> fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); for (FactHandle fh : fhs) { ksession.delete( fh, FactHandle.State.STATED ); } fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 1, fhs.size() ); for (FactHandle fh : fhs) { ksession.delete( fh, FactHandle.State.LOGICAL ); } fhs = ksession.getFactHandles( new ClassObjectFilter( String.class ) ); assertEquals( 0, fhs.size() ); } finally { ksession.dispose(); } }
Collection cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 2, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 1, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 1, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 2, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 1, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 1, cheeseList.size() ); cheeseList = ksession.getObjects(new ClassObjectFilter(Cheese.class)); assertEquals( 2, cheeseList.size() );
"end \n"; KieSession ksession = loadKnowledgeBaseFromString( source ).newKieSession(); TraitFactory.setMode( VirtualPropertyMode.MAP, ksession.getKieBase() ); ksession.setGlobal( "list", list ); map.put( "age", 18 ); ksession.insert( map ); ksession.fireAllRules(); assertEquals( 2, ksession.getObjects().size() ); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( DomainMap.class ) ).size() );
List list; list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class ) ) ); assertEquals( 2, list.size() ); assertFalse( list.contains( new Person( c1.getType() ) ) ); assertTrue( list.contains( new Person( c2.getType() ) ) ); assertTrue( list.contains( new Person( c3.getType() ) ) ); list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class ) ) ); assertEquals( 3, list.size() ); list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class ) ) ); assertEquals( "removal of the rule should result in retraction of c3's logical assertion", 2, ksession = getSerialisedStatefulKnowledgeSession( ksession, true ); list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class ) ) ); assertEquals( "c2 now has a higher price, its logical assertion should be cancelled", 1, assertEquals( 0, test2.getRules().size() ); list = new ArrayList( ksession.getObjects( new ClassObjectFilter( Person.class ) ) ); assertEquals( 0, list.size() );
1 ); FactHandle h1 = session.insert( cheese1 ); session.fireAllRules(); Collection< ? > list = session.getObjects( new ClassObjectFilter( cheese1.getType().getClass() ) ); assertEquals( 1, list.size() ); true ); list = session.getObjects( new ClassObjectFilter( cheese1.getType().getClass() ) ); assertEquals( 1, list.size() ); session = getSerialisedStatefulKnowledgeSession( session, true ); list = session.getObjects( new ClassObjectFilter( cheese1.getType().getClass() ) ); assertEquals( "cheese-type " + cheese1.getType() + " was deleted, but should not. Backed by cheese2 => type.", 1, session = getSerialisedStatefulKnowledgeSession( session, true ); list = session.getObjects( new ClassObjectFilter( cheese1.getType().getClass() ) ); assertEquals( "cheese-type " + cheese1.getType() + " was not deleted, but should have. Neither cheese1 => type nor cheese2 => type is true.", 0,
@Test public void testPhreakTMS() { // DROOLS-7 String str = "import org.drools.compiler.Person\n" + "import org.drools.compiler.Cheese\n" + "rule R when\n" + " Person( $age : age, $name : name == \"A\" )\n" + " not Person( age == $age + 1 )\n" + "then\n" + " insertLogical(new Cheese(\"gorgonzola\", 10));\n" + "end\n"; KieBase kbase = loadKnowledgeBaseFromString( str ); KieSession ksession = kbase.newKieSession(); Person p1 = new Person( "A", 31 ); FactHandle fh1 = ksession.insert( p1 ); ksession.fireAllRules(); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( Cheese.class ) ).size() ); Person p2 = new Person( "A", 32 ); FactHandle fh2 = ksession.insert( p2 ); ksession.fireAllRules(); assertEquals( 1, ksession.getObjects( new ClassObjectFilter( Cheese.class ) ).size() ); }
@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()); } }
session.fireAllRules(); FactType factType = session.getKieBase().getFactType( "org.drools.defeasible", "Fact" ); for ( Object o : session.getObjects( new ClassObjectFilter( factType.getFactClass() ) ) ) { if ( "wibble".equals( factType.get( o, "fact" ) ) ) { InternalFactHandle handle = (InternalFactHandle) session.getFactHandle( o );
taskData.setProcessInstanceId(workItem.getProcessInstanceId()); if (session != null) { if (session.getProcessInstance(workItem.getProcessInstanceId()) != null) { taskData.setProcessId(session.getProcessInstance(workItem.getProcessInstanceId()).getProcess().getId()); String deploymentId = ((WorkItemImpl) workItem).getDeploymentId(); taskData.setDeploymentId(deploymentId); taskData.setProcessSessionId(((KieSession) session).getIdentifier()); Collection<CaseData> caseFiles = (Collection<CaseData>) session.getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles != null && caseFiles.size() == 1) { caseFile = caseFiles.iterator().next();
public void internalSetVariable(String name, Object value) { if (name.startsWith(VariableScope.CASE_FILE_PREFIX)) { String nameInCaseFile = name.replaceFirst(VariableScope.CASE_FILE_PREFIX, ""); // store it under case file rather regular variables @SuppressWarnings("unchecked") Collection<CaseData> caseFiles = (Collection<CaseData>) getProcessInstance().getKnowledgeRuntime().getObjects(new ClassObjectFilter(CaseData.class)); if (caseFiles.size() == 1) { CaseData caseFile = (CaseData) caseFiles.iterator().next(); FactHandle factHandle = getProcessInstance().getKnowledgeRuntime().getFactHandle(caseFile); if (value == null) { caseFile.remove(nameInCaseFile); } else { caseFile.add(nameInCaseFile, value); } getProcessInstance().getKnowledgeRuntime().update(factHandle, caseFile); ((KieSession)getProcessInstance().getKnowledgeRuntime()).fireAllRules(); return; } } // not a case, store it in normal variables variables.put(name, value); }
@SuppressWarnings("unchecked") public Collection<Candidate> filterBugs(final String checkname, Collection<Candidate> candidates) { addCandidatesToFacts(candidates); ksession.fireAllRules(createAgendaForCheck(Arrays.asList(checkname))); return (Collection<Candidate>) ksession.getObjects(new ClassObjectFilter(Candidate.class)); }
@SuppressWarnings("unchecked") private static Collection<Candidate> retrieveViolationsFromKSession(final KieSession ksession) { return (Collection<Candidate>) ksession.getObjects(new ClassObjectFilter(Candidate.class)); }