рдЕрдирд┐рд╡рд╛рд░реНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рдЖрдо рд╕рдорд╕реНрдпрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреА рдХрдореА, рдЬреИрд╕реЗ рдХрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЯреНрд░реА рдорд╛рд░реНрдХрдЕрдк рдпрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдореЛрдВ рдХрд╛ рдПрдХ рд╕реЗрдЯред рдЧреНрд░реВрд╡реА рдиреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдЕрдореВрд░реНрдд рд╕рд┐рдВрдЯреИрдХреНрд╕ рдЯреНрд░реА рд╕реНрддрд░ рдкрд░
рдмрд┐рд▓реНрдбрд░ рдФрд░
рдореЗрдЯрд╛-рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЬреИрд╕реА рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд┐рдпрд╛ред
рдмрджрд▓реЗ рдореЗрдВ, рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд░реНрд╡рд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдХрд╛рдо рдХреЗ рдЕрднрд┐рдиреНрди рдЪрд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЕрдХреНрд╕рд░ ifs рдФрд░ рдЗрд╕реА рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде, рдРрд╕рд╛ рдХреЛрдб рдЦрд░рд╛рдм рд░реВрдк рд╕реЗ рдкрдардиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдЧреИрд░-рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рдХрдИ рддрд░реАрдХреЛрдВ рдФрд░ рд╡рд░реНрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдбреЗрдЯрд╛ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд╛ рддрд░реНрдХ "рдлреИрд▓ рдЧрдпрд╛" рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЬрдм рдПрдХ рдирдпрд╛ рдкреИрд░рд╛рдореАрдЯрд░ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИ, рддреЛ рдЗрд╕реЗ рдЬрд╛рдВрдЪрдирд╛ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдирд╛ (рд╕реНрд╡рд░реВрдкрдг, рднрд╛рдЧрдиреЗ рд╡рд╛рд▓реЗ рдЪрд░рд┐рддреНрд░ рдЗрддреНрдпрд╛рджрд┐) рдХреЛ рднреВрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд░реВрдк рдореЗрдВ, рдЧреНрд░реВрд╡реА рдкреБрд╕реНрддрдХрд╛рд▓рдп рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЖрдкрдХреЛ рдбреАрдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рд╢реИрд▓реА рдореЗрдВ рдЗрди рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрди рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЫрд╣ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рддрд╛ рд╣реИ: рдореЗрд▓ рдкрддрд╛, рд▓реЙрдЧрд┐рди, рд▓рд┐рдВрдЧ, рдмреЙрдХреНрд╕ рдХреА рд╕реНрдерд┐рддрд┐ "рдореИрдВ рдирд┐рдпрдореЛрдВ рд╕реЗ рд╕рд╣рдордд рд╣реВрдВ", рд╡рдЬрди рдФрд░ рддрд╛рд░реАрдЦред
import org.grules.console.Gender
рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдкрд░рд┐рдгрд╛рдо рдЬрд╛рд╡рд╛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рд┐рдкреЛрд░реНрдЯ рд╣реИ рдЬрд┐рд╕реЗ рдкрд╛рдВрдЪ рд╕рдореВрд╣реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ:
- рд╕рд╣реА
- рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ
- рдЗрдирдкреБрдЯ рдореЗрдВ рдЧрд╛рдпрдм рд╣реИ
- рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреЛрдИ рдореЗрд▓ рдкреНрд░реАрдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдирд┐рдпрдо рдирд╣реАрдВ рдорд┐рд▓рд╛
- рдЕрдиреНрдп рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдЕрдирд┐рд░реНрдзрд╛рд░рд┐рдд рдпрд╛ рдЕрдорд╛рдиреНрдп рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде
рдбреАрдПрд╕рдПрд▓ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдирд┐рдпрдВрддреНрд░рдг рдореЗрдВ рд╣реИ, рдЬреЛ рддрджрдиреБрд╕рд╛рд░ рдореЗрдЯрд╛ рд╕реНрддрд░ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдкреНрд░рддреНрдпреЗрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд▓рд┐рдП рдЖрдВрдХрдбрд╝реЗ рдПрдХрддреНрд░ рдХрд░рдирд╛ рдпрд╛ рдХреНрд▓рд╛рдЗрдВрдЯ-рд╕рд╛рдЗрдб рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдирд╛ред рдЬрд╛рд╡рд╛ рдореЗрдВ, рд╕рдорд╛рди рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдПрдПрд╕рдЯреА рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдХрдореА рдФрд░ рдЧреИрд░-рдЖрджрд┐рдо рдбреЗрдЯрд╛ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди рдЙрдирдХреЗ рджрд╛рдпрд░реЗ рдХреЛ рд╕реАрдорд┐рдд рдХрд░рддрд╛ рд╣реИред
рдбреАрдПрд╕рдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рд╕реЗ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реА рд╕рднреА рдЪреАрдЬреЛрдВ рдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреНрд▓рд╛рд╕рдкрд╛рде рдореЗрдВ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдирд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
рдорд╛рд╡реЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ) рдФрд░ рдЧреНрд░реВрд▓реНрд╕ рдкреНрд░рддреНрдпрдп рдХреЗ рд╕рд╛рде рдЧреНрд░реВрд╡реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдмрдирд╛рдПрдВ рдФрд░ рд╕рднреА рдпрд╛ рдХреБрдЫ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдирд┐рдпрдореЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред
HelloWorld рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рддреАрди
рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ :
HelloGrules.groovy package test email isEmail ["Invalid email"] age toPositiveInt ["Invalid age"] >> {it > 18} ["You must be adult"]
Test.groovy package test import org.grules.Grules class Test { public static void main(String[] s) { def grules = new Grules() def result = grules.applyRules(HelloGrules, [email: "megmail.com", age: "35"]) assert result.cleanParameters.age == 35 assert "email" in result.invalidParameters assert result.invalidParameters.email.errorId == "Invalid email" println result } }
build.gradle apply plugin: 'application' apply plugin: 'groovy' apply plugin: 'maven' repositories { mavenCentral() } mainClassName = "test.Test" dependencies { groovy 'org.codehaus.groovy:groovy:2.0.5' exclude group: 'asm', module: 'asm' compile 'org.grules:grules:0.2.0.8' exclude group: 'asm', module: 'asm' }
рдЖрд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд░реВрдЯ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдореЗрдВ
gradle run
рдХрдорд╛рдВрдб рдЪрд▓рд╛рдПрдБред
рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдкрд░ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ:
рд╡рд┐рдХреА ,
рдСрдирд▓рд╛рдЗрди рдХрдВрд╕реЛрд▓ ,
рдЬреАрдердм ,
рдкреНрд░рдХрд╛рд╢рди (рдЕрдВрдЧреНрд░реЗрдЬреА)ред