Declarative Rules

Joule provides a business rules processor that acts upon micro batches within a streaming event context. The Rules processor integrates the JSR-94 compliant Drools engine.

Library details

org.drools:drools-XXXX:8.32.0.Final

Example

rules:
  name: anticipated high mobile usage
  rule file: /home/joule/rules/dataUsageRules.drl

Attributes

AttributeDescriptionData TypeRequired

name

Name of processor

String

rule file

Drools rule file path

String

pool size

Non-functional setting to size the internal caching of Drools container

Integer

Default: 8

Example DRL file

package com.fractalworks.streams.processors.rules;

import com.fractalworks.streams.core.data.streams.StreamEvent;

global com.fractalworks.streams.core.data.streams.Context ctx;
global com.fractalworks.streams.processors.rules.RuleResponse response;

dialect  "mvel"

rule "Low data usage"
    when
        StreamEvent( getValue("dataUsage") < 0.50,
                     getValue("daysleft") >= 15 )
    then
        response.setRuleId("Low data usage");
        response.put("desc","Low data usage");
end

rule "Medium data usage"
    when
        $t : StreamEvent( getValue("dataUsage") > 0.50,
                          getValue("dataUsage") < 0.65,
                          getValue("daysleft") < 10)
    then
        response.setRuleId("Medium data usage");
        response.put("desc","Medium data usage");
end

rule "High data usage"
    when
        $t : StreamEvent( getValue("dataUsage") > 0.90,
                          getValue("daysleft") <= 5)
    then
        response.setRuleId("High data usage");
        response.put("desc","High data usage");
end

Additional Information

Offical Drools documentation can be found here.

Last updated