python - Python 规则引擎:支持 NOT 运算符的持久规则 JSON 规则格式
问题描述
我正在利用 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"
}
我怎样才能接受条件(第三)的非,例如,
第一个和第二个而不是第三个
谢谢鲍登
解决方案
持久规则不支持一元逻辑运算符。要否定第三个表达式,您可以使用&neq
and $or
。
{
"r_0": {
"all": [
{ "first": { "condition": "foo" }},
{ "second": {
"$and": [
{ "id": { "first": "id"}},
{ "condition": "bar"}
]
}
},
{ "third": {
"$or": [
{ "$neq": {"id": {"second": "id"}}},
{ "$neq": {"condition": "cat"}}
]
}
}
]
}
}
推荐阅读
- algorithm - 将值从一个范围重新计算到另一个范围
- jenkins - 我如何解析具有 json 的文本文件并获取数组元素
- asp.net-core-3.1 - Razor Pages 密码输入框一直显示默认点
- left-join - 对多个表进行左连接时出现雪花“爆炸连接”问题
- python - 计算python中数字的标准差
- javascript - 不知道为什么这个解决方案返回未定义(数组算法)
- javascript - 将“3+5/2”之类的字符串转换为数字
- python - VSCode for Python 中的函数参数建议/自动完成
- django - 如何使用 django-filter 显示模型中的字段?
- css - 来自网络的 BG 图像有效,但文件夹图像无效