SlideShare a Scribd company logo
1 of 17
Rules engines vs. domain logic- et balansertsynpå en hårfinbalansegang Anders Sveen Bent Are Melsom 10.09.2009
Takk for at du hører på oss i dag Bent Are Melsom Sjefskonsulent, leder Java avdeling i Oslo bent-are.melsom@capgemini.com Anders Sveen Sjefskonsulent, teknologileder for Java i Oslo anders.sveen@capgemini.com
Agenda Hva er en regelmotor, og hva skal/skal du ikke bruke den til Hva lover en regelmotor deg? Litt om RETE – basisen i en regelmotor Hva må du vurdere før du tar i bruk en regelmotor Erfaringer og alternativer Spørsmål? Oppsummering
Hva er en regelmotor? Avansert software for å hjelpe med forretningslogikk som har sin rot i store komplekse datasett. Slags data mining som skjer i bakgrunnen her Muligheten til å la forretningsfolket kode To typer regelmotorer – ofte i samme pakke Inference – Håndterer slags if-then logikk Oftest brukt i applikasjoner, og veldig ofte stateless. Event-condition – Detekterer events og gjør noe basert på disse Mange leverandører, både open source og lukket. Jrules ,Drools, InRule, BlazeAdvisor etc. Bruksområder: Beregninger, beslutninger, varsling, tilgangskontroll, data mining
Hva er en regelmotor? Regel DSL ”Naturlig” språk Tabeller Deklarativt RETE algoritmen Håndterer regelsett med effekter på tvers av regler Omkringliggene verktøy Skrive regler Debug Repository
Regelevaluering og RETE Hvis ekstern catering er booket, avbestill kjøkkenet Hvis Storsalen er booket, innkall ekstra hjelp Hvis Storsalen er booket, øk prisen med 10% Hvis antall påmeldte er over 100, book ekstern catering Hvis antall ledige plasser igjen er under 50, øk prisen med 15% Hvis maks plasser for arrangement er over 100, book Storsalen Regel 6 Regel 5 Regel 3 Regel 4 Regel 1 Regel 2
Hva ”lover” en regelmotor? Regler kan endres mens systemet kjører Regler kan endres uten at utviklere må blandes inn Regler er i naturlig språk og derfor bedre dokumentert Synlighet i beslutninger Raskere utvikling
Regelmotor                       vs           ”røkla” Separation of concerns Enklere kommunikasjon Automatisert test Rik domenemodell Felles begrepsapparat JUnit + Fitnesse + Maven
Trenger du en regelmotor? Når du snubler i if-setninger – skriving av dette er ren pain Sørg for at du objektorienterer før du vurderer en regelmotor Hvilke deler av domenet passer i en regelmotor. Kan innføre en regelmotor etter hvert som du ser at du trenger det. Hyppigeforandringeriforretningslogikken? somikkekreverendringiinformasjonsgrunnlaget? Skal du hurtig skalere antall utviklere? Regelmotor kan gi deg strukturen du trenger. Må du gjenskape en komplisert beslutning tilbake i tid? Trenger du versjonering av regler? Gjør en PoC med både regelmotor og et godt designet domene.
Hva må du tenke på når du innfører en regelmotor? Ytelse Hvor fort mådetgå? Hva tar tid? Motorenellerinnhentingavinformasjon? Implementasjonsytelse Hvor fort og enkelt kan man implementere reglene? Mange regelmotorer har gode ”WYSIWYG” editorer som funker for forretningsfolkene. Disse funker godt på mindre regelsett, men sliter ofte på store. Tjenestemoduler Skilleutbyggingav input/output fraregelmotor Masseringavresultatetfraregelmotoren? Fellesellerseparatdomenemodell? Feilhåndtering? Hvordanfåtilfunksjonellefeilutavregelmotoren? Er den så “blackbox” somdutror?
Konsekvenser i prosjekt Du får ofte flere grupperinger, og dermed større roundtrip i utvikling Kompleksitet i utviklingsmiljøet, flere produkter å installere, tyngre kjøremiljø Testing – flere steder med automagisk testing.  Flere rammeverk – trenger du nok ett rammeverk Blackbox vs. whitebox for deg som javautvikler kompetanse i prosjekt Du som utvikler Regelgruppen koder Deploy Test Tiden går jo lengre roundtrip du har
Erfaringer Regelmotor letter kommunikasjonen Trenger uansett et felles begrepsett Automatisk testing hindrer feil ved endringer Gjelder uansett teknologivalg Det er teknologene som ender opp med å skrive reglene Til syvende og sist sitter utvikleren med jobben Feil er vanskelig å finne ut av Ref. blackbox
Erfaringer forts. Verktøyene er ofte ikke gode utviklingsverktøy (IDE) Mangler ofte auto-complete osv. Pek og klikk er ikke så lurt som det høres ut som Ikke kompatibelt med vanlig kildekodekontroll Hva skjer dersom repo ryker? Å fjerne regler fra koden gjør koden mindre forståelig Du kan fort ende opp med en anemisk domenemodell Avhengig av konsulenter fra leverandør Hvem ender opp med å ha kontroll på reglene?
Alternativet? Objektorientering ,[object Object]
Enkelt for utvikler å forholde seg til
Trenger god og tett kommunikasjon mellom utvikling og forretning. Det trenger du vel uansett?Domain specific languages ,[object Object]
Ide adoptert fra “special purpose languages” – ikke nytt med andre ord.Oppslagstabeller ,[object Object],[object Object]

