模板非运算符支持

我们希望模板语言支持“非”运算符,除了“与”和“或”运算符之外。

问题描述

目前模板语言支持“与”和“或”运算符,但这还不够。许多场景无法仅用这两个运算符来描述,因此我们希望添加对“非”运算符的支持。

提议的变更

备注:正向顶点 = 具有属性“is_deleted”=False 边的顶点。
负向顶点 = 正向顶点的相反。这意味着该

顶点仅具有属性“is_deleted”=True 的边。

为了支持“非”运算符,需要进行以下更改。

  1. 在模板验证中。检查“非”运算符只能以以下方式出现

    “非”运算符可以出现在边之前。

  2. 场景评估器

    检查“非”运算符是否出现在某个元素上,并为其添加名为“negative_condition”的属性,并将其“is_delete”属性更新为 True。

  3. Networkx 算法

    在 subgraph_matching 方法中。如果匹配不是“负向条件”,则执行常规 subgraph_matching。否则,如果匹配是“负向条件”,则在负向边上执行 subgraph_matching。

性能/可扩展性影响

由于上述步骤,子图匹配算法的性能会稍微降低。

其他部署者影响

开发者影响

实现

负责人

主要负责人

alexey_weyl <alexey.weyl@nokia.com>

工作项

未来生命周期

依赖项

测试

添加了检查“非”运算符不同用法的测试。

文档影响

在 Vitrage 中添加了文档

https://github.com/openstack/vitrage/blob/master/doc/source/not_operator_support.rst

参考资料