Drools Tutorial - Architecture (2022) (2022)

Adblocker detected! Please consider whitelist or disable this site.

We've detected that you are using AdBlock Plus or some other adblocking software which is preventing the page from fully loading.

To keep the site operating, we need funding, and practically all of it comes from internet advertising.

If you still want to continue, Please add techgeeknext.com to your ad blocking whitelist or disable your adblocking software.

×

Drools Tutorial (2022) | TechGeekNxt >>

Overview

In this tutorial we will be looking at Drools Architecture, it's components.

Drools Tutorial :

  1. Drools Overview - Architecture
  2. Spring Boot + Drools Example
  3. Spring Boot + Drools Decision Table Example
  4. Drools Interview Questions and Answers

What is Drool?

Drools is a free and open source project licenced under the Apache License 2.0 and it is compatible with any JVM and available in Maven Central Repository also.

Drools is a BRMS (Business Rules Management System). It includes a Business Rules Engine (BRE), a web authoring and rules management framework (Drools Workbench), complete runtime support for Decision Model and Notation (DMN) models at Conformance level 3, and a core development Eclipse IDE plugin.

It is written in 100% pure Java, runs on any JVM and is available in the Maven Central repository too. The Drools assists you in separating and reasoning over logic and data in business processes. It has a forward and backward chaining inference-based drools rules engine that supports forward and backward chaining.

Drools are divided into two categories:

  1. Authoring- It refers the creation of Rules files (.DRL files).
  2. Runtime- It means the creation of working memory as well as the handling of activation.

In this Drools tutorial, you will learn the following key aspects:

  1. What is Drool?
  2. What is the Drool Rule Engine?
  3. Architecture of Drools
  4. What is Drool Rule?
  5. Why use Drools Rule Engine?
  6. What are Disadvantages of Rules Engine?
  7. What is Backward vs. Forward Chaining?

What is the Drool Rule Engine?

  • Drools is a Rule Engine or a Production Rule System that implements an Expert System using a rule-based approach. Expert systems are information-based systems that process acquired knowledge into a knowledge base that can be used for reasoning.
  • A Production Rule System is Turing complete, with a focus on knowledge representation to express propositional and first order logic in a concise, non-ambiguous and declarative manner.
  • The brain of a Production Rules System is an Inference Engine that is able to expand to a large number of rules and facts.
  • A Production Rule is a two-part structure that uses first-order logic for reasoning over knowledge representation.
  • A Rule Engine allows you to specify "What to Do" rather than "How to Do It".

Architecture of Drools

The working of Drools architecture is as follows:

  • Production Memory
    The Rules are stored in the Production Memory/Rule Base.
  • Pattern Matching
    The process of matching the new or existing facts against production rules is called pattern matching, which is performed by the Rule engine.
  • Working Memory
    The facts that the Inference Engine matches against are kept in the Working Memory.
  • Agenda
    A system with a large number of rules and facts which result in several rules being valid for the same fact assertion; these rules are said to be in conflict. The Agenda manages the execution order of these conflicting rules using a Conflict Resolution strategy.

What is Drool Rule?

A DRL Rule File (.drl)

DRL (Drools Rule Language) rules are business rules that you define directly in .drl text files. A DRL file can contain one or more rules that define at minimum the rule conditions (when) and actions (then). The DRL designer in Business Central provides syntax highlighting for Java, DRL, and XML.
Syntax:

(Video) Drools Tutorial Part - 1| Java based Rule Engine | Drools getting started | Basic Setup

rule "name" attributes when <conditions> then <actions>end

Pattern Matching Method

Pattern Matching, which is done by the Inference Engine, is the process of matching new or existing facts against Production Rules.

Algorithms used for Pattern Matching are:

    Rete Algorithm
    Leaps Algorithm
    Linear Algorithm
    Treat Algorithm

However, the algorithm mostly used by Drools is the Rete Algorithm.

Rete Algorithm

The Drools Rete implementation is known as ReteOO, and it denotes that Drools has improved and optimised the Rete algorithm for object-oriented systems.It uses node sharing to minimise or remove particular types of redundancy. While performing joins between different fact types, it stores partial matches.

Take a look at our suggested posts:

Spring Boot - Transaction Management

Spring Boot - JWT Authentication Example

Spring Boot - JWT + Angular 8 Authentication Example

Spring Boot - JWT + MYSQL Authentication Example

Spring Boot - Session Management using Redis

Spring Boot - Hazelcast

Spring Boot - JPA + REST + MYSQL Example

Spring Boot Apache Kafka Example

Java 15

Java 14

(Video) Drools - Rule Engine Integration with Spring framework | java Techie

Java 8 Interview Questions and Answers

Angular 8 Spring Boot Example

Why to use Drools Rule Engine?

