Class JsonRulesBuilder

java.lang.Object
org.openremote.manager.rules.RulesBuilder
org.openremote.manager.rules.JsonRulesBuilder

public class JsonRulesBuilder extends RulesBuilder
  • Field Details

    • PLACEHOLDER_RULESET_ID

      public static final String PLACEHOLDER_RULESET_ID
      See Also:
    • PLACEHOLDER_RULESET_NAME

      public static final String PLACEHOLDER_RULESET_NAME
      See Also:
    • PLACEHOLDER_TRIGGER_ASSETS

      public static final String PLACEHOLDER_TRIGGER_ASSETS
      See Also:
    • PLACEHOLDER_ASSET_ID

      public static final String PLACEHOLDER_ASSET_ID
      See Also:
    • assetStorageService

      protected final AssetStorageService assetStorageService
    • rulesEngine

      protected final RulesEngine<?> rulesEngine
    • timerService

      protected final org.openremote.container.timer.TimerService timerService
    • assetsFacade

      protected final org.openremote.model.rules.Assets assetsFacade
    • usersFacade

      protected final org.openremote.model.rules.Users usersFacade
    • notificationsFacade

      protected final org.openremote.model.rules.Notifications notificationsFacade
    • webhooksFacade

      protected final org.openremote.model.rules.Webhooks webhooksFacade
    • alarmsFacade

      protected final org.openremote.model.rules.Alarms alarmsFacade
    • historicDatapointsFacade

      protected final org.openremote.model.rules.HistoricDatapoints historicDatapointsFacade
    • predictedDatapointsFacade

      protected final org.openremote.model.rules.PredictedDatapoints predictedDatapointsFacade
    • scheduledActionConsumer

      protected final BiConsumer<Runnable,Long> scheduledActionConsumer
    • ruleStateMap

      protected final Map<String,org.openremote.manager.rules.JsonRulesBuilder.RuleState> ruleStateMap
    • jsonRules

      protected final org.openremote.model.rules.json.JsonRule[] jsonRules
    • jsonRuleset

      protected final org.openremote.model.rules.Ruleset jsonRuleset
    • LOG

      protected static Logger LOG
  • Constructor Details

    • JsonRulesBuilder

      public JsonRulesBuilder(Logger logger, org.openremote.model.rules.Ruleset ruleset, RulesEngine<?> rulesEngine, org.openremote.container.timer.TimerService timerService, AssetStorageService assetStorageService, org.openremote.model.rules.Assets assetsFacade, org.openremote.model.rules.Users usersFacade, org.openremote.model.rules.Notifications notificationsFacade, org.openremote.model.rules.Webhooks webhooksFacade, org.openremote.model.rules.Alarms alarmsFacade, org.openremote.model.rules.HistoricDatapoints historicDatapoints, org.openremote.model.rules.PredictedDatapoints predictedDatapoints, BiConsumer<Runnable,Long> scheduledActionConsumer) throws Exception
      Throws:
      Exception
  • Method Details

    • stop

      public void stop(RulesFacts facts)
    • start

      public void start(RulesFacts facts)
    • onAssetStatesChanged

      public void onAssetStatesChanged(RulesFacts facts, RulesEngine.AssetStateChangeEvent event)
    • add

      protected JsonRulesBuilder add(org.openremote.model.rules.json.JsonRule rule) throws Exception
      Throws:
      Exception
    • addRuleConditionStates

      protected void addRuleConditionStates(org.openremote.model.query.LogicGroup<org.openremote.model.rules.json.RuleCondition> ruleConditionGroup, boolean trackUnmatched, AtomicInteger index, Map<String,org.openremote.manager.rules.JsonRulesBuilder.RuleConditionState> triggerStateMap) throws Exception
      Throws:
      Exception
    • buildLhsCondition

      protected RulesBuilder.Condition buildLhsCondition(org.openremote.model.rules.json.JsonRule rule, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState)
    • buildRhsAction

      protected RulesBuilder.Action buildRhsAction(org.openremote.model.rules.json.JsonRule rule, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState)
    • executeRuleActions

      public void executeRuleActions(org.openremote.model.rules.json.JsonRule rule, org.openremote.model.rules.json.RuleAction[] ruleActions, String actionsName, boolean useUnmatched, RulesFacts facts, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState, org.openremote.model.rules.Assets assetsFacade, org.openremote.model.rules.Users usersFacade, org.openremote.model.rules.Notifications notificationsFacade, org.openremote.model.rules.Webhooks webhooksFacade, org.openremote.model.rules.Alarms alarmsFacade, org.openremote.model.rules.PredictedDatapoints predictedDatapointsFacade, BiConsumer<Runnable,Long> scheduledActionConsumer)
    • getUserIds

      protected static Collection<String> getUserIds(org.openremote.model.rules.Users users, org.openremote.model.query.UserQuery userQuery)
    • getAssetIds

      protected static Collection<String> getAssetIds(org.openremote.model.rules.Assets assets, org.openremote.model.query.AssetQuery assetQuery)
    • buildRuleActionExecution

      protected org.openremote.manager.rules.JsonRulesBuilder.RuleActionExecution buildRuleActionExecution(org.openremote.model.rules.json.JsonRule rule, org.openremote.model.rules.json.RuleAction ruleAction, String actionsName, int index, boolean useUnmatched, RulesFacts facts, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState, org.openremote.model.rules.Assets assetsFacade, org.openremote.model.rules.Users usersFacade, org.openremote.model.rules.Notifications notificationsFacade, org.openremote.model.rules.Webhooks webhooksFacade, org.openremote.model.rules.Alarms alarmsFacade, org.openremote.model.rules.PredictedDatapoints predictedDatapointsFacade)
    • getMatchedAssetStates

      protected Map<String,Set<org.openremote.model.attribute.AttributeInfo>> getMatchedAssetStates(org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState, boolean useUnmatched, Collection<org.openremote.model.asset.UserAssetLink> userAssetLinks, String userId)
    • getRealm

      protected String getRealm()
    • getAlarmContent

      protected String getAlarmContent(String sourceText, Map<String,Set<org.openremote.model.attribute.AttributeInfo>> assetStates)
    • replaceAssetIdPlaceholder

      protected String replaceAssetIdPlaceholder(String text, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState, boolean useUnmatched, String context, boolean firstOnly)
    • insertTriggeredAssetInfo

      protected String insertTriggeredAssetInfo(String sourceText, Map<String,Set<org.openremote.model.attribute.AttributeInfo>> assetStates, boolean isHtml, boolean isJson)
    • insertBodyInMessage

      protected org.openremote.model.notification.AbstractNotificationMessage insertBodyInMessage(org.openremote.model.notification.AbstractNotificationMessage sourceMessage, boolean isHtml, String body)
    • getRuleActionTargetIds

      protected static Collection<String> getRuleActionTargetIds(org.openremote.model.rules.json.RuleActionTarget target, boolean useUnmatched, org.openremote.manager.rules.JsonRulesBuilder.RuleState ruleState, org.openremote.model.rules.Assets assetsFacade, org.openremote.model.rules.Users usersFacade, RulesFacts facts)
    • targetIsNotAssets

      protected static boolean targetIsNotAssets(org.openremote.model.rules.json.RuleActionTarget target)
    • log

      protected void log(Level level, String message)
    • log

      protected void log(Level level, String message, Throwable t)
    • getSunCalculator

      protected static org.shredzone.commons.suncalc.SunTimes.Parameters getSunCalculator(org.openremote.model.rules.Ruleset ruleset, org.openremote.model.rules.SunPositionTrigger sunPositionTrigger, org.openremote.container.timer.TimerService timerService) throws IllegalStateException
      Throws:
      IllegalStateException
    • asAttributeMatcher

      protected static Function<Collection<org.openremote.model.attribute.AttributeInfo>,Set<org.openremote.model.attribute.AttributeInfo>> asAttributeMatcher(Supplier<Long> currentMillisProducer, List<org.openremote.model.query.filter.AttributePredicate> attributePredicates, Map<Integer,String> predicateDurationStrings, Map<org.openremote.model.util.Pair<org.openremote.model.attribute.AttributeInfo,Integer>,Long> durationMatchTimes)
      Creates a function that matches attributes similar to AssetQueryPredicate.asAttributeMatcher(java.util.function.Supplier<java.lang.Long>, org.openremote.model.query.LogicGroup<org.openremote.model.query.filter.AttributePredicate>), but with duration logic applied per AttributePredicate and only supports a single list of predicates.