Class DefaultDroolsRuleConditionsGenerator

    • Constructor Detail

      • DefaultDroolsRuleConditionsGenerator

        public DefaultDroolsRuleConditionsGenerator()
    • Method Detail

      • isConditionDependentOnOthers

        protected boolean isConditionDependentOnOthers​(RuleIrCondition condition,
                                                       java.util.Collection<? extends RuleIrCondition> others,
                                                       java.util.Collection<java.lang.String> definedVariables)
      • isAnyVariableReferredInConditions

        protected boolean isAnyVariableReferredInConditions​(java.util.Collection<java.lang.String> variableNamesToCheck,
                                                            java.util.Collection<? extends RuleIrCondition> others)
      • isAnyVariableReferredInPatternConditions

        protected boolean isAnyVariableReferredInPatternConditions​(java.util.Collection<java.lang.String> variableNamesToCheck,
                                                                   java.util.Collection<? extends RuleIrCondition> others)
      • isAnyVariableReferredInAttrRelConditions

        protected boolean isAnyVariableReferredInAttrRelConditions​(java.util.Collection<java.lang.String> variableNamesToCheck,
                                                                   java.util.Collection<? extends RuleIrCondition> others)
      • findVariablesOfPatternConditions

        protected void findVariablesOfPatternConditions​(java.util.Collection<java.lang.String> variableNames,
                                                        java.util.Collection<RuleIrCondition> conditions)
      • getConditionsInGroups

        protected java.util.Collection<RuleIrCondition> getConditionsInGroups​(java.util.Collection<? extends RuleIrCondition> conditions)
      • filterOutNonGroupConditions

        protected java.util.Collection<RuleIrCondition> filterOutNonGroupConditions​(java.util.Collection<RuleIrCondition> conditions)
      • generateBooleanConditions

        protected void generateBooleanConditions​(java.util.Map<java.lang.Boolean,​java.util.Collection<AbstractRuleIrBooleanCondition>> booleanConditions,
                                                 java.util.StringJoiner conditionsJoiner,
                                                 java.lang.String indentation)
      • isVariableTerminal

        protected boolean isVariableTerminal​(java.lang.String variableName,
                                             DroolsRuleGeneratorContext context)
      • isVariableTerminal

        protected boolean isVariableTerminal​(java.lang.String variableName,
                                             java.util.Collection<RuleIrCondition> conditions)
      • generateUniqueFactMatchingCondition

        protected void generateUniqueFactMatchingCondition​(DroolsRuleGeneratorContext context,
                                                           RuleIrVariable variable,
                                                           java.lang.StringBuilder conditionsBuffer,
                                                           java.util.function.Supplier<java.lang.String> variablePrefixSupplier)
        adds additional conditions like this != $v4_rao to OrderEntryRAO variables. Example: $rao_v5 := OrderEntryRAO(this != $rao_v4, productCode == "478828". This is a performance improvement that reduces matching efforts for drools. Note: If multiple containers define the same set of products / categories this can have a functional impact (i.e. the promotion might not fire) if the containers are supposed to match the same cart entry. Ideally, containers should not contain any overlap in their defined products/categories, but if business needs requires such a setup of containers, this functionality can be turned off by setting the propery droolsruleengineservices.generate.unique.fact.matching.condition=false, followed by recompilation of the promotions.
        Parameters:
        context -
        variable -
        conditionsBuffer -
        variablePrefixSupplier -
      • generateWhenGroupConditions

        protected void generateWhenGroupConditions​(DroolsRuleGeneratorContext context,
                                                   java.util.List<RuleIrGroupCondition> groupConditions,
                                                   java.util.StringJoiner conditionsJoiner,
                                                   java.lang.String indentation)
      • generateGroupConditions

        protected void generateGroupConditions​(DroolsRuleGeneratorContext context,
                                               java.util.List<RuleIrGroupCondition> groupConditions,
                                               java.util.StringJoiner conditionsJoiner,
                                               java.lang.String indentation)
      • generateGroupConditions

        protected void generateGroupConditions​(java.util.List<RuleIrGroupCondition> groupConditions,
                                               java.util.function.Function<RuleIrGroupCondition,​java.lang.String> generateConditionsFunction,
                                               java.util.StringJoiner conditionsJoiner)
      • generateExistsConditions

        protected void generateExistsConditions​(DroolsRuleGeneratorContext context,
                                                java.util.List<RuleIrExistsCondition> existsConditions,
                                                java.util.StringJoiner conditionsJoiner,
                                                java.lang.String indentation)
      • generateNotConditions

        protected void generateNotConditions​(DroolsRuleGeneratorContext context,
                                             java.util.List<RuleIrNotCondition> notConditions,
                                             java.util.StringJoiner conditionsJoiner,
                                             java.lang.String indentation)
      • generateWhenNotConditions

        protected void generateWhenNotConditions​(DroolsRuleGeneratorContext context,
                                                 java.util.List<RuleIrNotCondition> notConditions,
                                                 java.util.StringJoiner conditionsJoiner,
                                                 java.lang.String indentation)
      • setDroolsRuleValueFormatter

        public void setDroolsRuleValueFormatter​(DroolsRuleValueFormatter droolsRuleValueFormatter)
      • getExcludedQueryVariableClassNames

        protected java.util.List<java.lang.String> getExcludedQueryVariableClassNames()
      • setExcludedQueryVariableClassNames

        public void setExcludedQueryVariableClassNames​(java.util.List<java.lang.String> excludedQueryVariableClassNames)
      • getTypesToSkipOperatorEvaluation

        protected java.util.List<java.lang.Class<?>> getTypesToSkipOperatorEvaluation()
      • setTypesToSkipOperatorEvaluation

        public void setTypesToSkipOperatorEvaluation​(java.util.List<java.lang.Class<?>> typesToSkipOperatorEvaluation)
      • setConfigurationService

        public void setConfigurationService​(ConfigurationService configurationService)
      • setDroolsStringUtils

        public void setDroolsStringUtils​(DroolsStringUtils droolsStringUtils)