1.0.6 • Published 2 years ago

dmn-engine v1.0.6

Weekly downloads
32
License
-
Repository
-
Last release
2 years ago

Business-Rules Engine

Condition Symbols

  • Column Value: $$ example DateDiff($$,@now)
  • variable symbol: $example: $caseId this is needed since we allow multi words operations like starts with
  • Is null value or empty: Null or Empty
  • Any Value: -

  • All types:

    • null or empty
    • not null
    • true or false

Project Status: Active - The project has reached a stable, usable state and is being actively developed.

Introduction

Is a Business Rules Engine supporting DMN Decision Tables. Allowing developers to integrate Rules into JavaScript or Node.js applications.

This solution utilizes deterministic rules vs Rete based solutions that are non-deterministic.

This package is designed specifically for Node.js and TypeScript

As an example of Decisition Table Example

Anatomy

Usage

Definition

Decision table can be defined as a JSON or CSV file

Invoke

To invoke the above example

    const Rules=requires('./business-rules.json')'
    const dt= Rules.load('client-category);
    let result=dt.run({type:'Private',  deposit: 500 , netWorth: 500});

    console.log(result.category);

Testing

    const tester=Rules.loadTest('./client-category-tests.json');
    let results=tester.run();
    console.log(results.summary);

tests

UI for Testing and expeirmenting

Rule Syntax

Conditions

Expression Language

Simple Conditions shortcuts

  • Literal values with or without quotes, so "high" and high are acceptable

  • coditional operators and functions without referencing the variable like >500

  • Empty Condition or - indicates all values are true

  • For numeric variables:
    • 500

    • between 500 and 700
  • For Date variables, functions like:
    • > 30 days , > 50 minutes , < 10 years etc.
    • before '2018/01/01' or after '2018/03/01'
    • between '2018/01/01' and '2019/12/31'

Complex Conditions

  • And , Or and Not operators, brackets () can also be used
  • complex operations and functions can reference the variable using @ symbol

Output

Output expressions can use the full expression language and reference any input or ouput variable.

Expression Engine

    const exp=new Expression(`2+3*4`);
    const result= expr.evaluate();
    console.log(result);

Expressions are compiled into AST

    const exp=new Expression(`2+3*4`);
    const compiled= expr.compile();

    // or reloaed

    const expr=Expression.load(compiled);
    const result= expr.evaluate();

    console.log(result);

Language Constructs

Literals

  • Strings: 'John'
  • Numbers: 123.25

Words

salary

customer.address

Operators

The package already defines a set of operators but you can add your own

Operator Symbols

+ -'*/` etcs.

Word Operators

between is defined as a word operator

Functions

Keywords

The following literals are defined as Keywords

-true -false -null

1.0.6

2 years ago

1.1.1

3 years ago

1.1.0

4 years ago

1.0.5

4 years ago

1.0.4

4 years ago

1.0.3

4 years ago

1.0.2

4 years ago

1.0.1

4 years ago

1.0.0

4 years ago