Crate json_rules_engine_fork
source ·Expand description
Simple rules engine that represents requirements as a tree, with each node having one or more requirements in order to be “Met”.
A tree of rules is constructed, and then the .check_json()
method is called.
json
is a nested field: value
that will be given to each node in the tree for testing.
Status output can be either Met
, NotMet
, or Unknown
if the tested field is not present in the json.
To construct a tree, see the following methods.
Example
extern crate json_rules_engine_fork;
use serde_json::json;
let tree = json_rules_engine_fork::and(vec![
json_rules_engine_fork::string_equals("name", "John Doe"),
json_rules_engine_fork::or(vec![
json_rules_engine_fork::int_equals("fav_number", 5),
json_rules_engine_fork::int_in_range("thinking_of", 5, 10)
])
]);
let mut facts = json!({
"name": "John Doe",
"fav_number": 5
});
#[cfg(not(feature = "eval"))]
{
let result = tree.check_value(&facts);
println!("{:?}", result);
assert!(result.status == json_rules_engine_fork::Status::Met);
}
// result = ConditionResult { name: "And", status: Met, children: [ConditionResult { name: "Name is John Doe", status: Met, children: [] }, ConditionResult { name: "Or", status: Met, children: [ConditionResult { name: "Favorite number is 5", status: Met, children: [] }, ConditionResult { name: "Thinking of a number between 5 and 10", status: Unknown, children: [] }] }] }
This creates a tree like the following:
+---------+
| AND |
+---------+
_____________________/\_______________
| |
V V
+-------------------+ +--------+
| Name is John Doe | | OR |
+-------------------+ +--------+
| field: "name" | ______________/\___________
| value: "John Doe" | | |
+-------------------+ V V
+----------------------+ +-------------------------+
| Favorite number is 5 | | Number between 5 and 10 |
+----------------------+ +-------------------------+
| field: "fav_number" | | field: "thinking_of" |
| value: 5 | | start: 5 |
+----------------------+ | end: 10 |
+-------------------------+
Structs
Enums
Traits
Functions
Creates a
Rule
where all child Rule
s must be Met
Creates a
Rule
where n
child Rule
s must be Met
Creates a rule for boolean comparison.
Creates a rule for float comparison.
Creates a rule for int comparison.
Creates a
Rule
where any child Rule
must be Met
Creates a rule for string comparison