Giter Site home page Giter Site logo

kislayverma / rulette Goto Github PK

View Code? Open in Web Editor NEW
96.0 11.0 27.0 1.44 MB

A pragmatic business rule management system

Home Page: http://rulette.org

License: Apache License 2.0

Java 100.00%
rules rule-engine rules-engine business-rules rule-system rule-manager brms

rulette's Introduction

rulette's People

Contributors

abhijithpradeep avatar abhinav3 avatar calvincodes avatar kislayverma avatar palfrey avatar sullis avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

rulette's Issues

Add a better way of determining if a rule input is "Any'

The only way to do this right now is to check for NULL or "". This leaks out implementation detail of what constitutes 'Any', in addition to making the calling code ugly and fragile.

We should build a better interface to this info (maybe via a 'isAny()' method on rule input class)

Too many connections issue

The rule engine open a lot of connections pool to the database without closing them which cause the [Too many connections] exception

[feature] multi tenancy shared database type

Great tool and very usefull , thank you

i think it will be better if the tool also provider the shared database multi tenancy modal, it's more performance than the multiple database schema

Add support for executable rule inputs

Instead of rule inputs being fixed values, we should allow them to be arbitrarily executable pieces of code. This will allow definition of custom logic instead of static values.

A few things to consider here.

  1. Performance may be impacted if the logic is intensive.
  2. What data be passed to these inputs and how.
  3. Does this mean a new rule input type (e.g. 'EVAL') and how does that play with the data type construct.

This is also a significant deviation from the current simple approach of Rulette towards rule inputs, viz that of treating them as stored "values". With this, we shift more towards Drools style rule "execution", although we may be able to support both modes.

Update example SQL scripts

The setup and example SQL scripts under the. mysql provider are the latest ones. All other modules have outdated setup files as examples.

Improve lookup of matching values in Range inputs

The current lookup complexity of valid range input lookup in rule evaluation is O(n) as the engine iterates over all ranges to find matches. Evaluate using alternate data structure to improve this.

Identical rules in sample-rulesystem-setup.sql

Steps to reproduce:

  1. Create a sample rule-system using the sample-rulesystem-setup.sql script.
  2. Run SimpleMysqlUse class.
  3. Prints the following error:
[main] INFO com.github.kislayverma.rulette.example.mysql.SimpleMysqlUse - ==========Update a rule==========
Exception in thread "main" java.lang.Exception: The rule to be deleted and the rule found are not the same.Something went horribly wrong
	at com.github.kislayverma.rulette.engine.impl.trie.TrieBasedEvaluationEngine.deleteRule(TrieBasedEvaluationEngine.java:157)
	at com.github.kislayverma.rulette.RuleSystem.updateRule(RuleSystem.java:240)
	at com.github.kislayverma.rulette.example.mysql.SimpleMysqlUse.updateRule(SimpleMysqlUse.java:129)
	at com.github.kislayverma.rulette.example.mysql.SimpleMysqlUse.runSamples(SimpleMysqlUse.java:110)
	at com.github.kislayverma.rulette.example.mysql.SimpleMysqlUse.run(SimpleMysqlUse.java:46)
	at com.github.kislayverma.rulette.example.mysql.SimpleMysqlUse.main(SimpleMysqlUse.java:35)

From my debugging, I believe the cause of this to be these identical rules in sample-rulesystem-setup.sql script:
(192,'WES',3,NULL,NULL,NULL,'4'),(196,'WES',3,NULL,NULL,NULL,'4')

Proposed fix: Use NULL as the source_state for ruleId 196.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.