More Related Content

Similar to Rules engine vs. domain logic - JavaZone 2009

Cut the crap - foredrag på Yggdrasil
Cut the crap - foredrag på YggdrasilCut the crap - foredrag på Yggdrasil
Cut the crap - foredrag på YggdrasilOve Dalen
 
Cut the crap! Innholdsdrevet webutvikling i Telenor
Cut the crap! Innholdsdrevet webutvikling i TelenorCut the crap! Innholdsdrevet webutvikling i Telenor
Cut the crap! Innholdsdrevet webutvikling i TelenorVeronica Heltne
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asCominvent AS
 
Rwd seminar 2013
Rwd seminar 2013Rwd seminar 2013
Rwd seminar 2013CoreTrek
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - staccJon Solheim
 
CIOForum
CIOForumCIOForum
CIOForumtobiast
 
Presentasjon av Newsfront. Case study med Drupal, Angular og Solr
Presentasjon av Newsfront. Case study med Drupal, Angular og SolrPresentasjon av Newsfront. Case study med Drupal, Angular og Solr
Presentasjon av Newsfront. Case study med Drupal, Angular og SolrFrontkom
 
Presentation of Newsfront. Case study using Drupal, Angular and Solr
Presentation of Newsfront. Case study using Drupal, Angular and SolrPresentation of Newsfront. Case study using Drupal, Angular and Solr
Presentation of Newsfront. Case study using Drupal, Angular and SolrHenrik Akselsen
 
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013Egil Søgaard
 
Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?mudnaes
 
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iksMellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iksAtle Frydenlund
 
Core trek 2014
Core trek 2014Core trek 2014
Core trek 2014CoreTrek
 
Universell utforming av digitale løsninger
Universell utforming av digitale løsningerUniversell utforming av digitale løsninger
Universell utforming av digitale løsningerMetronet
 
GoOpen 2010: Paul Skrede
GoOpen 2010: Paul SkredeGoOpen 2010: Paul Skrede
GoOpen 2010: Paul SkredeFriprogsenteret
 
3-minutters guide: Slik lykkes du med smidig utvikling
3-minutters guide: Slik lykkes du med smidig utvikling3-minutters guide: Slik lykkes du med smidig utvikling
3-minutters guide: Slik lykkes du med smidig utviklingSteria Norway
 

Similar to Rules engine vs. domain logic - JavaZone 2009 (20)

Cut the crap - foredrag på Yggdrasil
Cut the crap - foredrag på YggdrasilCut the crap - foredrag på Yggdrasil
Cut the crap - foredrag på Yggdrasil
 
Cut the crap! Innholdsdrevet webutvikling i Telenor
Cut the crap! Innholdsdrevet webutvikling i TelenorCut the crap! Innholdsdrevet webutvikling i Telenor
Cut the crap! Innholdsdrevet webutvikling i Telenor
 
Devops eller dø!
Devops eller dø!Devops eller dø!
Devops eller dø!
 
Frokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent asFrokostseminar mai 2010 solr open source cominvent as
Frokostseminar mai 2010 solr open source cominvent as
 
Semantisk integrasjon
Semantisk integrasjonSemantisk integrasjon
Semantisk integrasjon
 
Asp norge
Asp norgeAsp norge
Asp norge
 
Rwd seminar 2013
Rwd seminar 2013Rwd seminar 2013
Rwd seminar 2013
 
Monolitter og byggeklosser jon erik solheim - stacc
Monolitter og byggeklosser   jon erik solheim - staccMonolitter og byggeklosser   jon erik solheim - stacc
Monolitter og byggeklosser jon erik solheim - stacc
 
CIOForum
CIOForumCIOForum
CIOForum
 
Presentasjon av Newsfront. Case study med Drupal, Angular og Solr
Presentasjon av Newsfront. Case study med Drupal, Angular og SolrPresentasjon av Newsfront. Case study med Drupal, Angular og Solr
Presentasjon av Newsfront. Case study med Drupal, Angular og Solr
 
