Package org.drools.integrationtests.eventgenerator.example

Source Code of org.drools.integrationtests.eventgenerator.example.ExampleScenario

/**
*
*/
package org.drools.integrationtests.eventgenerator.example;

/**
* @author Matthias Groch
*
*/

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.ArrayList;

import org.drools.RuleBase;
import org.drools.RuleBaseFactory;
import org.drools.WorkingMemory;
import org.drools.compiler.DroolsParserException;
import org.drools.compiler.PackageBuilder;
import org.drools.integrationtests.eventgenerator.PseudoSessionClock;
import org.drools.integrationtests.eventgenerator.SimpleEventGenerator;
import org.drools.integrationtests.eventgenerator.SimpleEventListener;
import org.drools.rule.Package;


public class ExampleScenario {
 
  // constants
  public final static String FILE_NAME_RULES = "../example_scenario.drl";
  //public final static String FILE_NAME_LOGGER = "log/event";
  private static int NUMBER_RESOURCES = 3;
 
  // event occurrence probabilities
  public final static int AVG_OCCUR_PRODUCTION_EVENT = 7000; // average time in milliseconds after which another item is manufactured by one resource; default: 700 ms
  public final static int MIN_OCCUR_PRODUCTION_EVENT = 4000; // minimum time in milliseconds after which another item is manufactured by one resource; default: 700 ms
  public final static int AVG_OCCUR_HEARTBEAT_EVENT = 90000; // average time in milliseconds after which a resource sends another heartbeat; default: 60000 ms
  public final static int MIN_OCCUR_HEARTBEAT_EVENT = 45000; // average time in milliseconds after which a resource sends another heartbeat; default: 60000 ms
  public final static int AVG_OCCUR_ALERT_EVENT = 1800000; // average time in milliseconds after which an alarm is sent; default: 1800000 = 30 mis
  public final static int MIN_OCCUR_ALERT_EVENT = 0; // average time in milliseconds after which an alarm is sent; default: 1800000 = 30 mis
 
  private static WorkingMemory wm;
  //private static WorkingMemoryFileLogger logger;
 
  public static void setup(){
    // read in the source
    Reader source = new InputStreamReader (ExampleScenario.class.getResourceAsStream(FILE_NAME_RULES));
    // Use package builder to build up a rule package.
    // An alternative lower level class called DrlParser can also be used ...
    PackageBuilder builder = new PackageBuilder();
    // this will parse and compile in one step
    // NOTE: There are 2 methods here, the one argument one is for normal DRL.
    try {
        builder.addPackageFromDrl(source);
    } catch (DroolsParserException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    // get the compiled package (which is serializable)
    Package pkg = builder.getPackage();
   
    // add defined object types
    //FactTemplate ftEvent = new FactTemplateImpl();
    //pkg.addFactTemplate(ftEvent);
   
    //  add the package to a rulebase (deploy the rule package).
    RuleBase ruleBase = RuleBaseFactory.newRuleBase();
    try {
      ruleBase.addPackage (pkg);
    } catch (Exception e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
    wm = ruleBase.newStatefulSession();
    // create a new Working Memory Logger, that logs to file.
      //logger = new WorkingMemoryFileLogger(wm);
      // an event.log file is created in the log dir (which must exist)
      // in the working directory
      //logger.setFileName(FILE_NAME_LOGGER);
  }
 
  public static final void main (String[] args) {
      
    setup();
   
    System.out.println("Waiting for messages...");
        System.out.println("Press [return] to quit\n");
       
        ArrayList<Resource> resources = new ArrayList<Resource>();
       
        //
        SimpleEventGenerator myGenerator =  new SimpleEventGenerator(wm, new SimpleEventListener(wm), PseudoSessionClock.timeInMinutes(15));
       
        //create fab resources and add them to working memory
    for (int i = 0; i < NUMBER_RESOURCES; i++){
     
      Resource res = new Resource("mach"+i);
      resources.add(res);
      wm.insert(res.getOpStatus());
     
      SlidingWindow sw = new SlidingWindow(0, res.getId(), PseudoSessionClock.timeInMinutes(10), PseudoSessionClock.timeInMinutes(2));
      //GlobalWorkingMemory.getInstance().insert(new Event(Event.SLIDING_WINDOW, res.getId(), systemTime, systemTime));
      wm.insert(sw);
     
      // add eventSenders to EventGenerator
      myGenerator.addEventSource("Conveyor"+i, new ProductionEvent(res.getId()), MIN_OCCUR_PRODUCTION_EVENT, AVG_OCCUR_PRODUCTION_EVENT, 0, 0);
    }
   
    // start generating events
        myGenerator.generate();
       
        BufferedReader waiter = new BufferedReader(new InputStreamReader(System.in));
        try {
      waiter.readLine();
    } catch (IOException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }
        // stop logging
        //logger.writeToDisk();
        //System.out.println("Application terminated - Audit log written to disk");
 
  }
   
}
TOP

Related Classes of org.drools.integrationtests.eventgenerator.example.ExampleScenario

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.