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"); } }
session.retract(factHandle);
@SuppressWarnings("deprecation") // will be removed in 3.0 (OPENENGSB-2789) @Override public void processEvent(Event event) throws WorkflowException { LOGGER.info("processing Event {} of type {}", event, event.getClass()); StatefulKnowledgeSession session = getSessionForCurrentContext(); FactHandle factHandle = null; try { factHandle = session.insert(event); workflowLock.lock(); try { session.fireAllRules(); } catch (ConsequenceException e) { throw new WorkflowException("ConsequenceException occured while processing event", e.getCause()); } finally { workflowLock.unlock(); } Set<Long> processIds = retrieveRelevantProcessInstanceIds(event, session); if (processIds.isEmpty()) { for (ProcessInstance p : session.getProcessInstances()) { p.signalEvent(event.getType(), event); } } else { signalEventToProcesses(event, session, processIds); } } finally { session.retract(factHandle); } }
} finally { for (FactHandle handle : handles) { securityContext.retract(handle);
} finally { for (FactHandle handle : handles) { securityContext.retract(handle);
r.getGroup().getName(), r.getGroup().getGroupType())) { FactHandle fh = getSecurityContext().getFactHandle(r); getSecurityContext().retract(fh);
@Test public void retractTest() { StatefulKnowledgeSession ksession = createSession(); ksession.setGlobal("myGlobalObj", new MyObject("myglobalObj")); FactHandle handle = ksession.insert(new MyObject("obj1")); Assert.assertNotNull(handle); Assert.assertEquals(true, ((DefaultFactHandle) handle).isDisconnected()); int fired = ksession.fireAllRules(); Assert.assertEquals(fired, 1); Assert.assertEquals(1, ksession.getFactCount()); ksession.retract(handle); Assert.assertEquals(0, ksession.getFactCount()); }
fired ); session.retract(handle);