Rules engines vs. domain logic- et balansertsynpå en hårfinbalansegang<br />Anders Sveen<br />Bent Are Melsom<br />10.09.2...
Takk for at du hører på oss i dag<br />Bent Are Melsom<br />Sjefskonsulent, leder Java avdeling i Oslo<br />bent-are.melso...
Agenda<br />Hva er en regelmotor, og hva skal/skal du ikke bruke den til<br />Hva lover en regelmotor deg?<br />Litt om RE...
Hva er en regelmotor?<br />Avansert software for å hjelpe med forretningslogikk som har sin rot i store komplekse datasett...
Hva er en regelmotor?<br />Regel DSL<br />”Naturlig” språk<br />Tabeller<br />Deklarativt<br />RETE algoritmen<br />Håndte...
Regelevaluering og RETE<br />Hvis ekstern catering er booket, avbestill kjøkkenet<br />Hvis Storsalen er booket, innkall e...
Hva ”lover” en regelmotor?<br />Regler kan endres mens systemet kjører<br />Regler kan endres uten at utviklere må blandes...
Regelmotor                       vs           ”røkla”<br />Separation of concerns<br />Enklere kommunikasjon<br />Automati...
Trenger du en regelmotor?<br />Når du snubler i if-setninger – skriving av dette er ren pain<br />Sørg for at du objektori...
Hva må du tenke på når du innfører en regelmotor?<br />Ytelse<br />Hvor fort mådetgå? Hva tar tid? Motorenellerinnhentinga...
Konsekvenser i prosjekt<br />Du får ofte flere grupperinger, og dermed større roundtrip i utvikling<br />Kompleksitet i ut...
Erfaringer<br />Regelmotor letter kommunikasjonen<br />Trenger uansett et felles begrepsett<br />Automatisk testing hindre...
Erfaringer forts.<br />Verktøyene er ofte ikke gode utviklingsverktøy (IDE)<br />Mangler ofte auto-complete osv.<br />Pek ...
Alternativet?<br />Objektorientering<br /><ul><li>Med god objektorientering og Domain Driven Design kommer du langt
Enkelt for utvikler å forholde seg til
Trenger god og tett kommunikasjon mellom utvikling og forretning. Det trenger du vel uansett?</li></ul>Domain specific lan...
Ide adoptert fra “special purpose languages” – ikke nytt med andre ord.</li></ul>Oppslagstabeller<br /><ul><li>Enkel tabel...
Upcoming SlideShare
Loading in …5
×

Rules engine vs. domain logic - JavaZone 2009

1,677 views

Published on

Slides from talk at JavaZone 2009, sorry only Norwegian.

1 Comment
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total views
1,677
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
14
Comments
1
Likes
0
Embeds 0
No embeds

No notes for slide
  • Bent
  • Bent
  • Bent
  • Bent
  • Anders
  • Anders
  • Anders og Bent
  • Anders
  • Bent
  • Bent
  • Bent
  • Bent
  • Bent
  • Begge
  • Bent
  • Rules engine vs. domain logic - JavaZone 2009

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

    ×