GitHub repository: AlexRogalskiy/easyrule
Description: COMPLEX ENTERPRISE APPLICATIONS USUALLY COME WITH VARYING BUSINESS LOGIC. SUCH CONDITIONS AND SUBSEQUENT SYSTEM ACTIONS, KNOWN AS RULES, ARE EVER VARYING AND DEMAND INVOLVEMENT OF DOMAIN SPECIFIC KNOWLEDGE MORE THAN TECHNOLOGY AND PROGRAMMING. THE RULES, THEREFORE, MUST RESIDE OUTSIDE THE CODEBASE AND ARE TO BE AUTHORED BY PEOPLE WITH CORE DOMAIN EXPERTISE WITH LITTLE TO NO- TECHNICAL /PROGRAMMING KNOWLEDGE. A SPECIFIC TYPE OF SOFTWARE TOOLS, KNOWN AS RULE ENGINES, CATER TO THIS CONTEXT. WHILE WE HAVE MANY SUCH RULE ENGINES AROUND, SUCH AS DROOLS (WHICH IS A FEATURE-RICH BRMS), EASY RULES, RULE BOOK, ORACLE RULES SDK, BLAZE (FICO), IBM DECISION MANAGER ETC.  ENABLING RULE MANAGEMENT DECLARATIVELY WITH THEIR RESPECTIVE RICH FEATURES INCLUDING VERSION CONTROL ARE OFTEN VERY USEFUL FOR LOT OF THE APPLICATIONS. HOWEVER, IN CERTAIN LESSER COMPLEX SOLUTIONS, THEY OFTEN TURN OUT TO BE OVERKILL, AND REMAIN UNDERUTILISED. MAINTENANCE OF AN ADDITIONAL COMPONENT BECOMES MORE OF A LIABILITY THAN ASSET.  IN THIS ARTICLE WE ATTEMPT TO ILLUSTRATE HOW INHERENT FEATURES OF JAVA CAN BE LEVERAGED TO EXTERNALIZE RULES IN THE SIMPLEST POSSIBLE WAY, WITHOUT NARROWING DOWN TO ANY TRANSITIVE DEPENDENCY OF ADDITIONAL FRAMEWORKS. THE APPROACH IS USEFUL WHEN TECHNICAL RULES (SNIPPET WRITTEN IN JAVA) NEEDS TO BE EXTERNALIZED AND CAN CHANGE FREQUENTLY. THE APPROACH, THEREFORE, HOLDS EQUALLY WORTHY ACROSS ANY JAVA ECOSYSTEM, REGARDLESS OF FRAMEWORKS. PROVIDING A SIMPLE POJO BASED DECLARATIVE MODEL FOR RULES THAT ARE LOADED FROM EXTERNAL RESOURCE STREAMS, IT ALLOWS RULES TO BE AUTHORED OUTSIDE THE APPLICATION WITHOUT EVEN REQUIRING AN APPLICATION DOWNTIME. WE CAN INTEGRATE IT EASILY WITH SPRING MICRO SERVICES AND CLOUD CONFIGURATION WITH AND WITHOUT CLOUD BUS. THE APPROACH PROVIDES ENCRYPTION-AT-REST TO ENSURE SAFETY (CONFIDENTIALITY AND INTEGRITY) OF BUSINESS RULES. PLUS, APART FROM SUPPORTING JASYPT AND SPRING CONFIG CIPHERING, ANY CUSTOM SECURITY CAN BE PLUGGED-IN TO IT.