Presentation of Newsfront. Case study using Drupal, Angular and Solr
Presentation of Newsfront. Case study using Drupal, Angular and SolrPresentation of Newsfront. Case study using Drupal, Angular and Solr
Presentation of Newsfront. Case study using Drupal, Angular and Solr
 
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013
IPnett Contact Center Solutions - WORKSHOP OSLO 4thDec 2013
 
BPM og semantikk
BPM og semantikkBPM og semantikk
BPM og semantikk
 
Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?Er Amazon EC2 klar for virksomhetskritiske systemer?
Er Amazon EC2 klar for virksomhetskritiske systemer?
 
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iksMellomvare og integrasjon    en innføring i bruk av biz talk hos ikt agder iks
Mellomvare og integrasjon en innføring i bruk av biz talk hos ikt agder iks
 
Core trek 2014
Core trek 2014Core trek 2014
Core trek 2014
 
Universell utforming av digitale løsninger
Universell utforming av digitale løsningerUniversell utforming av digitale løsninger
Universell utforming av digitale løsninger
 
GoOpen 2010: Paul Skrede
GoOpen 2010: Paul SkredeGoOpen 2010: Paul Skrede
GoOpen 2010: Paul Skrede
 
Aws på kartet - 2
Aws på kartet - 2Aws på kartet - 2
Aws på kartet - 2
 
3-minutters guide: Slik lykkes du med smidig utvikling
3-minutters guide: Slik lykkes du med smidig utvikling3-minutters guide: Slik lykkes du med smidig utvikling
3-minutters guide: Slik lykkes du med smidig utvikling
 

More from Anders Sveen

Docker for Dummies
Docker for DummiesDocker for Dummies
Docker for DummiesAnders Sveen
 
So you think you can change? - JavaZone 2010
So you think you can change? - JavaZone 2010So you think you can change? - JavaZone 2010
So you think you can change? - JavaZone 2010Anders Sveen
 
Pragmatisk integrasjon - JavaZone 2010
Pragmatisk integrasjon - JavaZone 2010Pragmatisk integrasjon - JavaZone 2010
Pragmatisk integrasjon - JavaZone 2010Anders Sveen
 
So you think you can change? - XP2010
So you think you can change? - XP2010So you think you can change? - XP2010
So you think you can change? - XP2010Anders Sveen
 
Prove it, ship it! - XP2010 Lightning talk
Prove it, ship it! - XP2010 Lightning talkProve it, ship it! - XP2010 Lightning talk
Prove it, ship it! - XP2010 Lightning talkAnders Sveen
 
Automatisert Testing
Automatisert TestingAutomatisert Testing
Automatisert TestingAnders Sveen
 

More from Anders Sveen (8)

Docker for Dummies
Docker for DummiesDocker for Dummies
Docker for Dummies
 
Heroku for Java
Heroku for JavaHeroku for Java
Heroku for Java
 
So you think you can change? - JavaZone 2010
So you think you can change? - JavaZone 2010So you think you can change? - JavaZone 2010
So you think you can change? - JavaZone 2010
 
Pragmatisk integrasjon - JavaZone 2010
Pragmatisk integrasjon - JavaZone 2010Pragmatisk integrasjon - JavaZone 2010
Pragmatisk integrasjon - JavaZone 2010
 
So you think you can change? - XP2010
So you think you can change? - XP2010So you think you can change? - XP2010
So you think you can change? - XP2010
 
Prove it, ship it! - XP2010 Lightning talk
Prove it, ship it! - XP2010 Lightning talkProve it, ship it! - XP2010 Lightning talk
Prove it, ship it! - XP2010 Lightning talk
 
Automatisert Testing
Automatisert TestingAutomatisert Testing
Automatisert Testing
 
Smidig Utrulling
Smidig UtrullingSmidig Utrulling
Smidig Utrulling
 

