public FactHandle execute(Context context) { StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession(); InternalFactHandle factHandle = (InternalFactHandle) ksession.getFactHandle( object ); if ( factHandle != null ){ InternalFactHandle handle = factHandle.clone(); if ( disconnected ) { handle.disconnect(); } return handle; } return null; }
public void retractFact(Rules rules, Object fact) throws Exception { StatefulKnowledgeSession session = ((DroolsSessionData) rules.getSessionData()).getSession(); FactHandle handle = session.getFactHandle(fact); if (handle != null) { session.retract(handle); session.fireAllRules(); } else { logger.warn("Unable to retract fact " + fact + " because it is not in the knowledge base"); } }
public Object execute(Context context) { StatefulKnowledgeSession ksession = ((KnowledgeCommandContext) context).getStatefulKnowledgesession(); System.out.println("OBJECT INSIDE THE COMMAND: "+this.object); FactHandle handle = ksession.getFactHandle(this.object); if ( handle != null ) { // objects may not be in the WM (anymore). The remote client is not guaranteed to have up-to-date information ksession.getWorkingMemoryEntryPoint( ((InternalFactHandle)handle).getEntryPoint().getEntryPointId() ).retract( handle ); } return null; }
@Test public void testNotExistingFactHandle() { // BZ-1119731 String str = "package foo.bar\n" + "rule R\n" + "when\n" + "then\n" + "end"; KnowledgeBase kbase = loadKnowledgeBaseFromString(str); StatefulKnowledgeSession ksession = kbase.newStatefulKnowledgeSession(); FactHandle handle = ksession.getFactHandle("fact"); assertNull(handle); }
FactHandle handle = session.getFactHandle(event); if (handle != null)
public Object assertFact(Rules rules, Object fact) throws Exception { StatefulKnowledgeSession session = ((DroolsSessionData) rules.getSessionData()).getSession(); FactHandle handle = session.getFactHandle(fact); if (handle != null) { session.update(handle, fact); session.fireAllRules(); } else { handle = session.insert(fact); session.fireAllRules(); } return handle; }
FactHandle fh = getSecurityContext().getFactHandle(r); getSecurityContext().retract(fh);
@Test public void executeAsyncBatchTest() throws InterruptedException { StatefulKnowledgeSession ksession = createSession(); List<Command> cmds = new ArrayList<Command>(); cmds.add(CommandFactory.newSetGlobal("myGlobalObj", new MyObject("myglobalObj"))); MyObject myObject = new MyObject("obj1"); cmds.add(CommandFactory.newInsert(myObject)); cmds.add(CommandFactory.newFireAllRules()); AsyncBatchExecutionCommandImpl batch = new AsyncBatchExecutionCommandImpl(cmds); ExecutionResults results = ksession.execute(batch); Assert.assertNull(results); Thread.sleep(2000); FactHandle handle = ksession.getFactHandle(myObject); Assert.assertNotNull(handle); }
@Ignore // FIX public void getFactHandleTest() { StatefulKnowledgeSession ksession = createSession(); ksession.setGlobal("myGlobalObj", new MyObject("myglobalObj")); MyObject obj1 = new MyObject("obj1"); FactHandle handle = ksession.insert(obj1); System.out.println("Handle Identity HashCode -> " + handle.toExternalForm()); Assert.assertNotNull(handle); Assert.assertEquals(true, ((DefaultFactHandle) handle).isDisconnected()); // The session assertMap doesn't find the factHandle for this object FactHandle newHandle = ksession.getFactHandle(obj1); System.out.println("Handle Identity HashCode -> " + newHandle.toExternalForm()); Assert.assertEquals(newHandle, handle); }