remove groovy tutorials

pull/94/head
Mahmoud Ben Hassine 8 years ago
parent 641f10938a
commit f8487f7242

@ -1,125 +0,0 @@
//=============================================================================================
// U S A G E ================================================================================
//=============================================================================================
task usage doLast { print """${'='*90}
Easy Rules Tutorials (http://www.easyrules.org)
NB: Use '--quiet' or '-q' to supress Gradle build output lines
./gradlew FizzBuzz
Baseline FizzBuzz using code.
Prints the numbers from 1 to 100. But for multiples of 3 print 'Fizz' instead
of the number and for the multiples of 5 print 'Buzz'. For numbers which are
multiples of both three and five print 'FizzBuzz'.
./gradlew FizzBuzzER
FizzBuzz implementation using EasyRules.
./gradlew Simple
Very simple EasyRules examples with one, always true, rule.
./gradlew HelloWorld -q
Obligatory 'Hello, world' example where the input is evaluated by a rule.
./gradlew Fire -q
Copied from DROOLS examples. Create some rooms with sprinklers, start a fire.
The sprinklers will turn on an alarm will be raised. Put out the fire, the
sprinklers will turn off and the alarm will be silenced.
./gradlew Shop -P person=Tommy -P age=15
Rule to evaluate drinking age (US 21); Name and age can be passed in via the command line
or system properties; Default is 'Tom' at age '17'.
./gradlew clean
Remove all reports and artifacts from './$project.buildDir.name'
${'='*90}
"""}
//============================================================================================
// P L U G I N S ===========================================================================
//============================================================================================
apply plugin: 'groovy'
//=============================================================================================
// C O N F I G U R A T I O N =================================================================
//=============================================================================================
sourceCompatibility = 1.8
targetCompatibility = sourceCompatibility
//=============================================================================================
// R e p o s i t o r i e s & D e p e n d e n c i e s ====================================
//=============================================================================================
repositories {
mavenLocal()
mavenCentral()
}
dependencies {
def easyRules = '2.4.0' // Apr 2017
def spring = '4.3.6.RELEASE' // Apr 2017
def groovy = '2.4.10' // Apr 2017
compile ([
"org.easyrules:easyrules-core:$easyRules",
"org.easyrules:easyrules-quartz:$easyRules",
"org.easyrules:easyrules-spring:$easyRules",
"org.springframework:spring-context-support:$spring",
"org.codehaus.groovy:groovy-all:$groovy"
])
}
sourceSets {
compile {
groovy {
srcDirs = ['src/main/groovy']
}
}
}
//============================================================================================
// R U N T U T O R I A L S ===============================================================
//============================================================================================
tasks.withType(JavaExec) {
standardInput = System.in
classpath = sourceSets.main.runtimeClasspath
}
task FizzBuzz (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.fizzbuzz.FizzBuzz'
}
task FizzBuzzER (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.fizzbuzz.FizzBuzzWithEasyRules'
classpath = sourceSets.main.runtimeClasspath
}
task Simple (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.simple.Launcher'
}
task HelloWorld (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.helloworld.Launcher'
}
task Fire (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.fire.Launcher'
}
task Shop (dependsOn: 'classes', type: JavaExec) {
main = 'org.easyrules.samples.shop.Launcher'
args = [
findProperty('person') ?: 'Tom',
findProperty('age') ?: '17'
]
}

@ -1,6 +0,0 @@
#Mon May 15 07:42:47 EDT 2017
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-3.5-bin.zip

