@rajduandc/ruleengine
v1.0.7
Published
Rule engine for kantime
Downloads
3
Readme
Kantime Rule Engine
A library for custom validation in the form based on user defined json schema. It is not limited to validation but can perform different actions based on business rules.
Models
| Features | Description | | ------ | ------ | |On Demand Validation | Validate form on button click | | Event Driven Validation | Validate item on different events of input elements such as focus out, onChange,etc | | Skip Logic | Based on rules it skip certain sections of form | | State Management | To show, hide, disable, enable and making read only certain sections of forms based on rules. |
Installation
using npm :
$ npm i -g npm
$ npm i --save kantime-rule-engine
Usage
Initialize:
import {SkipRuleEngine, EventDrivenRuleEngine,FormStateRuleEngine,OnDemandRuleEngineExecution, EventBinding,SetInputData} from 'kantime-rule-engine';
ComponentDidMount() {
SkipRuleEngine();
EventDrivenRuleEngine();
FormStateRuleEngine();
EventBinding();
}
render() {
let EngineInputdata={};
EngineInputdata= {...};
SetInputData(EngineInputdata,this.props.masterRules,this.props.formRules);
// It is used to verify the data and check return values for defined rule
}
Examples of user defined business rules
On Demand Validation
"Rule1" : {
"Eval" : [
"EQ",
"doc.student.name",
""
],
"actionData" : {
"print" : {
"message" : "Name can't be blank",
"tgtEleInfo" : [
"Student.Name",
"Name",
"Name"
]
}
}
}
Event Driven
"Rule1" : {
"Eval" : [
"NOTBETWEEN",
"doc.student.age",
"0,14"
],
"actionData" : {
"Mandate" : {
"message" : [
"Age must be between 0 to 14 ",
"warning"
],
"event" : "focusout",
"srcEleInfo" : [
"Student.Age",
"stu_age"
]
}
}
},
Skip Logic
"Rule1" : {
"Eval" : [
"EQ",
"doc.student.physicalDisorder",
"No"
],
"actionData" : {
"Skip" : {
"srcEleInfo" : [
"Student.PhysicalDisorder",
"stu_disorder"
],
"tgtEleInfo" : [
"Student.Identification",
"stu_ident"
],
"skipEleInfo" : [
"stu_disorderType",
"stu_certificateNo"
]
}
}
}
State Management
"Rule1" : {
"Eval" : [
"EQ",
"doc.student.status",
"Qualified"
],
"actionData" : {
"Hide" : [
"btn_delete",
"btn_lock"
],
"Show" : [
"btn_email",
"btn_addToList",
"btn_Save"
]
}
},
Operators availaible for business rules
| Operators | | ------ | |LENGTH| |REGEX_MATCH| |REGEX_NOT_MATCH| |EQ| |NEQ| |GT| |GTEQ| |LT| |LTEQ| |OR| |AND| |IN| |NOTIN| |CONTAIN| |NOTCONTAIN| |SUBSTRING| |NOTBETWEEN| |DATEDIFF| |HASDUPLICATE|