Below are the few Advantages of using Drools Rule Engine:

  • Declarative Programming: A Rule Engine allows you to specify "What to Do" rather than "How to Do It".
  • Logic and Data Separation: Your data is in your domain objects, the logic is in the rules.
  • Speed and Scalability: The Rete algorithm,the Leaps algorithm, and their descendants such as Drools' ReteOO, provide very efficient ways of matching rule patterns to your domain object data.
  • Centralization of Knowledge: You create a repository of knowledge (a knowledge base) which is executable by using rules.
  • Tool Integration: Tools like Eclipse (and, in the future, Web-based user interfaces) make it possible to edit and manage rules while receiving instant input, validation, and content assistance. There are also auditing and debugging tools available.
  • Explanation Facility: Rule systems effectively provide a "explanation facility" by logging the decisions made by the rule engine as well as the reasons for those decisions.
  • Understandable Rules: You can set yourself up to write rules that are very similar to natural language by developing object models and, optionally, Domain Specific Languages that model your problem domain.

Disadvantages of Rules Engine

Here are some downsides of using a rules engine:

  • Developers must put in a lot of work to learn this programming process.
  • The rule engine is not a safe way to troubleshoot problems.
  • One must understand how the rule engine works to consumes more memory.
  • For a complex branching, a large number of rules exist.
  • Rules can change over time and will take effect when the code is updated.

What is Backward vs. Forward Chaining?

There are two methods of execution for a rule system:

Forward Chaining

To begin, with forward chaining, we begin to analyze data and make our way towards a specific conclusion/decision.

For example, If you want to know who the top five students out of 100 were for a specific exam. Here we will take the data and then based on the analysis decide the results. This is forward chaining

Backward Chaining

We first take a decision and then check if the decision is true or not by backtracking through sequence of events or facts.

For example, If I want to know if a specific student has passed or not?
Then I'll take a decision that student has passed without first analyzing. Here, directly we decide the result and then back track to evaluate with data processing chain and as a result, determine whether or not the decision is right.

When comparing forward chaining and backward chaining, the first one can be represented as "data-driven" (data as input), while the backward chaining can be described as "event(or goal)-driven" (goals as inputs).

Recommendation for Top Popular Post :

Java 17

Spring Boot - Session Management

Spring Boot - Transaction Management

(Video) Drools Rules Engine : How to calculate Income tax using Drools Engine

Spring Boot - Security Tutorial

Java Lombok Tutorial

Spring Cloud Tutorial

RxJS Tutorial

Spring Boot - JWT Example

Spring Boot Complete CRUD example

Spring Boot - RabbitMQ Example

Angular Spring Boot Example

(Video) Drools Rule Engine with Spring Boot

Spring Boot JPA Rest

Java Z Garbage Collector (ZGC)

Java 8 Programming Interview Questions

Angular 9 features

Angular - RxJS Interview Questions

RxJS switchMap

CI CD DevOps Interview Questions

Top Spring Batch Interview Questions

RxJS Higher-Order Observable Mapping

