Examples of requests for filter selection
Glossary Item Box
We recommend familiarization with the article "Working with bpm'online objects over the OData protocol using Http request".
The structure $filter of the OData protocol is used to build up data filter conditions. The full list of operations implemented by the $filter structure is provided in the OData specification.
Links, literals, strings, numbers and logical expressions (true, false) may be used in $filter expressions. $filter expressions support arithmetical, logical operations, grouping operations, operations with strings, date and time .
Logical operators
Template | Name | Description |
eq | Equals |
All contacts whose [Name] field equals to the 'SomeUserName' value. Request string : GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName' |
ne | Does not equal |
All contacts whose [Name] field is not equal to the 'SomeUserName' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name ne 'SomeUserName' |
gt | More |
All contacts whose [BirthDate] field exceeds the '1990-12- 12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate gt datetime'1990-12-12T12:00' |
ge | More or equals |
All contacts whose [BirthDate] field exceeds or equals to the '1990-12-12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate ge datetime'1990-12-12T12:00' |
lt | Less |
All contacts whose [BirthDate] field is less than the '1990-12- 12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate lt datetime'1990-12-12T12:00' |
le | Less or equals |
All contacts whose [BirthDate] field is less or equals to the '1990-12-12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=BirthDate le datetime'1990-12-12T12:00' |
and | And |
All contacts whose [Name] field equals to the 'SomeUserName' value and the [BirthDate] field is less than the '1990-12-12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName' and BirthDate le datetime'1990-12-12T12:00' |
or | Or |
All contacts whose [Name] field equals to the 'SomeUserName' value and the [BirthDate] field is less than the '1990-12-12T12:00' value. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=Name eq 'SomeUserName' and BirthDate le datetime'1990-12-12T12:00' |
not | Not |
All contacts whose [Name] field does not end with 'ame'. Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ContactCollection?$filter=not endswith(Name, 'ame') |
Arithmetic operators
Template | Name | Description |
add | Addition |
Select all products, for which the price (the [Price] field) satisfies the condition (Price + 2) = 35.55 Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price add 2.00m eq 35.55m |
sub | Subtraction |
Select all products, for which the price (the [Price] field) meets the condition (Price - 2) = 35.55 Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price sub 2.00m eq 35.55m |
mul | Multiplication |
Select all products, for which the price (the [Price] field) meets the condition (Price * 2) = 35.55 Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price mul 2.00m eq 35.55m |
div | Division |
Select all products, for which the price (the [Price] field) meets the condition (Price / 2) = 35.55 Request string: GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/ProductCollection?$filter=Price div 2 eq 35.55m |
To build up complex conditions of data filter in the $filters structure, various functions may be used:
- arithmetical;
- functions of work with strings;
- functions of work with date and time;
- functions of works with objects collection.
Learn more about these functions in the "Working with bpm'online objects over the OData protocol using Http request" article.
The full list of OData protocol functions is represented in OData official specification.
Operator any
Any operator applies logic expressions to each collection of items and returns a value of true, if an expression is correct for at least one collection item. Any operator will return a true value without an argument, if the collection contains at least one item.
Example.
Select all invoices that contain at least one product with the 'SomeProductName' name.
Request string:
GET <BPMonline application address>/0/ServiceModel/EntityDataService.svc/InvoiceCollection?$filter=InvoiceProductCollectionByInvoice/any(d:d/Product/Name eq 'SomeProductName')
OData protocol data types
You should take into account data types that are filtered upon making queries. The literal character, located in the right part of a logical expression, should be of the same type as the field on the left part. The same rule applies to the use of mathematical functions. Strings, numbers, literal characters that are used in building of the expression, should have equal types of data.
Data type | Definition | Examples |
Edm.Binary |
Binary data of fixed or floating length. Entry mask: binary'[A-Fa-f0-9][A-Fa-f0-9]*' X'[Fa-f0-9][A-Fa-f0-9]*' NOTE X and binary are case-sensitive. The space should be absent between the functional word and the value.
|
Example: X'23AB' Example: binary'23ABFF' |
Edm.Boolean |
Represents logical value. Entry mask: true | false |
Example: true Example: false |
Edm.Byte |
Represents 8-byte unsigned integer value. Entry mask: [0-9]+ |
Example: 255 |
Edm.DateTime |
Represents date and time within the range from 12:00;00 midnight, January 1, 1753 A.D. to 11:59:59 P.M., December 9999 A.D. Entry mask: datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]' NOTE datetime is case-sensitive. The space should be absent between the functional word and the value. |
Example: datetime'2000-12-12T12:00' |
Edm.Decimal |
Numerical value with fixed accuracy. This type describes the value within the range from negative 10^255+1 to positive 10^255-1. Entry mask: [0-9]+.[0-9]+M|m |
Example: 2.345M |
Edm.Double |
Represents numerical value with floating point up to 15 characters. Entry mask: [0-9]+ ((.[0-9]+) | [E[+ | -][0-9]+])d |
Example: 1E+10d Example: 2.029d Example: 2.0d
|
Edm.Single |
Represents numerical value with floating point up to 7 characters Entry mask. Entry mask: [0-9]+.[0-9]+f |
Example: 2.0f |
Edm.Guid |
Represents 128-bit value, unique identifier. Entry mask: guid'dddddddd-dddd-dddd-dddd-dddddddddddd', where d — [A-Fa-f0-9] NOTE Guid is case-sensitive. The space should be absent between the functional word and the value. |
Example: guid'12345678-aaaa-bbbb-cccc-ddddeeeeffff' |
Edm.Int16 |
Represents signed 16-bit value. Entry mask: [-][0-9]+ |
Example: 16 Example: -16 |
Edm.Int32 |
Represents signed 32-bit integer value. Entry mask: [-] [0-9]+ |
Example: 32 Example: -32 |
Edm.Int64 |
Represents signed 64-bit integer value. Entry mask: [-] [0-9]+L |
Example: 64L Example: -64L |
Edm.SByte |
Represents signed 8-bit integer value. Entry mask: [-] [0-9]+ |
Example: 8 Example: -8 |
Edm.String |
Character data of floating or fixed length. Entry mask: '<any UTF-8 character>' |
Example: 'Hello OData' |