-
Column Value:
$$
example DateDiff($$,@now) -
variable symbol:
$
example:$caseId
this is needed since we allow multi words operations likestarts with
-
Is null value or empty:
Null
orEmpty
-
Any Value:
-
-
All types:
null
orempty
not null
true
orfalse
Type | Syntax | Examples |
---|---|---|
Numbers | value | 500 |
compare operator | >500 | |
<500 | ||
between 500 and 700 | ||
String | value | Low-Income |
Quoted Value | 'Low-Income' | |
string operators | starts with 'Low' | |
ends with 'Income' | ||
contains 'Income' | ||
not 'Low-Income' | ||
Date | Quoted value | '2020/12/01' |
Date operators | after '2020/12/01' | |
>30 days | ||
<10 years | ||
contains 'Income' | ||
not 'Low-Income' |
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
Decision table can be defined as a JSON or CSV file
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);
const tester=Rules.loadTest('./client-category-tests.json');
let results=tester.run();
console.log(results.summary);
-
Literal values with or without quotes, so
"high"
andhigh
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'
orafter '2018/03/01'
between '2018/01/01' and '2019/12/31'
- And , Or and Not operators, brackets
()
can also be used - complex operations and functions can reference the variable using
@
symbol
Output expressions can use the full expression language and reference any input or ouput variable.
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);
- Strings: 'John'
- Numbers: 123.25
salary
customer.address
The package already defines a set of operators but you can add your own
+
-'
*
/` etcs.
between
is defined as a word operator
The following literals are defined as Keywords
-true
-false
-null