Skip to content

Instantly share code, notes, and snippets.

@eliezerlribeiro
Last active August 29, 2015 14:10
Show Gist options
  • Save eliezerlribeiro/f98de6c31fa8dfec12cd to your computer and use it in GitHub Desktop.
Save eliezerlribeiro/f98de6c31fa8dfec12cd to your computer and use it in GitHub Desktop.
package com.sample;
import java.util.Random;
import org.kie.api.KieServices;
import org.kie.api.runtime.KieContainer;
import org.kie.api.runtime.KieSession;
import org.kie.api.runtime.rule.FactHandle;
import org.drools.core.WorkingMemoryEntryPoint;
import org.drools.core.time.SessionPseudoClock;
import org.kie.api.runtime.conf.ClockTypeOption;
import org.drools.core.time.SessionPseudoClock;
import org.drools.core.time.impl.JDKTimerService;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import org.kie.api.builder.model.KieModuleModel;
import org.kie.api.builder.model.KieBaseModel;
import org.kie.api.builder.model.KieSessionModel;
import org.kie.api.conf.EqualityBehaviorOption;
import org.kie.api.builder.KieBuilder;
import org.kie.api.builder.KieFileSystem;
import org.kie.api.KieBaseConfiguration;
import org.kie.api.KieBase;
import org.kie.internal.KnowledgeBaseFactory;
import org.kie.api.io.Resource;
import org.kie.api.io.ResourceType;
import org.kie.api.conf.EventProcessingOption;
import org.drools.core.event.AfterActivationFiredEvent;
import org.drools.core.event.DefaultAgendaEventListener;
import org.drools.core.io.impl.ClassPathResource;
import org.kie.internal.logger.KnowledgeRuntimeLogger;
import org.kie.internal.logger.KnowledgeRuntimeLoggerFactory;
import org.kie.api.runtime.KieSessionConfiguration;
import org.kie.internal.runtime.StatefulKnowledgeSession;
import org.kie.api.runtime.conf.ClockTypeOption;
import org.kie.api.definition.KiePackage;
import java.util.*;
import java.io.*;
public class DroolsTest {
static public SessionPseudoClock clock;
public static final void main(String[] args){
try {
final KieServices ks = KieServices.Factory.get();
KieFileSystem kFileSystem = ks.newKieFileSystem();
//FileInputStream fis = new FileInputStream("src/main/resources/rules/Sample.drl");
KieBuilder kbuilder = ks.newKieBuilder( kFileSystem );
kbuilder.buildAll();
if (kbuilder.getResults().hasMessages(org.kie.api.builder.Message.Level.ERROR)) {
throw new RuntimeException("Build time Errors: " + kbuilder.getResults().toString());
}
KieContainer kContainer = ks.newKieContainer(ks.getRepository().getDefaultReleaseId());
KieBaseConfiguration config = ks.newKieBaseConfiguration();
config.setOption(EventProcessingOption.STREAM);
KieBase kieBase = kContainer.newKieBase( config );
KieSession kSession = kContainer.newKieSession();
//go
Sensor sensorUm = new Sensor("SensorUm");
Sensor sensorDois = new Sensor("SensorDois");
Sensor sensorTres = new Sensor("SensorTres");
FactHandle fsensorUm = kSession.insert( sensorUm );
FactHandle fsensorDois = kSession.insert( sensorDois );
FactHandle fsensorTres = kSession.insert( sensorTres );
//test for see the facts is ok
System.out.println( "Number facts : "+kSession.getFactCount() );
Random gerador = new Random();
for(int i=0;i<20;i++){
sensorUm.estadoInterno = gerador.nextInt(100);
sensorDois.estadoInterno = gerador.nextInt(100);
sensorTres.estadoInterno = gerador.nextInt(100);
sensorUm.temperatura= gerador.nextInt(100);;
System.out.println( sensorUm.estadoInterno +" "+sensorDois.estadoInterno+" "+sensorTres.estadoInterno);
kSession.update(fsensorUm, sensorUm);
kSession.update(fsensorDois, sensorDois);
kSession.update(fsensorTres, sensorTres);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println( "Nuber of rulle actives: " + kSession.fireAllRules() );
//clock.advanceTime(4, TimeUnit.DAYS);
}
kSession.dispose();
} catch (Throwable t) {
t.printStackTrace();
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment