private void jButton5ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton5ActionPerformed ksession.update(thresholdFactHandle, new Threshold("AverageThreshold", thresholdValuejSlider.getValue(), -1)); }//GEN-LAST:event_jButton5ActionPerformed
/** * update a fact in the WorkingMemory * @param handle the fact handle object to update * @param object the new value */ public void update(FactHandle handle, Object object) { if (isReady()) { synchronized (monitor) { debug("WorkingMemory[<name>] Updating fact into session."); knowledgeSession.update(handle, object); } } else { debug("WorkingMemory[<name>] Cannot update fact into session: not RUNNING or no session."); } }
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; }
@Test public void updateTest() { 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.update(handle, new MyObject("obj2")); Assert.assertEquals(1, ksession.getFactCount()); fired = ksession.fireAllRules(); Assert.assertEquals(fired, 1); }
session.update(handle, new MyObject("myObj3"));