Skip to content

Latest commit

 

History

History
110 lines (92 loc) · 3.32 KB

MatchingRules_pl.md

File metadata and controls

110 lines (92 loc) · 3.32 KB

Wyszukaj reguły dopasowania (kolejność według atrakcyjności)

MatchingRules_cn MatchingRules_de MatchingRules_en MatchingRules_id MatchingRules_pl

FetchMatchingRules w GruleEngine.go pobiera wszystkie reguły ważne dla danego faktu i zwraca listę wartości ast.RuleEntry uporządkowanych według właściwości salience.

Zasady:
rule DuplicateRule1 "Duplicate Rule 1" salience 5 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule2 "Duplicate Rule 2" salience 6 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule3 "Duplicate Rule 3" salience 7 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule4 "Duplicate Rule 4" salience 8 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule UniqueRule5 "Unique Rule 5" salience 0 {
    when
        (Fact.Distance > 5000 && Fact.Duration == 120) && (Fact.Result == false)
    Then
        Output.NetAmount=143.320007;
        Fact.Result=true;
}

Wszystkie powyższe reguły są duplikatami z wyjątkiem reguły UniqueRule5, która ma inną wartość ważności. Jak wiadomo, reguła o wyższej ważności ma wyższy priorytet i zostanie wykonana przed regułą o niższej ważności, jeśli wystąpi konflikt.

fact := &Fact{
		Distance: 6000,
		Duration: 121,
}
FetchMatchingRules:
engine := engine.NewGruleEngine()
ruleEntries, err := engine.FetchMatchingRules(dctx, kb)
if err != nil {
    panic(err)
}

wynik:

Returns []*ast.RuleEntry (All Matching Rule Entries sorted by Salience)

rule DuplicateRule4 "Duplicate Rule 4" salience 8 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule3 "Duplicate Rule 3" salience 7 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule2 "Duplicate Rule 2" salience 6 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}

rule DuplicateRule1 "Duplicate Rule 1" salience 5 {
    when
        (Fact.Distance > 5000 && Fact.Duration > 120) && (Fact.Result == false)
    Then
        Fact.NetAmount=143.320007;
        Fact.Result=true;
}