Skip to content

Latest commit

 

History

History
112 lines (75 loc) · 5.28 KB

About_pl.md

File metadata and controls

112 lines (75 loc) · 5.28 KB

Gopher Holds The Rules

"Gopher Trzyma Się Zasad"

About_cn About_de About_en About_id About_pl

About | Tutorial | Rule Engine | GRL | GRL JSON | RETE Algorithm | Functions | FAQ | Benchmark

Grule

import "github.com/hyperjumptech/grule-rule-engine"

Silnik reguł dla Go

Grule to biblioteka silnika reguł dla języka programowania Golang. Zainspirowana uznanym JBOSS Drools, ale wykonana w dużo prostszy sposób.

Podobnie jak Droole, Grule ma swoje własne DSL, które można porównać w następujący sposób.

Drools's DRL jest jak :

rule "SpeedUp"
    salience 10
    when
        $TestCar : TestCarClass( speedUp == true && speed < maxSpeed )
        $DistanceRecord : DistanceRecordClass()
    then
        $TestCar.setSpeed($TestCar.Speed + $TestCar.SpeedIncrement);
        update($TestCar);
        $DistanceRecord.setTotalDistance($DistanceRecord.getTotalDistance() + $TestCar.Speed)
        update($DistanceRecord)
end

A Grule's GRL jest jak :

rule SpeedUp "When testcar is speeding up we increase the speed." salience 10  {
    when
        TestCar.SpeedUp == true && TestCar.Speed < TestCar.MaxSpeed
    then
        TestCar.Speed = TestCar.Speed + TestCar.SpeedIncrement;
        DistanceRecord.TotalDistance = DistanceRecord.TotalDistance + TestCar.Speed;
}

Co to jest RuleEngine

Nie ma lepszego wyjaśnienia niż artykuł autorstwa Martina Fowlera. Artykuł można przeczytać tutaj (RulesEngine by Martin Fowler).

Zaczerpnięte z witryny TutorialsPoint (z niewielkimi modyfikacjami),

Silnik regułowy Grule to produkcyjny system regułowy, który wykorzystuje podejście oparte na regułach do implementacji systemu ekspertowego. Systemy ekspertowe to systemy oparte na wiedzy, które wykorzystują reprezentacje wiedzy do przetwarzania zdobytej wiedzy w bazę wiedzy, która może być wykorzystywana do wnioskowania.

System reguł produkcyjnych jest systemem Turinga kompletnym, w którym nacisk kładzie się na reprezentację wiedzy w celu wyrażenia logiki propozycjonalnej i pierwszego rzędu w sposób zwięzły, jednoznaczny i deklaratywny.

Mózgiem systemu reguł produkcyjnych jest Interference Engine [silnik wnioskowania], który można rozbudować do dużej liczby reguł i faktów. Silnik wnioskowania porównuje fakty i dane z Regułami Produkcji - zwanymi również Produkcjami lub po prostu Regułami - w celu wyciągnięcia wniosków, które skutkują działaniami.

Reguła produkcyjna jest dwuczęściową strukturą, która wykorzystuje logikę pierwszego rzędu do wnioskowania na temat reprezentacji wiedzy. Silnik reguł biznesowych to system oprogramowania, który wykonuje jedną lub więcej reguł biznesowych w środowisku produkcyjnym w trybie runtime.

Silnik reguł pozwala zdefiniować "Co zrobić", a nie "Jak to zrobić".

Co to jest reguła

(również zaczerpnięte z TutorialsPoint)

Reguły to fragmenty wiedzy często wyrażane słowami: "Gdy wystąpią pewne warunki, wykonaj pewne zadania".

When
   <Condition is true>
Then
   <Take desired Action>

Najważniejszą częścią Reguły jest jej część when. Jeśli część when jest spełniona, uruchamiana jest część then.

rule  <rule_name> <rule_description>
   <attribute> <value> {
   when
      <conditions>

   then
      <actions>
}

Zalety silnika reguł

Programowanie deklaratywne

Reguły ułatwiają wyrażanie rozwiązań trudnych problemów, a także ich weryfikację. W przeciwieństwie do kodów, reguły są napisane mniej skomplikowanym językiem, dzięki czemu analitycy biznesowi mogą łatwo odczytać i zweryfikować zestaw reguł.

Rozdzielenie logiki i danych

Dane są przechowywane w obiektach domeny, a logika biznesowa w regułach. W zależności od rodzaju projektu taki podział może być bardzo korzystny.

Centralizacja wiedzy

Używając reguł, tworzy się repozytorium wiedzy (bazę wiedzy), która jest wykonywalna. Jest to pojedynczy punkt prawdy dla polityki biznesowej. Najlepiej, jeśli Reguły są tak czytelne, że mogą służyć również jako dokumentacja.

Zdolność do zmian

Ponieważ reguły biznesowe są w rzeczywistości traktowane jak dane. Dostosowanie reguł do dynamicznej natury biznesu staje się banalnie proste. Nie ma potrzeby ponownego budowania kodu, wdrażania go tak, jak w przypadku normalnego tworzenia oprogramowania, wystarczy tylko opracować zestawy reguł i zastosować je w repozytorium wiedzy.