12. [when]There is a customer ticket with status of quot;{status}quot;=customer : Customer( ) ticket :
Ticket( customer == customer, status == quot;{status}quot; )
[when]There is a quot;{subscription}quot; customer with a ticket status of quot;{status}quot;=customer :
Customer(subscription == quot;{subscription}quot;) ticket : Ticket( customer == customer, status
== quot;{status}quot;)
[then]Log quot;{message}quot;=System.out.println(quot;{message} quot; + ticket);
[then]Escalate the ticket=ticket.setStatus(quot;Escalatequot;); modify(ticket);
[then]Send escalation email=sendEscalationEmail( customer, ticket );
JBoss Rule Example
13.
14. Domain Specific Business Natural
Language Language
DRY DAMP
● ●
Mogelijk lastiger te Zelfstandig
● ●
begrijpen Bevordert de
●
leesbaarheid
Jay Fields
15. compensate $3000 each past 30
compensate $3000 for each deal
closed in the past 30 days
16. Van een Boeking mag de datum niet groter
zijn dan de project einddatum
17.
18. Van een Boeking mag de datum niet groter
zijn dan de project einddatum
.getDatum < .getProject.getEindDatum
21. keywords quot;groterquot; do
quot;> quot;
end
domain_class(quot;Boekingquot;,
quot;nl.profict.stage.urenreg.domein.Boekingquot;)
22. Van een Boeking mag de datum niet groter
zijn dan de project einddatum
filter
_van._een._Boeking._mag._de._datum._niet._
groter._zijn._dan._de._project._einddatum!
25. def method_missing(sym, *args) # geen methode gevonden
transform(sym.to_s)
self
end
def transform(rule_piece)
case
when @semantics.respond_to?(rule_piece)
append(@semantics.send(rule_piece))
[...]
Rule Class
def _groter
“> ”
end
Semantiek Class
26. mag de datum niet groter zijn dan de project
einddatum
getDatum < getProject.getEindDatum
Boeking.getdatum < Boeking.getProject.getEindatum
28. Snelheid (JIT)
Java technieken / libs
Ondersteuning door grote spelers (sun)
Ruby op Java Applicatie Server
29. bsfManager = new BSFManager();
BSFManager.registerScriptingEngine(quot;rubyquot;,
quot;org.jruby.javasupport.bsf.JRubyEnginequot;,
new String[] { quot;rbquot; });
bsfManager.registerBean(quot;Objectquot;, domainObject);
bsfManager.eval(quot;rubyquot;,quot;(java)quot;,1,1,
quot;puts quot;This is a test.quot;quot;);
30. Gebruik de juiste communicatie
middelen
Onderschat niet de JAS
Pas op met method_missing