use of org.drools.mvel.compiler.Sensor in project drools by kiegroup.
the class TruthMaintenanceTest method testLogicalInsertions3.
@Test(timeout = 10000)
public void testLogicalInsertions3() throws Exception {
KieBase kbase = loadKnowledgeBase("test_logicalInsertions3.drl");
KieSession ksession = kbase.newKieSession();
try {
final List list = new ArrayList();
ksession.setGlobal("events", list);
// asserting the sensor object
final Sensor sensor = new Sensor(150, 100);
FactHandle sensorHandle = ksession.insert(sensor);
ksession.fireAllRules();
ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
// alarm must sound
assertEquals(2, list.size());
assertEquals(2, ksession.getObjects().size());
// modifying sensor
sensor.setTemperature(125);
sensorHandle = getFactHandle(sensorHandle, ksession);
ksession.update(sensorHandle, sensor);
ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
ksession.fireAllRules();
ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
// alarm must continue to sound
assertEquals(3, list.size());
assertEquals(2, ksession.getObjects().size());
// modifying sensor
sensor.setTemperature(80);
sensorHandle = getFactHandle(sensorHandle, ksession);
ksession.update(sensorHandle, sensor);
ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
ksession.fireAllRules();
// no alarms anymore
assertEquals(3, list.size());
assertEquals(1, ksession.getObjects().size());
} finally {
ksession.dispose();
}
}
use of org.drools.mvel.compiler.Sensor in project drools by kiegroup.
the class TruthMaintenanceTest method testLogicalInsertionsModifySameRuleGivesDifferentLogicalInsertion.
@Test(timeout = 10000)
public void testLogicalInsertionsModifySameRuleGivesDifferentLogicalInsertion() throws Exception {
// TODO JBRULES-1804
KnowledgeBuilder kbuilder = KnowledgeBuilderFactory.newKnowledgeBuilder();
kbuilder.add(ResourceFactory.newClassPathResource("test_LogicalInsertionsModifySameRuleGivesDifferentLogicalInsertion.drl", getClass()), ResourceType.DRL);
Collection<KiePackage> pkgs = kbuilder.getKnowledgePackages();
InternalKnowledgeBase kbase = (InternalKnowledgeBase) getKnowledgeBase();
kbase.addPackages(pkgs);
KieSession session = createKnowledgeSession(kbase);
try {
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();
session = getSerialisedStatefulKnowledgeSession(session, true);
List temperatureList = new ArrayList(session.getObjects(new ClassObjectFilter(Integer.class)));
assertTrue(temperatureList.contains(Integer.valueOf(100)));
assertTrue(temperatureList.contains(Integer.valueOf(200)));
assertEquals(2, temperatureList.size());
sensor1.setTemperature(150);
sensor1Handle = getFactHandle(sensor1Handle, session);
session.update(sensor1Handle, sensor1);
session = getSerialisedStatefulKnowledgeSession(session, true);
session.fireAllRules();
temperatureList = new ArrayList(session.getObjects(new ClassObjectFilter(Integer.class)));
assertFalse(temperatureList.contains(Integer.valueOf(100)));
assertTrue(temperatureList.contains(Integer.valueOf(150)));
assertTrue(temperatureList.contains(Integer.valueOf(200)));
assertEquals(2, temperatureList.size());
} finally {
session.dispose();
}
}
use of org.drools.mvel.compiler.Sensor in project drools by kiegroup.
the class TruthMaintenanceTest method testLogicalInsertions2.
@Test(timeout = 10000)
public void testLogicalInsertions2() throws Exception {
KieBase kbase = loadKnowledgeBase("test_LogicalInsertions2.drl");
KieSession ksession = kbase.newKieSession();
try {
final List events = new ArrayList();
ksession.setGlobal("events", events);
final Sensor sensor = new Sensor(80, 80);
FactHandle handle = ksession.insert(sensor);
// everything should be normal
ksession = getSerialisedStatefulKnowledgeSession(ksession, false);
ksession.fireAllRules();
Collection list = ksession.getObjects();
assertEquals("Only sensor is there", 1, list.size());
assertEquals("Only one event", 1, events.size());
// problems should be detected
sensor.setPressure(200);
sensor.setTemperature(200);
handle = getFactHandle(handle, ksession);
ksession.update(handle, sensor);
ksession = getSerialisedStatefulKnowledgeSession(ksession, true);
ksession.fireAllRules();
list = ksession.getObjects();
assertEquals("Only sensor is there", 1, list.size());
TruthMaintenanceSystem tms = TruthMaintenanceSystemFactory.get().getOrCreateTruthMaintenanceSystem((ReteEvaluator) ksession);
assertTrue(tms.getEqualityKeyMap().isEmpty());
} finally {
ksession.dispose();
}
}
Aggregations