@ -1,172 +0,0 @@
#!/usr/bin/env sh
##############################################################################
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
esac
fi
# Escape application args
save ( ) {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
APP_ARGS=$(save "$@")
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

@ -1,84 +0,0 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windows variants
if not "%OS%" == "Windows_NT" goto win9xME_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

@ -1,76 +0,0 @@
package org.easyrules.samples.fire
import org.easyrules.samples.fire.rules.*
import org.easyrules.samples.fire.beans.*
import static RulesEngineBuilder.aNewRulesEngine as EasyRules
class Launcher {
static void main(String... args) {
def label = 'FIRE ALARM'.replaceAll(/./){it+' '}
def width = 80
println """${'='*width}
|${label.center width }
|${'='*width}""".stripMargin()
// Define some room names
def names = ['Kitchen', 'Bedroom', 'Office', 'Livingroom']
// Create the rooms for each name; Install a sprinkler system in each room; Add to the World
def rooms = [:]
def theWorld = new TheWorld()
names.each { name ->
rooms[name] = new Room(name)
theWorld.sprinklers << new Sprinkler(rooms[name])
}
// Create the rules engine
def rulesEngine = EasyRules()
.named("Fire Alarm Demo")
.build()
// Register all of the rules
rulesEngine.registerRule(new EverythingOKRule(theWorld:theWorld))
rulesEngine.registerRule(new RaiseAlarmRule(theWorld:theWorld))
rulesEngine.registerRule(new CancelAlarmRule(theWorld:theWorld))
rulesEngine.registerRule(new ThereIsAnAlarmRule(theWorld:theWorld))
rulesEngine.registerRule(new TurnSprinklerOnRule(theWorld:theWorld))
rulesEngine.registerRule(new TurnSprinklerOffRule(theWorld:theWorld))
// Fire the rules
rulesEngine.fireRules()
pause('Start some fires')
def kitchenFire = new Fire( rooms['Kitchen'] )
def officeFire = new Fire( rooms['Office'] )
theWorld.fires << kitchenFire
theWorld.fires << officeFire
// Fire the rules
rulesEngine.fireRules()
pause('Put out the fires')
theWorld.fires.remove kitchenFire
theWorld.fires.remove officeFire
// Fire the rules
rulesEngine.fireRules()
}
public static void pause(message) {
println "\n>>>>>> Press enter to '$message' <<<<<<"
def keyboard = new Scanner(System.in)
keyboard.nextLine()
}
}

@ -1,12 +0,0 @@
package org.easyrules.samples.fire
@groovy.transform.TupleConstructor
@groovy.transform.EqualsAndHashCode
@groovy.transform.ToString(includePackage = false, includeNames = true)
class TheWorld {
def sprinklers = []
def alarm = null
def fires = []
}

@ -1,9 +0,0 @@
package org.easyrules.samples.fire.beans
@groovy.transform.TupleConstructor
@groovy.transform.EqualsAndHashCode
@groovy.transform.ToString(includePackage = false, includeNames = true)
class Alarm {
def address
}

@ -1,8 +0,0 @@
package org.easyrules.samples.fire.beans
@groovy.transform.TupleConstructor
@groovy.transform.EqualsAndHashCode
@groovy.transform.ToString(includePackage = false, includeNames = true)
class Fire {
def room;
}

@ -1,8 +0,0 @@
package org.easyrules.samples.fire.beans
@groovy.transform.TupleConstructor
@groovy.transform.EqualsAndHashCode
@groovy.transform.ToString(includePackage = false, includeNames = true)
class Room {
def name;
}

@ -1,9 +0,0 @@
package org.easyrules.samples.fire.beans
@groovy.transform.TupleConstructor
@groovy.transform.EqualsAndHashCode
@groovy.transform.ToString(includePackage = false, includeNames = true)
class Sprinkler {
def room;
def on = false;
}

@ -1,27 +0,0 @@
package org.easyrules.samples.fire.rules
import Action
import Condition
import Rule
import Priority
@Rule(description='All the fires are out, cancel the alarm')
class CancelAlarmRule {
def theWorld
@Condition
boolean when() {
theWorld.alarm && theWorld.fires.size() == 0
}
@Action
def then() {
println( "Cancel the Alarm");
theWorld.alarm = null
}
@Priority
int getPriority() { 1 }
}

@ -1,26 +0,0 @@
package org.easyrules.samples.fire.rules
import Action
import Condition
import Rule
import Priority
@Rule(description='No alarm, nothing to see here; This need to be last rule considered')
class EverythingOKRule {
def theWorld
@Condition
boolean when() {
theWorld.alarm == null
}
@Action
def then() {
println 'At the Fire Station: Everything is OK'
}
@Priority
int getPriority() { 15 }
}

@ -1,29 +0,0 @@
package org.easyrules.samples.fire.rules
import org.easyrules.samples.fire.beans.Alarm
import Action
import Condition
import Rule
import Priority
@Rule(description='A fire will raise an alarm')
class RaiseAlarmRule {
def theWorld
@Condition
boolean when() {
theWorld.fires.size() > 0
}
@Action
def then() {
theWorld.alarm = new Alarm('123 Main Street')
println( "Raise the Alarm");
}
@Priority
int getPriority() { 2 }
}

@ -1,26 +0,0 @@
package org.easyrules.samples.fire.rules
import Action
import Condition
import Rule
import Priority
@Rule(description='The alarm is detected at the fire station')
class ThereIsAnAlarmRule {
def theWorld
@Condition
boolean when() {
theWorld.alarm != null
}
@Action
def then() {
println "At the Fire Station: There is an Alarm at ${theWorld.alarm.address}"
}
@Priority
int getPriority() { 5 }
}

@ -1,31 +0,0 @@
package org.easyrules.samples.fire.rules
import Action
import Condition
import Rule
import Priority
@Rule(description='The fires are out, turn off all of the sprinklers')
class TurnSprinklerOffRule {
def theWorld
@Condition
boolean when() {
theWorld.fires.size() == 0
}
@Action
def then() {
theWorld.sprinklers.each { sprinkler ->
if(sprinkler.on) {
sprinkler.on = false
println "Turn sprinkler off in room: ${sprinkler.room.name}"
}
}
}
@Priority
int getPriority() { 0 }
}

@ -1,37 +0,0 @@
package org.easyrules.samples.fire.rules
import Action
import Condition
import Rule
import Priority
@Rule(description='A fire has been detected in a room, turn on the sprinkler in the room; Highest priority rule')
class TurnSprinklerOnRule {
def theWorld
@Condition
boolean when() {
theWorld.fires.size() > 0
}
@Action
def then() {
theWorld.fires.each { fire ->
def sprinkler = theWorld.sprinklers.find { sprinkler ->
sprinkler.room.name == fire.room.name
}
if(sprinkler) {
sprinkler.on = true
println "Turn sprinkler on in room: ${sprinkler.room.name}"
}
}
}
@Priority
int getPriority() { 0 }
}

@ -1,21 +0,0 @@
package org.easyrules.samples.fizzbuzz
import Action
import Condition
import Priority
import Rule
@Rule
class BuzzRule {
def input
@Condition
boolean when() { input % 5 == 0 }
@Action
def then() { print 'buzz' }
@Priority
int getPriority() { 2 }
}

@ -1,28 +0,0 @@
package org.easyrules.samples.fizzbuzz
class FizzBuzz {
static void main(String... args) {
def label = 'FIZZBUZZ WITH CODE'.replaceAll(/./){it+' '}
def width = 80
println """${'='*width}
|${label.center width }
|${'='*width}""".stripMargin()
// Ultra compact, show-off, version in 59 characters
// 1.upto(100){println((it%3?'':'Fizz')+(it%5?'':'Buzz')?:it)}
// Easier to follow
(1..100).each {
def string = ''
if (it%3 == 0) {string = 'Fizz'}
if (it%5 == 0) {string += 'Buzz'}
println string ? string : it
}
}
}

@ -1,13 +0,0 @@
package org.easyrules.samples.fizzbuzz
import CompositeRule
class FizzBuzzRule extends CompositeRule {
FizzBuzzRule(Object... rules) {
rules.each { addRule it }
}
@Override
int getPriority() { 0 }
}

@ -1,43 +0,0 @@
package org.easyrules.samples.fizzbuzz
import RulesEngineBuilder
class FizzBuzzWithEasyRules {
static void main(String... args) {
def label = 'FIZZBUZZ WITH EASYRULES'.replaceAll(/./){it+' '}
def width = 80
println """${'='*width}
|${label.center width }
|${'='*width}""".stripMargin()
// Create rules engine
def fizzBuzzEngine = RulesEngineBuilder.aNewRulesEngine()
.withSkipOnFirstAppliedRule(true)
.withSilentMode(true)
.build()
// Create rules
def fizzRule = new FizzRule()
def buzzRule = new BuzzRule()
def nonFizzBuzzRule = new NonFizzBuzzRule()
def fizzBuzzRule = new FizzBuzzRule(fizzRule, buzzRule)
// Register all rules
fizzBuzzEngine.registerRule(fizzRule)
fizzBuzzEngine.registerRule(buzzRule)
fizzBuzzEngine.registerRule(fizzBuzzRule)
fizzBuzzEngine.registerRule(nonFizzBuzzRule)
// Fire rules
(1..100).each { input ->
fizzRule.input = input
buzzRule.input = input
nonFizzBuzzRule.input = input
fizzBuzzEngine.fireRules()
println()
}
}
}

@ -1,21 +0,0 @@
package org.easyrules.samples.fizzbuzz
import Action
import Condition
import Priority
import Rule
@Rule
class FizzRule {
def input
@Condition
boolean when() { input % 3 == 0 }
@Action
def then() { print 'fizz' }
@Priority
int getPriority() { 1 }
}

@ -1,21 +0,0 @@
package org.easyrules.samples.fizzbuzz
import Action
import Condition
import Priority
import Rule
@Rule
class NonFizzBuzzRule {
def input
@Condition
boolean when() { input % 5 != 0 || input % 7 != 0 }
@Action
def then() { print input }
@Priority
int getPriority() { 3 }
}

@ -1,16 +0,0 @@
package org.jeasy.rules.tutorials.helloworld
import Action
import Condition
import Rule
@Rule(name = "Hello World rule", description = "Always say hello world")
class HelloWorldRule {
@Condition
boolean when() { true }
@Action
def then() throws Exception { println 'hello world' }
}

@ -1,33 +0,0 @@
package org.jeasy.rules.tutorials.helloworld
import static RulesEngineBuilder.aNewRulesEngine
import org.jeasy.rules.api.Facts
import org.jeasy.rules.api.Rules
import java.util.Scanner
class Launcher {
static void main(String... args) {
def label = 'HELLO WORLD EXAMPLE'.replaceAll(/./){it+' '}
def width = 80
println """${'='*width}
|${label.center width }
|${'='*width}""".stripMargin()
// define rules
def rule = new HelloWorldRule()
def rules = new Rules()
rules.register(rule)
// define facts
def facts = new Facts()
// fire rules on known facts
def rulesEngine = aNewRulesEngine().build()
rulesEngine.fire(rules, facts)
}
}

@ -1,27 +0,0 @@
package org.easyrules.samples.shop
import BasicRule
public class AgeRule extends BasicRule {
private static final int ADULT_AGE = 21
def person
public AgeRule(person) {
super('AgeRule', "Check if person's age is $ADULT_AGE or over and marks the person as adult", 1)
this.person = person
}
@Override
public boolean evaluate() {
return person.age >= ADULT_AGE
}
@Override
public void execute() {
person.adult = true
println "Person $person.name has been marked as adult"
}
}

@ -1,34 +0,0 @@
package org.easyrules.samples.shop
import static RulesEngineBuilder.aNewRulesEngine
import RulesEngine
class Launcher {
static void main(String... args) {
println "${'='*90}"
println ' S H O P W I T H E A S Y R U L E S '
println "${'='*90}"
// Create a person instance
Person person = new Person(name:args[0], age: args[1] as int)
println "$person.name: Hi! can I have some Vodka please?"
// Create a rules engine
RulesEngine rulesEngine = aNewRulesEngine()
.named("shop rules engine")
.build()
// Register rules
rulesEngine.registerRule(new AgeRule(person))
rulesEngine.registerRule(new OkToSellRule(person))
rulesEngine.registerRule(new UnderAgeRule(person))
// Fire rules
rulesEngine.fireRules()
}
}

@ -1,26 +0,0 @@
package org.easyrules.samples.shop
import Action
import Condition
import BasicRule
class OkToSellRule extends BasicRule {
def person
OkToSellRule(person) {
super('OkToSellRule', 'Adults are allowed to buy alcohol', 2)
this.person = person
}
@Condition
boolean evaluate() {
person.adult == true
}
@Action
void execute(){
println "Shop Owner: Ok, $person.name, here you go."
}
}

@ -1,13 +0,0 @@
package org.easyrules.samples.shop
import groovy.transform.TupleConstructor
import groovy.transform.EqualsAndHashCode
@TupleConstructor
@EqualsAndHashCode(includes='name,age')
class Person {
def name
def age
boolean adult
}

@ -1,26 +0,0 @@
package org.easyrules.samples.shop
import Action
import Condition
import BasicRule
class UnderAgeRule extends BasicRule {
def person
UnderAgeRule(person) {
super('UnderAgeRule', 'Children are not allowed to buy alcohol', 2)
this.person = person
}
@Condition
boolean evaluate() {
person.adult == false
}
@Action
void execute(){
println "Shop Owner: Sorry $person.name, you are not allowed to buy alcohol."
}
}

@ -1,16 +0,0 @@
# "handlers" specifies a comma separated list of log Handler classes.
#handlers=java.util.logging.ConsoleHandler
# Default global logging level
.level=ALL
# Console logging
java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
java.util.logging.SimpleFormatter.format=%4$s: %5$s%n
# package specific logging
org.easyrules.core.level = ALL
Loading…
Cancel
Save