我正在利用engine.Host类创建自己的规则引擎实例,并通过JSON文件并调用set_rulesets()方法来加载规则。一切正常。
持久规则:https://pypi.org/project/durable-rules/
但是,对于我的一条规则,我需要做一个否定。我不确定语法。否定另一个子句的正确方法是什么?例如,考虑以下规则:
"r_1": {
"all": [
{"first": {"condition": "foo"}},
{"second": {
"$and": [
{"id": {"first": "id"}},
{"condition": "bar"}
]
}},
{"third": {
"$and": [
{"id": {"second": "id"}},
{"condition": "cat"}
]
}}
],
"run": "rule_fired"
}
如何获取条件(第三个)的NOT,例如
第一和第二而不是第三
谢谢 鲍登
答案 0 :(得分:0)
durable-rules不支持一元逻辑运算符。要否定第三个表达式,可以使用&neq
和$or
。
{
"r_0": {
"all": [
{ "first": { "condition": "foo" }},
{ "second": {
"$and": [
{ "id": { "first": "id"}},
{ "condition": "bar"}
]
}
},
{ "third": {
"$or": [
{ "$neq": {"id": {"second": "id"}}},
{ "$neq": {"condition": "cat"}}
]
}
}
]
}
}