(Video) [KieLive#17] Understanding DRL (Drools Rule Language)


";b=b.lastChild;for(var c=[];b.firstChild;)c.push(b.removeChild(b.firstChild));return c},tc=function(a,b,c){c=c||100;for(var d={},e=0;e=od--?(J("GTM",1),md[id]=!0):(nd.ih(),nc(pd()),jd[id]=!0,qd=rd=ld=kd=""))},pd=function(){var a=id;if(void 0===a)return"";var b=cd("GTM"),c=cd("TAGGING");return[sd,jd[a]?"":"&es=1",td[a],b?"&u="+b:"",c?"&ut="+c:"",dd(),kd,ld,rd,qd,"&z=0"].join("")},ud=function(){return[Yc,"&v=3&t=t","&pid="+xa(),"&rv="+I.Kb].join("")},vd="0.005000">Math.random(),sd=ud(),wd=function(){sd=ud()},jd={},kd="",ld="",qd="",rd="",id=void 0,td={},md={},ed=void 0,nd=function(a,b){var c=0,d=0;return{Kg:function(){if(c=b&&(c=0);return c>=a},ih:function(){Ga()-d>=b&&(c=0);c++;d=Ga()}}}(2,1E3),od=1E3,xd=function(a,b){if(vd&&!md[a]&&id!==a){fd();id=a;qd=kd="";var c;c=0===b.indexOf("gtm.")?encodeURIComponent(b):"*";td[a]="&e="+c+"&eid="+a;gd()}},yd=function(a,b,c){if(vd&&!md[a]&&b){a!==id&&(fd(),id=a);var d,e=String(b[Hb.va]||"").replace(/_/g,"");0===e.indexOf("cvt")&&(e="cvt");d=e;var f=c+d;kd=kd?kd+"."+f:"&tr="+f;var h=b["function"];if(!h)throw Error("Error: No function name given for function call.");var k=(wb[h]?"1":"2")+d;qd=qd?qd+"."+k:"&ti="+k;gd();2022b)){var c=a.substring(0,b);if(Pd.test(c)){for(var d=a.substring(b+1).split("/"),e=0;ek;k++){var l=h[k].src;if(l){l=l.toLowerCase();if(0===l.indexOf(e)){b=3;break a}1===f&&0===l.indexOf(d)&&(f=2)}}b=f}else b=a;return b};var Xd=function(a,b,c){if(D[a.functionName])return b.ad&&H(b.ad),D[a.functionName];var d=Wd();D[a.functionName]=d;if(a.Mb)for(var e=0;en(c,k))if(l&&0n(c,l[r])){J("GTM",11);q=!1;break a}}else{q=!1;break a}q=!0}m=q}var u=!1;if(d){var p=0te){te++;try{E.documentElement.doScroll("left"),ve()}catch(a){D.setTimeout(we,50)}}}var xe=function(a){se?a():ue.push(a)};var ye={},ze={},Ae=function(a,b,c,d){if(!ze[a]||Sc[b]||"__zone"===b)return-1;var e={};Ra(d)&&(e=C(d,e));e.id=c;e.status="timeout";return ze[a].tags.push(e)-1},Be=function(a,b,c,d){if(ze[a]){var e=ze[a].tags[b];e&&(e.status=c,e.executionTime=d)}};function Ce(a){for(var b=ye[a]||[],c=0;c=c&&Ce(a)})},Sf:function(){d=!0;b>=c&&Ce(a)}}};var Ge=function(){function a(d){return!ra(d)||0>d?0:d}if(!Qc._li&&D.performance&&D.performance.timing){var b=D.performance.timing.navigationStart,c=ra(Gd.get("gtm.start"))?Gd.get("gtm.start"):0;Qc._li={cst:a(c-b),cbt:a(Wc-b)}}};var Ke={},Le=function(){return D.GoogleAnalyticsObject&&D[D.GoogleAnalyticsObject]},Me=!1;var Ne=function(a){D.GoogleAnalyticsObject||(D.GoogleAnalyticsObject=a||"ga");var b=D.GoogleAnalyticsObject;if(D[b])D.hasOwnProperty(b)||J("GTM",12);else{var c=function(){c.q=c.q||[];c.q.push(arguments)};c.l=Number(new Date);D[b]=c}Ge();return D[b]},Oe=function(a,b,c,d){b=String(b).replace(/\s+/g,"").split(",");var e=Le();e(a+"require","linker");e(a+"linker:autoLink",b,c,d)};var Qe=function(a){},Pe=function(){return D.GoogleAnalyticsObject||"ga"};var Se=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var Te=/:[0-9]+$/,Ue=function(a,b,c){for(var d=a.split("&"),e=0;ec?a.href:a.href.substr(0,c)}return b},Ze=function(a){var b=E.createElement("a");a&&(b.href=a);var c=b.pathname;"/"!==c[0]&&(a||J("TAGGING",1),c="/"+c);var d=b.hostname.replace(Te,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:d,pathname:c,search:b.search,hash:b.hash,port:b.port}};function df(a,b,c,d){var e=ub[a],f=ef(a,b,c,d);if(!f)return null;var h=Db(e[Hb.Rd],c,[]);if(h&&h.length){var k=h[0];f=df(k.index,{C:f,B:1===k.pe?b.terminate:f,terminate:b.terminate},c,d)}return f}function ef(a,b,c,d){function e(){if(f[Hb.pf])k();else{var w=Eb(f,c,[]),x=Ae(c.id,String(f[Hb.va]),Number(f[Hb.Td]),w[Hb.qf]),y=!1;w.vtp_gtmOnSuccess=function(){if(!y){y=!0;var A=Ga()-z;yd(c.id,ub[a],"5");Be(c.id,x,"success",A);h()}};w.vtp_gtmOnFailure=function(){if(!y){y=!0;var A=Ga()-z;yd(c.id,ub[a],"6");Be(c.id,x,"failure",A);k()}};w.vtp_gtmTagId=f.tag_id;w.vtp_gtmEventId=c.id;yd(c.id,f,"1");var B=function(){var A=Ga()-z;yd(c.id,f,"7");Be(c.id,x,"exception",A);y||(y=!0,k())};var z=Ga();try{Cb(w,c)}catch(A){B(A)}}}var f=ub[a],h=b.C,k=b.B,l=b.terminate;if(c.Vc(f))return null;var m=Db(f[Hb.Ud],c,[]);if(m&&m.length){var q=m[0],r=df(q.index,{C:h,B:k,terminate:l},c,d);if(!r)return null;h=r;k=2===q.pe?l:r}if(f[Hb.Jd]||f[Hb.uf]){var u=f[Hb.Jd]?vb:c.rh,p=h,t=k;if(!u[a]){e=Ia(e);var v=ff(a,u,e);h=v.C;k=v.B}return function(){u[a](p,t)}}return e}function ff(a,b,c){var d=[],e=[];b[a]=gf(d,e,c);return{C:function(){b[a]=hf;for(var f=0;fe?1:dk?1:h>21:d;return[Math.round(2147483647*Math.random())^d&2147483647,Math.round(Ga()/1E3)].join(".")},jg=function(a,b,c,d,e){var f=hg(b);return Yf(a,f,ig(c),d,e)},kg=function(a,b,c,d){var e=""+hg(c),f=ig(d);1>2,m=(f&3)>4,q=(h&15)>6,r=k&63;e||(r=64,d||(q=64));b.push(ng[l],ng[m],ng[q],ng[r])}return b.join("")}function sg(a){function b(l){for(;d>4);64!=h&&(c+=String.fromCharCode(f>2),64!=k&&(c+=String.fromCharCode(hf;f++){for(var h=f,k=0;8>k;k++)h=h&1?h>>>1^3988292384:h>>>1;e[f]=h}d=e}tg=d;for(var l=4294967295,m=0;m>>8^tg[(l^c.charCodeAt(m))&255];return((l^-1)>>>0).toString(36)},Ig=function(){return function(a){var b=Ze(D.location.href),c=b.search.replace("?",""),d=Ue(c,"_gl",!0)||"";a.query=Hg(d)||{};var e=Xe(b,"fragment").match(Eg("_gl"));a.fragment=Hg(e&&e[3]||"")||{}}},Jg=function(){var a=Ig(),b=wg();b.data||(b.data={query:{},fragment:{}},a(b.data));var c={},d=b.data;d&&(Ja(c,d.query),Ja(c,d.fragment));return c},Hg=function(a){var b;b=void 0===b?3:b;try{if(a){var c;a:{for(var d=a,e=0;3>e;++e){var f=Ag.exec(d);if(f){c=f;break a}d=decodeURIComponent(d)}c=void 0}var h=c;if(h&&"1"===h[1]){var k=h[3],l;a:{for(var m=h[2],q=0;qq){m=!0;break b}m=!1}if(!m){var p=lg(b,l,!0);p.Ca="ad_storage";dg(h,k,p)}}}}ah(Zg(c.gclid,c.gclsrc),b)})},ch=function(a,b){var c=Vg[a];if(void 0!==c)return b+c},dh=function(a){var b=a.split(".");return 3!==b.length||"GCL"!==b[0]?0:1E3*(Number(b[1])||0)};function fh(a){var b=a.split(".");if(3==b.length&&"GCL"==b[0]&&b[1])return b[2]}var gh=function(a,b,c,d,e){if(sa(b)){var f=Yg(e),h=function(){for(var k={},l=0;ln(u,Q.Wb)&&(k.cookieName=v+"_ga")}ui(k,"cookieDomain","auto");ui(h,"forceSSL",!0);ui(f,"eventCategory",Di(c));0a.length||!g(a[1])||!Ra(b))return;var c=Rd(a[1]);if(!c)return;ej(c.id);var d=c.id,e=b[Q.wc]||"default";e=e.toString().split(",");for(var f=0;f=Number(c);case "_gt":return Number(b)>Number(c);case "_lc":var q;q=String(b).split(",");return 0

";b=b.lastChild;for(var c=[];b.firstChild;)c.push(b.removeChild(b.firstChild));return c},tc=function(a,b,c){c=c||100;for(var d={},e=0;e=od--?(J("GTM",1),md[id]=!0):(nd.ih(),nc(pd()),jd[id]=!0,qd=rd=ld=kd=""))},pd=function(){var a=id;if(void 0===a)return"";var b=cd("GTM"),c=cd("TAGGING");return[sd,jd[a]?"":"&es=1",td[a],b?"&u="+b:"",c?"&ut="+c:"",dd(),kd,ld,rd,qd,"&z=0"].join("")},ud=function(){return[Yc,"&v=3&t=t","&pid="+xa(),"&rv="+I.Kb].join("")},vd="0.005000">Math.random(),sd=ud(),wd=function(){sd=ud()},jd={},kd="",ld="",qd="",rd="",id=void 0,td={},md={},ed=void 0,nd=function(a,b){var c=0,d=0;return{Kg:function(){if(c=b&&(c=0);return c>=a},ih:function(){Ga()-d>=b&&(c=0);c++;d=Ga()}}}(2,1E3),od=1E3,xd=function(a,b){if(vd&&!md[a]&&id!==a){fd();id=a;qd=kd="";var c;c=0===b.indexOf("gtm.")?encodeURIComponent(b):"*";td[a]="&e="+c+"&eid="+a;gd()}},yd=function(a,b,c){if(vd&&!md[a]&&b){a!==id&&(fd(),id=a);var d,e=String(b[Hb.va]||"").replace(/_/g,"");0===e.indexOf("cvt")&&(e="cvt");d=e;var f=c+d;kd=kd?kd+"."+f:"&tr="+f;var h=b["function"];if(!h)throw Error("Error: No function name given for function call.");var k=(wb[h]?"1":"2")+d;qd=qd?qd+"."+k:"&ti="+k;gd();2022b)){var c=a.substring(0,b);if(Pd.test(c)){for(var d=a.substring(b+1).split("/"),e=0;ek;k++){var l=h[k].src;if(l){l=l.toLowerCase();if(0===l.indexOf(e)){b=3;break a}1===f&&0===l.indexOf(d)&&(f=2)}}b=f}else b=a;return b};var ie=new RegExp(/^(.*\.)?(google|youtube|blogger|withgoogle)(\.com?)?(\.[a-z]{2})?\.?$/),je={cl:["ecl"],customPixels:["nonGooglePixels"],ecl:["cl"],ehl:["hl"],hl:["ehl"],html:["customScripts","customPixels","nonGooglePixels","nonGoogleScripts","nonGoogleIframes"],customScripts:["html","customPixels","nonGooglePixels","nonGoogleScripts","nonGoogleIframes"],nonGooglePixels:[],nonGoogleScripts:["nonGooglePixels"],nonGoogleIframes:["nonGooglePixels"]},ke={cl:["ecl"],customPixels:["customScripts","html"],ecl:["cl"],ehl:["hl"],hl:["ehl"],html:["customScripts"],customScripts:["html"],nonGooglePixels:["customPixels","customScripts","html","nonGoogleScripts","nonGoogleIframes"],nonGoogleScripts:["customScripts","html"],nonGoogleIframes:["customScripts","html","nonGoogleScripts"]},le="google customPixels customScripts html nonGooglePixels nonGoogleScripts nonGoogleIframes".split(" ");var ne=function(a){var b=Fd("gtm.whitelist");b&&J("GTM",9);var c=b&&La(Da(b),je),d=Fd("gtm.blacklist");d||(d=Fd("tagTypeBlacklist"))&&J("GTM",3);d?J("GTM",8):d=[];me()&&(d=Da(d),d.push("nonGooglePixels","nonGoogleScripts","sandboxedScripts"));0n(c,k))if(l&&0n(c,l[r])){J("GTM",11);q=!1;break a}}else{q=!1;break a}q=!0}m=q}var u=!1;if(d){var p=0te){te++;try{E.documentElement.doScroll("left"),ve()}catch(a){D.setTimeout(we,50)}}}var xe=function(a){se?a():ue.push(a)};var ye={},ze={},Ae=function(a,b,c,d){if(!ze[a]||Sc[b]||"__zone"===b)return-1;var e={};Ra(d)&&(e=C(d,e));e.id=c;e.status="timeout";return ze[a].tags.push(e)-1},Be=function(a,b,c,d){if(ze[a]){var e=ze[a].tags[b];e&&(e.status=c,e.executionTime=d)}};function Ce(a){for(var b=ye[a]||[],c=0;c=c&&Ce(a)})},Sf:function(){d=!0;b>=c&&Ce(a)}}};var Ge=function(){function a(d){return!ra(d)||0>d?0:d}if(!Qc._li&&D.performance&&D.performance.timing){var b=D.performance.timing.navigationStart,c=ra(Gd.get("gtm.start"))?Gd.get("gtm.start"):0;Qc._li={cst:a(c-b),cbt:a(Wc-b)}}};var Ke={},Le=function(){return D.GoogleAnalyticsObject&&D[D.GoogleAnalyticsObject]},Me=!1;var Ne=function(a){D.GoogleAnalyticsObject||(D.GoogleAnalyticsObject=a||"ga");var b=D.GoogleAnalyticsObject;if(D[b])D.hasOwnProperty(b)||J("GTM",12);else{var c=function(){c.q=c.q||[];c.q.push(arguments)};c.l=Number(new Date);D[b]=c}Ge();return D[b]},Oe=function(a,b,c,d){b=String(b).replace(/\s+/g,"").split(",");var e=Le();e(a+"require","linker");e(a+"linker:autoLink",b,c,d)};var Qe=function(a){},Pe=function(){return D.GoogleAnalyticsObject||"ga"};var Se=/^(?:(?:https?|mailto|ftp):|[^:/?#]*(?:[/?#]|$))/i;var Te=/:[0-9]+$/,Ue=function(a,b,c){for(var d=a.split("&"),e=0;ec?a.href:a.href.substr(0,c)}return b},Ze=function(a){var b=E.createElement("a");a&&(b.href=a);var c=b.pathname;"/"!==c[0]&&(a||J("TAGGING",1),c="/"+c);var d=b.hostname.replace(Te,"");return{href:b.href,protocol:b.protocol,host:b.host,hostname:d,pathname:c,search:b.search,hash:b.hash,port:b.port}};function df(a,b,c,d){var e=ub[a],f=ef(a,b,c,d);if(!f)return null;var h=Db(e[Hb.Rd],c,[]);if(h&&h.length){var k=h[0];f=df(k.index,{C:f,B:1===k.pe?b.terminate:f,terminate:b.terminate},c,d)}return f}function ef(a,b,c,d){function e(){if(f[Hb.pf])k();else{var w=Eb(f,c,[]),x=Ae(c.id,String(f[Hb.va]),Number(f[Hb.Td]),w[Hb.qf]),y=!1;w.vtp_gtmOnSuccess=function(){if(!y){y=!0;var A=Ga()-z;yd(c.id,ub[a],"5");Be(c.id,x,"success",A);h()}};w.vtp_gtmOnFailure=function(){if(!y){y=!0;var A=Ga()-z;yd(c.id,ub[a],"6");Be(c.id,x,"failure",A);k()}};w.vtp_gtmTagId=f.tag_id;w.vtp_gtmEventId=c.id;yd(c.id,f,"1");var B=function(){var A=Ga()-z;yd(c.id,f,"7");Be(c.id,x,"exception",A);y||(y=!0,k())};var z=Ga();try{Cb(w,c)}catch(A){B(A)}}}var f=ub[a],h=b.C,k=b.B,l=b.terminate;if(c.Vc(f))return null;var m=Db(f[Hb.Ud],c,[]);if(m&&m.length){var q=m[0],r=df(q.index,{C:h,B:k,terminate:l},c,d);if(!r)return null;h=r;k=2===q.pe?l:r}if(f[Hb.Jd]||f[Hb.uf]){var u=f[Hb.Jd]?vb:c.rh,p=h,t=k;if(!u[a]){e=Ia(e);var v=ff(a,u,e);h=v.C;k=v.B}return function(){u[a](p,t)}}return e}function ff(a,b,c){var d=[],e=[];b[a]=gf(d,e,c);return{C:function(){b[a]=hf;for(var f=0;fe?1:dk?1:h>21:d;return[Math.round(2147483647*Math.random())^d&2147483647,Math.round(Ga()/1E3)].join(".")},jg=function(a,b,c,d,e){var f=hg(b);return Yf(a,f,ig(c),d,e)},kg=function(a,b,c,d){var e=""+hg(c),f=ig(d);1>2,m=(f&3)>4,q=(h&15)>6,r=k&63;e||(r=64,d||(q=64));b.push(ng[l],ng[m],ng[q],ng[r])}return b.join("")}function sg(a){function b(l){for(;d>4);64!=h&&(c+=String.fromCharCode(f>2),64!=k&&(c+=String.fromCharCode(hf;f++){for(var h=f,k=0;8>k;k++)h=h&1?h>>>1^3988292384:h>>>1;e[f]=h}d=e}tg=d;for(var l=4294967295,m=0;m>>8^tg[(l^c.charCodeAt(m))&255];return((l^-1)>>>0).toString(36)},Ig=function(){return function(a){var b=Ze(D.location.href),c=b.search.replace("?",""),d=Ue(c,"_gl",!0)||"";a.query=Hg(d)||{};var e=Xe(b,"fragment").match(Eg("_gl"));a.fragment=Hg(e&&e[3]||"")||{}}},Jg=function(){var a=Ig(),b=wg();b.data||(b.data={query:{},fragment:{}},a(b.data));var c={},d=b.data;d&&(Ja(c,d.query),Ja(c,d.fragment));return c},Hg=function(a){var b;b=void 0===b?3:b;try{if(a){var c;a:{for(var d=a,e=0;3>e;++e){var f=Ag.exec(d);if(f){c=f;break a}d=decodeURIComponent(d)}c=void 0}var h=c;if(h&&"1"===h[1]){var k=h[3],l;a:{for(var m=h[2],q=0;qq){m=!0;break b}m=!1}if(!m){var p=lg(b,l,!0);p.Ca="ad_storage";dg(h,k,p)}}}}ah(Zg(c.gclid,c.gclsrc),b)})},ch=function(a,b){var c=Vg[a];if(void 0!==c)return b+c},dh=function(a){var b=a.split(".");return 3!==b.length||"GCL"!==b[0]?0:1E3*(Number(b[1])||0)};function fh(a){var b=a.split(".");if(3==b.length&&"GCL"==b[0]&&b[1])return b[2]}var gh=function(a,b,c,d,e){if(sa(b)){var f=Yg(e),h=function(){for(var k={},l=0;l=f)return!0;(d=d.parentElement)&&(e=D.getComputedStyle(d,null))}return!1};var Ck=D.clearTimeout,Dk=D.setTimeout,U=function(a,b,c){if(Ud()){b&&H(b)}else return kc(a,b,c)},Ek=function(){return D.location.href},Fk=function(a){return Xe(Ze(a),"fragment")},Gk=function(a){return Ye(Ze(a))},V=function(a,b){return Fd(a,b||2)},Hk=function(a,b,c){var d;b?(a.eventCallback=b,c&&(a.eventTimeout=c),d=Kj(a)):d=Kj(a);return d},Ik=function(a,b){D[a]=b},W=function(a,b,c){b&&(void 0===D[a]||c&&!D[a])&&(D[a]=b);return D[a]},Jk=function(a,b,c){return Vf(a,b,void 0===c?!0:!!c)},Kk=function(a,b){if(Ud()){b&&H(b)}else mc(a,b)},Lk=function(a){return!!Zj(a,"init",!1)},Mk=function(a){Xj(a,"init",!0)},Nk=function(a,b){var c=(void 0===b?0:b)?"www.googletagmanager.com/gtag/js":Uc;c+="?id="+encodeURIComponent(a)+"&l=dataLayer";U(T("https://","http://",c))},Ok=function(a,b){var c=a[b];return c};var Pk=Sj.Sg;var ll=new ya;function ml(a,b){function c(h){var k=Ze(h),l=Xe(k,"protocol"),m=Xe(k,"host",!0),q=Xe(k,"port"),r=Xe(k,"path").toLowerCase().replace(/\/$/,"");if(void 0===l||"http"==l&&"80"==q||"https"==l&&"443"==q)l="web",q="default";return[l,m,q,r]}for(var d=c(String(a)),e=c(String(b)),f=0;f=Number(c);case "_gt":return Number(b)>Number(c);case "_lc":var q;q=String(b).split(",");return 0=b.Yc)b.Uc&&W("self").clearInterval(b.Uc);else{b.$c++;var c=(new Date).getTime();Hk({event:b.ca,"gtm.timerId":b.Uc,"gtm.timerEventNumber":b.$c,"gtm.timerInterval":b.interval,"gtm.timerLimit":b.Yc,"gtm.timerStartTime":b.Se,"gtm.timerCurrentTime":c,"gtm.timerElapsedTime":c-b.Se,"gtm.triggers":b.vh})}}}(function(b){Y.__tl=b;Y.__tl.b="tl";Y.__tl.g=!0;Y.__tl.priorityOverride=0})(function(b){H(b.vtp_gtmOnSuccess);if(!isNaN(b.vtp_interval)){var c={ca:b.vtp_eventName,$c:0,interval:Number(b.vtp_interval),Yc:isNaN(b.vtp_limit)?0:Number(b.vtp_limit),vh:String(b.vtp_uniqueTriggerId||"0"),Se:(new Date).getTime()};c.Uc=W("self").setInterval(a(c),0>Number(b.vtp_interval)?0:Number(b.vtp_interval))}})}();Y.a.ua=["google"],function(){var a,b={},c=function(d){var e={},f={},h={},k={},l={},m=void 0;if(d.vtp_gaSettings){var q=d.vtp_gaSettings;C(ul(q.vtp_fieldsToSet,"fieldName","value"),f);C(ul(q.vtp_contentGroup,"index","group"),h);C(ul(q.vtp_dimension,"index","dimension"),k);C(ul(q.vtp_metric,"index","metric"),l);d.vtp_gaSettings=null;q.vtp_fieldsToSet=void 0;q.vtp_contentGroup=void 0;q.vtp_dimension=void 0;q.vtp_metric=void 0;var r=C(q);d=C(d,r)}C(ul(d.vtp_fieldsToSet,"fieldName","value"),f);C(ul(d.vtp_contentGroup,"index","group"),h);C(ul(d.vtp_dimension,"index","dimension"),k);C(ul(d.vtp_metric,"index","metric"),l);var u=Ne(d.vtp_functionName);if(qa(u)){var p="",t="";d.vtp_setTrackerName&&"string"==typeof d.vtp_trackerName?""!==d.vtp_trackerName&&(t=d.vtp_trackerName,p=t+"."):(t="gtm"+ad(),p=t+".");var v={name:!0,clientId:!0,sampleRate:!0,siteSpeedSampleRate:!0,alwaysSendReferrer:!0,allowAnchor:!0,allowLinker:!0,cookieName:!0,cookieDomain:!0,cookieExpires:!0,cookiePath:!0,cookieUpdate:!0,cookieFlags:!0,legacyCookieDomain:!0,legacyHistoryImport:!0,storage:!0,useAmpClientId:!0,storeGac:!0},w={allowAnchor:!0,allowLinker:!0,alwaysSendReferrer:!0,anonymizeIp:!0,cookieUpdate:!0,exFatal:!0,forceSSL:!0,javaEnabled:!0,legacyHistoryImport:!0,nonInteraction:!0,useAmpClientId:!0,useBeacon:!0,storeGac:!0,allowAdFeatures:!0,allowAdPersonalizationSignals:!0},x=function(O){var K=[].slice.call(arguments,0);K[0]=p+K[0];u.apply(window,K)},y=function(O,K){return void 0===K?K:O(K)},B=function(O,K){if(K)for(var ua in K)K.hasOwnProperty(ua)&&x("set",O+ua,K[ua])},z=function(){},A=function(O,K,ua){var Qb=0;if(O)for(var Ea in O)if(O.hasOwnProperty(Ea)&&(ua&&v[Ea]||!ua&&void 0===v[Ea])){var ab=w[Ea]?Ca(O[Ea]):O[Ea];"anonymizeIp"!=Ea||ab||(ab=void 0);K[Ea]=ab;Qb++}return Qb},F={name:t};A(f,F,!0);u("create",d.vtp_trackingId||e.trackingId,F);x("set","&gtm",rh(!0));d.vtp_enableRecaptcha&&x("require","recaptcha","recaptcha.js");(function(O,K){void 0!==d[K]&&x("set",O,d[K])})("nonInteraction","vtp_nonInteraction");B("contentGroup",h);B("dimension",k);B("metric",l);var G={};A(f,G,!1)&&x("set",G);var L;d.vtp_enableLinkId&&x("require","linkid","linkid.js");x("set","hitCallback",function(){var O=f&&f.hitCallback;qa(O)&&O();d.vtp_gtmOnSuccess()});if("TRACK_EVENT"==d.vtp_trackType){d.vtp_enableEcommerce&&(x("require","ec","ec.js"),z());var R={hitType:"event",eventCategory:String(d.vtp_eventCategory||e.category),eventAction:String(d.vtp_eventAction||e.action),eventLabel:y(String,d.vtp_eventLabel||e.label),eventValue:y(Ba,d.vtp_eventValue||e.value)};A(L,R,!1);x("send",R);}else if("TRACK_SOCIAL"==d.vtp_trackType){}else if("TRACK_TRANSACTION"==d.vtp_trackType){}else if("TRACK_TIMING"==d.vtp_trackType){}else if("DECORATE_LINK"==d.vtp_trackType){}else if("DECORATE_FORM"==d.vtp_trackType){}else if("TRACK_DATA"==d.vtp_trackType){}else{d.vtp_enableEcommerce&&(x("require","ec","ec.js"),z());if(d.vtp_doubleClick||"DISPLAY_FEATURES"==d.vtp_advertisingFeaturesType){var ta="_dc_gtm_"+String(d.vtp_trackingId).replace(/[^A-Za-z0-9-]/g,"");x("require","displayfeatures",void 0,{cookieName:ta})}if("DISPLAY_FEATURES_WITH_REMARKETING_LISTS"==d.vtp_advertisingFeaturesType){var oa="_dc_gtm_"+String(d.vtp_trackingId).replace(/[^A-Za-z0-9-]/g,"");x("require","adfeatures",{cookieName:oa})}L?x("send","pageview",L):x("send","pageview");}if(!a){var va=d.vtp_useDebugVersion?"u/analytics_debug.js":"analytics.js";d.vtp_useInternalVersion&&!d.vtp_useDebugVersion&&(va="internal/"+va);a=!0;var cb=T("https:","http:","//www.google-analytics.com/"+va,f&&f.forceSSL);U(cb,function(){var O=Le();O&&O.loaded||d.vtp_gtmOnFailure();},d.vtp_gtmOnFailure)}}else H(d.vtp_gtmOnFailure)};Y.__ua=c;Y.__ua.b="ua";Y.__ua.g=!0;Y.__ua.priorityOverride=0}();Y.a.gas=["google"],function(){function a(b,c,d){b.vtp_fieldsToSet=b.vtp_fieldsToSet||[];var e=b[c];void 0!==e&&(b.vtp_fieldsToSet.push({fieldName:d,value:e}),delete b[c])}(function(b){Y.__gas=b;Y.__gas.b="gas";Y.__gas.g=!0;Y.__gas.priorityOverride=0})(function(b){var c=C(b),d=c;d[Hb.va]=null;d[Hb.ff]=null;c=d;a(c,"vtp_cookieDomain","cookieDomain");return c})}();var fn={};fn.macro=function(a){if(Sj.Hc.hasOwnProperty(a))return Sj.Hc[a]},fn.onHtmlSuccess=Sj.ke(!0),fn.onHtmlFailure=Sj.ke(!1);fn.dataLayer=Gd;fn.callback=function(a){Zc.hasOwnProperty(a)&&qa(Zc[a])&&Zc[a]();delete Zc[a]};function gn(){Qc[I.s]=fn;Ja($c,Y.a);yb=yb||Sj;Ab=oe}function hn(){Sf.gtm_3pds=!0;Qc=D.google_tag_manager=D.google_tag_manager||{};if(Qc[I.s]){var a=Qc.zones;a&&a.unregisterChild(I.s);}else{for(var b=data.resource||{},c=b.macros||[],d=0;d ":"")+"";this.options.closePrecedes?i.innerHTML=n+s:i.innerHTML=s+n,this.element=i;var a=i.getElementsByTagName("a")[0];a.href=this.options.moreinfo,a.target=this.options.moreinfoTarget,this.options.moreinfoRel&&""!==this.options.moreinfoRel&&(a.rel=this.options.moreinfoRel),a.style.textDecoration=this.options.moreinfoDecoration,a.style.color=this.options.link,a.style.fontWeight=this.options.moreinfoFontWeight,""!==this.options.moreinfoFontSize&&(a.style.fontSize=this.options.moreinfoFontSize);var c=i.getElementsByTagName("div")[0];c.style.cursor="pointer";var l=this;e(c,"click",function(){l.agree_and_close()}),this.element_mask&&(e(this.element_mask,"click",function(){l.agree_and_close()}),o.body.appendChild(this.element_mask)),this.options.acceptOnScroll&&e(window,"scroll",function(){l.agree_and_close()}),this.options.acceptOnClick&&e(window,"click",function(){l.agree_and_close()}),this.options.acceptOnTimeout&&!isNaN(parseFloat(this.options.acceptOnTimeout))&&isFinite(this.options.acceptOnTimeout)&&setTimeout(function(){l.agree_and_close()},this.options.acceptOnTimeout),this.options.acceptOnFirstVisit&&l.agree(),o.body.appendChild(this.element),this.inserted=!0,"fade"===this.options.effect?(this.element.style.opacity=0,r.fade_in(this.element)):this.element.style.opacity=0.5}},a&&(e[n]||(e[n]=new c))}(window)

Videos

1. Intelligent Kafka message routing with Drools DMN Engine & Camel
(Matteo Mortari)
2. First Steps: Rules Engine Kie Drools
(Vivian van Zyl)
3. Drools Tutorial Part - 4 | Drools Statefull and Stateless Session | Drools Maven Basic Setup
(Binod Suman Academy)
4. JBoss Drools 6 -Using Attributes Salience, Update, No-Loop
(JavaInUse)
5. C# more patterns - c# rules engine pattern - advanced rule engine examples design patterns to know
(Techmahanya)
6. [VDZ22] Can you trust your AI? by Daniele Zonca
(Devoxx)

You might also like

Latest Posts

Article information

Author: Nicola Considine CPA

Last Updated: 10/14/2022

Views: 5783

Rating: 4.9 / 5 (69 voted)

Reviews: 84% of readers found this page helpful

Author information

Name: Nicola Considine CPA

Birthday: 1993-02-26

Address: 3809 Clinton Inlet, East Aleisha, UT 46318-2392

Phone: +2681424145499

Job: Government Technician

Hobby: Calligraphy, Lego building, Worldbuilding, Shooting, Bird watching, Shopping, Cooking

Introduction: My name is Nicola Considine CPA, I am a determined, witty, powerful, brainy, open, smiling, proud person who loves writing and wants to share my knowledge and understanding with you.