For example the logic describe by ‘(((AType.A = 5) or InList(BType.B, 3,5,7)) and BaseObjectType.displayName LIKE “Main%”)’ would result in a logic tree as shown in Figure B.1 and a ContentFilter as shown in Table B.1. For this example to return anything AType and BType both shall be subtypes of BaseObjectType, or the resulting “And” operation would always be false.
Figure B.1 – Filter logic tree example
Table B.1 describes the elements, operators and operands used in the example.
Table B.1 – ContentFilter example
Element[] |
Operator |
Operand[0] |
Operand[1] |
Operand[2] |
Operand[3] |
0 |
And |
ElementOperand = 1 |
Element Operand = 4 |
|
|
1 |
Or |
ElementOperand = 2 |
Element Operand = 3 |
|
|
2 |
Equals |
AttributeOperand = NodeId: AType, BrowsePath: “.12:A”, Attribute:value |
LiteralOperand = ‘5’ |
|
|
3 |
InList |
AttributeOperand = NodeId: BType, BrowsePath: “.12:B”, Attribute:value |
LiteralOperand = ‘3’ |
LiteralOperand = ‘5’ |
LiteralOperand = ‘7’ |
4 |
Like |
AttributeOperand = NodeId: BaseObjectType, BrowsePath: “.”, Attribute: displayName |
LiteralOperand = “Main%” |
|
|