Hvordan bygge en Rules Engine

Hvordan bygge en Rules Engine


En regelmotor er programvare som vil behandle en anmodning i henhold til en database med regler. I et regelmotoren system, velger brukeren et sett med regler og deretter sender en "request", som er behandlet i henhold til reglene. Resultatene av denne prosedyre blir deretter rapportert av systemet. Denne informasjonsbehandling modellen er nyttig i en rekke anvendelser.

Prolog

Den beste måten å forstå hvordan regelmotorer arbeidet er å lære dataspråket Prolog. Den Prolog språk består av en regelmotor og et sett av konvensjoner om hvordan du skriver regler. Lære fungerer Prolog lærer deg hvordan en regelmotor fungerer - og alle problemene som kommer opp med regelmotorer som backtracking og hvordan du kan representere fakta og regler. Etter reglene har blitt skrevet, er Prolog gitt en uttalelse at den prøver å finne i databasen av fakta. Hvis det ikke er et faktum, men er konklusjonen i en regel, forløpere av regelen blitt den nye søke uttalelser. Rekursjon og backtracking fortsette inntil enten reglene er oppfylt eller kan ikke være fornøyd, og deretter Prolog system uttaler den opprinnelige utsagnet sant, usant eller undecidable.

program Arkitektur

Dersom prosjektet komiteen tillater det, bør du skrive din regelmotoren i Prolog. Hvis ikke, vil det sannsynligvis ligne mye Prolog - alle regler motorer gjøre. I den første delen av prosjektet, skriver fakta. Denne delen er som en database. Neste skrive reglene - reglene bør grupperes sammen med konklusjonen. Hvis "A og B innebærer X" og "C og D innebærer X" også, så disse to reglene er om X og bør grupperes sammen. X er definert eller beskrevet av A og B samt av C og D. regler motoren vil først se i databasen for å se om anmodningen matcher en oppføring i databasen. Hvis ja, svarer systemet "Ja." Ellers regelmotoren ser på konklusjonene til alle reglene - hvis det ikke er kamp, ​​svarer systemet "Nei." Hvis setningen matcher X, vil to baner vurderes: A og B, og C og D. Hvis forfølge A og B fører ingensteds, systemet "backtracks" og vurderer C og D. Ved hjelp Prolog gjør dette enkelt, fordi regler motor er bygget inn i språket.

system Testing

Når fungerende regelmotor ser på en uttalelse, prøver den å "jorde ut" uttalelsen. I logikk betyr dette å finne en link (gjennom reglene) fra uttalelsen til fakta. Hvis setningen (eller dens negasjon) er i fakta, er du ferdig. Hvis ikke, så sjekk for å se om påstanden er konklusjonen av en regel. Hvis ikke, så den setningen kan ikke avgjort. Hvis setningen ikke matche avslutningen av en regel, erstatte mål uttalelse med forløpere av regelen. Dette er å gjøre en kobling ved å gå bakover gjennom en regel. Hvis dette søket mislykkes, kan det være nødvendig å backtrack og vurdere en annen regel som konkluderte matchet uttalelse. Du bør teste systemet ved å gi den stadig mer komplekse setninger. Prøv først en uttalelse som samsvarer med et faktum i databasen. Deretter bruker en uttalelse som bare krever én regel. Deretter bruker en uttalelse som krever tilbakesporing, etc.