UNPKG

@rajduandc/ruleengine

Version:
172 lines (151 loc) 4.24 kB
# 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 : ```sh $ npm i -g npm $ npm i --save kantime-rule-engine ``` # Usage Initialize: ```sh import {SkipRuleEngine, EventDrivenRuleEngine,FormStateRuleEngine,OnDemandRuleEngineExecution, EventBinding,SetInputData} from 'kantime-rule-engine'; ``` ```sh 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 ___ ```json "Rule1" : { "Eval" : [ "EQ", "doc.student.name", "" ], "actionData" : { "print" : { "message" : "Name can't be blank", "tgtEleInfo" : [ "Student.Name", "Name", "Name" ] } } } ``` ##### Event Driven ___ ```json "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 ___ ```json "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 ___ ```json "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|