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(); }
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(); } } } }