Exemple #1
0
  public void activate() {
    triggerManager = new RuleTriggerManager();

    if (!isEnabled()) {
      logger.info("Rule engine is disabled.");
      return;
    }

    logger.debug("Started rule engine");

    // read all rule files
    Iterable<String> ruleModelNames = modelRepository.getAllModelNamesOfType("rules");
    ArrayList<String> clonedList = Lists.newArrayList(ruleModelNames);
    for (String ruleModelName : clonedList) {
      EObject model = modelRepository.getModel(ruleModelName);
      if (model instanceof RuleModel) {
        RuleModel ruleModel = (RuleModel) model;
        triggerManager.addRuleModel(ruleModel);
      }
    }

    // register us on all items which are already available in the registry
    for (Item item : itemRegistry.getItems()) {
      internalItemAdded(item);
    }
    runStartupRules();
  }
Exemple #2
0
  public void modelChanged(String modelName, org.openhab.model.core.EventType type) {
    if (triggerManager != null) {
      if (isEnabled() && modelName.endsWith("rules")) {
        RuleModel model = (RuleModel) modelRepository.getModel(modelName);

        // remove the rules from the trigger sets
        if (type == org.openhab.model.core.EventType.REMOVED
            || type == org.openhab.model.core.EventType.MODIFIED) {
          triggerManager.removeRuleModel(model);
        }

        // add new and modified rules to the trigger sets
        if (model != null
            && (type == org.openhab.model.core.EventType.ADDED
                || type == org.openhab.model.core.EventType.MODIFIED)) {
          triggerManager.addRuleModel(model);
          // now execute all rules that are meant to trigger at startup
          runStartupRules();
        }
      }
    }
  }