Guest User

Untitled

a guest
Dec 13th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.91 KB | None | 0 0
  1. package org.drools.benchmark.benchmarks;
  2.  
  3. import org.drools.KnowledgeBase;
  4. import org.drools.KnowledgeBaseConfiguration;
  5. import org.drools.KnowledgeBaseFactory;
  6. import org.drools.benchmark.BenchmarkDefinition;
  7. import org.drools.benchmark.model.cep.Figure;
  8. import org.drools.benchmark.model.cep.Letter;
  9. import org.drools.builder.KnowledgeBuilder;
  10. import org.drools.conf.EventProcessingOption;
  11. import org.drools.runtime.StatefulKnowledgeSession;
  12.  
  13. public class CepBenchmark extends AbstractBenchmark {
  14.  
  15.     private final int eventNr;
  16.  
  17.     private StatefulKnowledgeSession ksession;
  18.  
  19.     public CepBenchmark(int eventNr) {
  20.         this.eventNr = eventNr;
  21.     }
  22.  
  23.     @Override
  24.     public void init(BenchmarkDefinition definition) {
  25.         KnowledgeBuilder kbuilder = createKnowledgeBuilder("cep.drl");
  26.  
  27.         KnowledgeBaseConfiguration config = KnowledgeBaseFactory.newKnowledgeBaseConfiguration();
  28.         config.setOption( EventProcessingOption.STREAM );
  29.  
  30.         KnowledgeBase kbase = KnowledgeBaseFactory.newKnowledgeBase(config);
  31.         kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
  32.  
  33.         ksession = kbase.newStatefulKnowledgeSession();
  34.  
  35.         new Thread(new Runnable() {
  36.             public void run() {
  37.                 ksession.fireUntilHalt();
  38.             }
  39.         }).start();
  40.     }
  41.  
  42.     public void execute(int repNr) {
  43.         for (int key = 0; key < eventNr; key++) {
  44.             insertLetter(key);
  45.             insertFigure(key);
  46.         }
  47.     }
  48.  
  49.     private void insertLetter(int key) {
  50.         ksession.insert( new Letter( key, (char)('A' + ((key / 100) % 26)) ) );
  51.     }
  52.  
  53.     private void insertFigure(int key) {
  54.         ksession.insert( new Figure( key, 10000000 + (key % 10000000) ) );
  55.     }
  56.  
  57.     @Override
  58.     public void terminate() {
  59.         ksession.halt();
  60.         ksession.dispose(); // Stateful rule session must always be disposed when finished
  61.     }
  62. }
Add Comment
Please, Sign In to add comment