Rules engine vs. domain logic - JavaZone 2009

  • 1. Rules engines vs. domain logic- et balansertsynpå en hårfinbalansegang Anders Sveen Bent Are Melsom 10.09.2009
  • 2. Takk for at du hører på oss i dag Bent Are Melsom Sjefskonsulent, leder Java avdeling i Oslo bent-are.melsom@capgemini.com Anders Sveen Sjefskonsulent, teknologileder for Java i Oslo anders.sveen@capgemini.com
  • 3. Agenda Hva er en regelmotor, og hva skal/skal du ikke bruke den til Hva lover en regelmotor deg? Litt om RETE – basisen i en regelmotor Hva må du vurdere før du tar i bruk en regelmotor Erfaringer og alternativer Spørsmål? Oppsummering
  • 4. Hva er en regelmotor? Avansert software for å hjelpe med forretningslogikk som har sin rot i store komplekse datasett. Slags data mining som skjer i bakgrunnen her Muligheten til å la forretningsfolket kode To typer regelmotorer – ofte i samme pakke Inference – Håndterer slags if-then logikk Oftest brukt i applikasjoner, og veldig ofte stateless. Event-condition – Detekterer events og gjør noe basert på disse Mange leverandører, både open source og lukket. Jrules ,Drools, InRule, BlazeAdvisor etc. Bruksområder: Beregninger, beslutninger, varsling, tilgangskontroll, data mining
  • 5. Hva er en regelmotor? Regel DSL ”Naturlig” språk Tabeller Deklarativt RETE algoritmen Håndterer regelsett med effekter på tvers av regler Omkringliggene verktøy Skrive regler Debug Repository
  • 6. Regelevaluering og RETE Hvis ekstern catering er booket, avbestill kjøkkenet Hvis Storsalen er booket, innkall ekstra hjelp Hvis Storsalen er booket, øk prisen med 10% Hvis antall påmeldte er over 100, book ekstern catering Hvis antall ledige plasser igjen er under 50, øk prisen med 15% Hvis maks plasser for arrangement er over 100, book Storsalen Regel 6 Regel 5 Regel 3 Regel 4 Regel 1 Regel 2
  • 7. Hva ”lover” en regelmotor? Regler kan endres mens systemet kjører Regler kan endres uten at utviklere må blandes inn Regler er i naturlig språk og derfor bedre dokumentert Synlighet i beslutninger Raskere utvikling
  • 8. Regelmotor vs ”røkla” Separation of concerns Enklere kommunikasjon Automatisert test Rik domenemodell Felles begrepsapparat JUnit + Fitnesse + Maven
  • 9. Trenger du en regelmotor? Når du snubler i if-setninger – skriving av dette er ren pain Sørg for at du objektorienterer før du vurderer en regelmotor Hvilke deler av domenet passer i en regelmotor. Kan innføre en regelmotor etter hvert som du ser at du trenger det. Hyppigeforandringeriforretningslogikken? somikkekreverendringiinformasjonsgrunnlaget? Skal du hurtig skalere antall utviklere? Regelmotor kan gi deg strukturen du trenger. Må du gjenskape en komplisert beslutning tilbake i tid? Trenger du versjonering av regler? Gjør en PoC med både regelmotor og et godt designet domene.
  • 10. Hva må du tenke på når du innfører en regelmotor? Ytelse Hvor fort mådetgå? Hva tar tid? Motorenellerinnhentingavinformasjon? Implementasjonsytelse Hvor fort og enkelt kan man implementere reglene? Mange regelmotorer har gode ”WYSIWYG” editorer som funker for forretningsfolkene. Disse funker godt på mindre regelsett, men sliter ofte på store. Tjenestemoduler Skilleutbyggingav input/output fraregelmotor Masseringavresultatetfraregelmotoren? Fellesellerseparatdomenemodell? Feilhåndtering? Hvordanfåtilfunksjonellefeilutavregelmotoren? Er den så “blackbox” somdutror?
  • 11. Konsekvenser i prosjekt Du får ofte flere grupperinger, og dermed større roundtrip i utvikling Kompleksitet i utviklingsmiljøet, flere produkter å installere, tyngre kjøremiljø Testing – flere steder med automagisk testing. Flere rammeverk – trenger du nok ett rammeverk Blackbox vs. whitebox for deg som javautvikler kompetanse i prosjekt Du som utvikler Regelgruppen koder Deploy Test Tiden går jo lengre roundtrip du har
  • 12. Erfaringer Regelmotor letter kommunikasjonen Trenger uansett et felles begrepsett Automatisk testing hindrer feil ved endringer Gjelder uansett teknologivalg Det er teknologene som ender opp med å skrive reglene Til syvende og sist sitter utvikleren med jobben Feil er vanskelig å finne ut av Ref. blackbox
  • 13. Erfaringer forts. Verktøyene er ofte ikke gode utviklingsverktøy (IDE) Mangler ofte auto-complete osv. Pek og klikk er ikke så lurt som det høres ut som Ikke kompatibelt med vanlig kildekodekontroll Hva skjer dersom repo ryker? Å fjerne regler fra koden gjør koden mindre forståelig Du kan fort ende opp med en anemisk domenemodell Avhengig av konsulenter fra leverandør Hvem ender opp med å ha kontroll på reglene?
  • 14.
  • 15. Enkelt for utvikler å forholde seg til
  • 16.
  • 17.
  • 18.
  • 19. Sammenhenger på tvers av meget komplekse datasett
  • 20.
  • 21.

Editor's Notes

  1. Bent
  2. Bent
  3. Bent
  4. Bent
  5. Anders
  6. Anders
  7. Anders og Bent
  8. Anders
  9. Bent
  10. Bent
  11. Bent
  12. Bent
  13. Bent
  14. Begge
  15. Bent