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?