noex ecosystem

noex-rules

Rule Engine s Complex Event Processing

Forward chaining engine s detekcí temporálních vzorů, třemi DSL flavory, integrovaným fact storem a produkčním REST/GraphQL API. Postavený na noex GenServer aktorech pro odolné zpracování pravidel.

Klíčové vlastnosti

Vše potřebné pro produkční zpracování pravidel a korelaci událostí

Forward Chaining Engine

Prioritní vyhodnocování pravidel s automatickým přepočtem při změnách faktů, událostí a vypršení timerů. Selhání jednotlivého pravidla neovlivní zbytek systému.

Complex Event Processing

Vestavěné temporální vzory: detekce sekvencí, monitorování absencí, prahové hodnoty počtu a numerické agregace — vše s konfigurovatelnými časovými okny a seskupováním.

Tři DSL flavory

Pište pravidla po svém: fluent builder API s plným TypeScript autocomplete, tagged template literals pro kompaktní zápis, nebo YAML soubory pro konfigurační workflow.

Fact Store s wildcards

In-memory key-value úložiště se segmentovaným wildcard pattern matchingem. Verzování a notifikace o změnách pohání automatické přehodnocování pravidel.

Správa timerů

Deklarativní timery s čitelným formátem doby trvání. Jednorázové i opakované plány, volitelná perzistence a automatická emise událostí při vypršení.

REST API a Web UI

Produkčně připravený Fastify server se Swagger dokumentací, SSE streamováním, webhooky a React administračním rozhraním. Spravujte pravidla, fakta a události přes HTTP.

Pište pravidla po svém

Tři DSL flavory pro stejné pravidlo — vyberte si ten, který vyhovuje vašemu workflow

rules.ts
import { Rule, onEvent, event, emit, setFact, ref }
  from '@hamicek/noex-rules/dsl';

const rule = Rule.create('order-notification')
  .description('Notify on high-value orders')
  .priority(10)
  .when(onEvent('order.created'))
  .if(event('amount').gte(100))
  .then(
    emit('notification.send', {
      orderId: ref('event.orderId'),
      message: 'High-value order received',
    })
  )
  .also(
    setFact('order:${event.orderId}:notified', true)
  )
  .build();

Complex Event Processing

Detekujte vzory v proudech událostí s časovými okny a seskupováním

Sequence

Detekce uspořádaných událostí v časovém okně s volitelným striktním módem a groupBy.

sequence()
  .event('order.created')
  .event('payment.received')
  .within('15m')
  .groupBy('orderId')

Absence

Spuštění, když očekávaná událost nenastane v rámci časového okna.

absence()
  .after('order.created')
  .expected('payment.received')
  .within('15m')
  .groupBy('orderId')

Count

Detekce překročení frekvenčního prahu v posuvném nebo překlápějícím se okně.

count()
  .event('auth.login_failed')
  .threshold(5)
  .window('5m')
  .groupBy('userId')

Aggregate

Sledování numerických agregací (sum, avg, min, max) nad poli událostí v časových oknech.

aggregate()
  .event('order.paid')
  .field('amount')
  .function('sum')
  .threshold(10000)
  .window('1h')

Reálné případy použití

Od detekce podvodů po IoT — noex-rules pohání event-driven byznys logiku

Detekce podvodů

Detekujte podezřelé přihlašovací vzory, neobvyklé částky transakcí a geografické anomálie v reálném čase.

Rule.create('brute-force-detection')
  .when(count()
    .event('auth.login_failed')
    .threshold(5)
    .window('5m')
    .groupBy('userId'))
  .then(emit('security.alert', {
    type: 'brute-force',
    userId: ref('trigger.groupKey'),
  }))
  .build();

Platební orchestrace

Spravujte platební toky s timeouty, logikou opakování a automatickou eskalací při selhání.

Rule.create('payment-timeout')
  .when(absence()
    .after('order.created')
    .expected('payment.received')
    .within('15m')
    .groupBy('orderId'))
  .then(emit('order.cancel', {
    orderId: ref('trigger.groupKey'),
    reason: 'Payment timeout',
  }))
  .build();

Věrnostní programy

Počítejte body, sledujte upgrady úrovní a spouštějte odměny na základě vzorů zákaznické aktivity.

Rule.create('gold-tier-upgrade')
  .when(aggregate()
    .event('order.paid')
    .field('amount')
    .function('sum')
    .threshold(10000)
    .window('30d')
    .groupBy('customerId'))
  .then(setFact(
    'customer:${trigger.groupKey}:tier', 'gold'
  ))
  .build();

IoT zpracování událostí

Monitorujte proudy dat ze senzorů, detekujte překročení prahových hodnot a korelujte události napříč zařízeními.

Rule.create('device-overheat')
  .when(sequence()
    .event('sensor.temp_high')
    .event('sensor.temp_critical')
    .within('10m')
    .groupBy('deviceId'))
  .then(emit('alert.overheat', {
    deviceId: ref('trigger.groupKey'),
    severity: 'critical',
  }))
  .build();

Srovnání

noex-rules vs populární JavaScriptové rule enginy

Featurenoex-rulesjson-rules-enginenoolsnode-rulesroolszen-engine
Forward chainingAnoAnoAno (Rete)AnoAnoDecision tables
CEP / Temporální vzorySekvence, absence, počet, agregace
DSLFluent + templatesPouze JSONVlastní DSLPouze JSONPlain objectsDMN / FEEL
YAML definice pravidel
Fact Store s pattern matchingemVestavěné wildcardsAlmanacWorking memory
Správa timerůVestavěné DSL
Korelace událostíKorelační + kauzační ID
Wildcard subskripce událostíTopic patterny
REST APIVestavěné (Fastify)
SSE + Webhooky
String interpolace${expression}JS v DSLFEEL výrazy
Volání externích služebcall_service akceCustom operatorsCustom functionsCustom handlersCustom nodes
OTP supervisionnoex GenServer
Prioritní vyhodnocováníAnoAnoSalienceAnoAnoRow order
OpenAPI / Swagger
StavAktivníAktivníArchivovanýNízká aktivitaAktivníAktivní

Čím je noex-rules unikátní

Complex Event Processing

Jediný JS rule engine s vestavěným CEP: detekce sekvencí, monitorování absencí, počítání frekvencí a agregační prahy s časovými okny.

Tři DSL flavory

Fluent builder s TypeScript autocomplete, tagged template literals pro rychlé prototypování a YAML pro konfigurační workflow.

Integrovaný Fact Store

Wildcard pattern dotazy s automatickým přehodnocováním pravidel při změnách faktů. Žádná separátní správa stavu.

Vestavěná správa timerů

Deklarativní timery s čitelným formátem doby trvání, intervaly opakování a automatickou emisí událostí při vypršení.

Produkční REST API

Fastify HTTP vrstva s SSE streamováním, HMAC-podepsanými webhooky a Swagger dokumentací přímo z balíčku.

OTP Supervision

Postavený na noex GenServer aktorech. Pokud engine spadne, supervisor ho restartuje, zatímco zbytek aplikace pokračuje.

Začněte budovat inteligentní zpracování událostí

Přidejte noex-rules do svého projektu během vteřin

npm install @hamicek/noex-rules
$ npm install @hamicek/noex-rules

Podpořte projekt

Líbí se vám noex? Pomozte nám pokračovat ve vývoji

Bitcoin
Bitcoin QR Code