⚙️ rules - Kural Motoru

Business Rules, Pattern Matching, Inference

37
function
612
lines
19 KB
Boyut

🚀 Quick Start

import rules

// Rule engine
let engine = rules.engine_new()

// Add rules
rules.add_rule(engine, "discount_vip", function(facts) do
    if facts["customer_type"] == "VIP"  do
        facts["discount"] = 20.0
        return true
    end
    return false
end)

rules.add_rule(engine, "discount_bulk", function(facts) do
    if facts["quantity"] > 100  do
        facts["discount"] = 15.0
        return true
    end
    return false
end)

// Execute
let facts = do
    "customer_type": "VIP",
    "quantity": 50,
    "price": 100.0
end

rules.execute(engine, facts)
yazdır("İndirim: %" + facts["discount"].yazıya())

💡 Exampleler

Loan Approval System

import rules

let loan_engine = rules.engine_new()

rules.add_rule(loan_engine, "high_income", function(facts) do
    if facts["annual_income"] > 100000  do
        facts["score"] = facts.get("score", 0) + 30
        return true
    end
    return false
end)

rules.add_rule(loan_engine, "good_credit", function(facts) do
    if facts["credit_score"] > 700  do
        facts["score"] = facts.get("score", 0) + 40
        return true
    end
    return false
end)

rules.add_rule(loan_engine, "low_debt", function(facts) do
    if facts["debt_ratio"] < 0.3  do
        facts["score"] = facts.get("score", 0) + 30
        return true
    end
    return false
end)

rules.add_rule(loan_engine, "approve", function(facts) do
    if facts.get("score", 0) >= 70  do
        facts["approved"] = true
    end else do
        facts["approved"] = false
    end
    return true
end)

// Test
let application = do
    "annual_income": 120000,
    "credit_score": 750,
    "debt_ratio": 0.25
end

rules.execute(loan_engine, application)
yazdır("Onaylandı: " + application["approved"].yazıya())
yazdır("Skor: " + application["score"].yazıya())

← All Modules