Python规则引擎:持久规则JSON规则格式以支持NOT运算符

时间:2019-09-02 20:55:25

标签: python rule-engine

我正在利用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,例如

第一和第二而不是第三

谢谢 鲍登

1 个答案:

答案 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"}}
          ]
        }
      }
    ]
  }
}
相关问题