DataService. Фильтрация данных
Glossary Item Box
Общие положения
Во время выполнения операций службы DataService часто необходимо выполнять фильтрацию данных. Так, например, при чтении записей раздела необходимо произвести выборку только тех записей, которые соответствуют определенному критерию или нескольким критериям. Для формирования этих критериев в приложении bpm'online предусмотрен класс Filters.
Класс Filters
Класс Filters определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract библиотеки классов Terrasoft.Nui.ServiceModel.dll. Для простоты восприятия иерархическую структуру фильтра Filters удобно представить в формате объекта JSON:
"Filters":{ "RootSchemaName":["Название корневой схемы"], "FilterType":[Тип фильтра], "ComparisonType":[Тип сравнения], "LogicalOperation":[Логическая операция], "IsNull":[Признак проверки на заполненность], "IsEnabled":[Признак активности], "IsNot":[Признак использования оператора отрицания], "SubFilters":[Фильтры подзапроса], "Items":[Коллекция группы фильтров], "LeftExpression":[Выражение, подлежащее проверке], "RightExpression":[Выражение фильтрации], "RightExpressions":[Массив выражений фильтрации], "RightLessExpression":[Начальное выражение диапазона фильтрации], "RightGreaterExpression":[Конечное выражение диапазона фильтрации], "TrimDateTimeParameterToDate":[Признак отсекания времени для параметров типа дата/время], "Key":["Ключ фильтра в коллекции фильтров"], "IsAggregative":[Признак агрегирующего фильтра], "LeftExpressionCaption":["Заголовок выражения, подлежащего проверке"], "ReferenceSchemaName":["Название ссылочной схемы"] }
Основные свойства класса Filters и их возможные значения представлены в таблице 1.
Табл. 1. — Свойства класса Filters
Свойство | Тип | Описание | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
RootSchemaName | string | Строка, содержащая название корневой схемы объекта добавляемой записи. | |||||||||||||||||||||
FilterType | FilterType |
Тип фильтра. Задается значением перечисления FilterType пространства имен Terrasoft.Nui.ServiceModel.DataContract. Значения перечисления FilterType:
|
|||||||||||||||||||||
ComparisonType | FilterComparisonType |
Тип операции сравнения. Задается значением перечисления FilterComparisonType пространства имен Terrasoft.Core.Entities. |
|||||||||||||||||||||
LogicalOperation | LogicalOperationStrict | Логическая операция. Тип не допускает значение None, определен в перечислении LogicalOperationStrict пространства имен Terrasoft.Common. | |||||||||||||||||||||
IsNull | bool | Признак проверки на заполненность проверяемого выражения. | |||||||||||||||||||||
IsEnabled | bool | Признак того, что фильтр активен и будет учитываться при построении запроса. | |||||||||||||||||||||
IsNot | bool | Определяет, использовать ли логический оператор отрицания. | |||||||||||||||||||||
SubFilters | Filters | Фильтры подзапроса. Не могут содержать фильтры с другими подзапросами. | |||||||||||||||||||||
Items | Dictionary<string, Filter> | Коллекция, содержащая группу фильтров. | |||||||||||||||||||||
LeftExpression | BaseExpression | Выражение в левой части сравнения, т.е. выражение, подлежащее проверке. Класс BaseExpression определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. | |||||||||||||||||||||
RightExpression | BaseExpression | Выражение фильтрации, которое будет сравниваться с выражением, содержащимся в свойстве LeftExpression. | |||||||||||||||||||||
RightExpressions | BaseExpression[ ] | Массив выражений, которые будут сравниваться с выражением, содержащимся в свойстве LeftExpression. | |||||||||||||||||||||
RightLessExpression | BaseExpression | Начальное выражение диапазона фильтрации. | |||||||||||||||||||||
RightGreaterExpression | BaseExpression | Конечное выражение диапазона фильтрации. | |||||||||||||||||||||
TrimDateTime |
bool | Признак, указывающий отсекать ли время для параметров типа дата-время. | |||||||||||||||||||||
Key | string | Ключ фильтра в коллекции фильтров Items. | |||||||||||||||||||||
IsAggregative | bool | Признак того, что фильтр является агрегирующим. | |||||||||||||||||||||
LeftExpressionCaption | string | Заголовок левой части сравнения. | |||||||||||||||||||||
ReferenceSchemaName | string | Имя схемы объекта, на которую ссылается левая часть фильтра, если тип колонки — справочник. |
Класс BaseExpression является базовым классом выражений. Он определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract библиотеки Terrasoft.Nui.ServiceModel. Свойства экземпляра этого класса заполняются в зависимости от свойства ExpressionType, которое и задает тип выражения. Полный перечень свойств класса BaseExpression приведен в табл. 2.
Табл. 2. — Основные свойства класса BaseExpression
Свойство | Тип | Описание | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ExpressionType | EntitySchemaQuery |
Тип выражения, определяющий значение, которое будет содержаться в добавляемой колонке. Задается значением перечисления EntitySchemaQueryExpressionType пространства имен Terrasoft.Core.Entities, определенного в библиотеке классов Terrasoft.Core. Для InsertQuery устанавливается значение EntitySchemaQueryExpressionType.Parameter. Значения перечисления EntitySchemaQuery
|
||||||||||||||||||||||||
ColumnPath | string | Путь к колонке относительно корневой схемы. Правила построения путей см. в статье "Использование EntitySchemaQuery для построения запросов к базе данных". | ||||||||||||||||||||||||
Parameter | Parameter |
Определяет значение, которое будет содержаться в добавляемой колонке. Имеет тип Parameter, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. |
||||||||||||||||||||||||
FunctionType | FunctionType |
Тип функции. Задается значением из перечисления FunctionType, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. Значения перечисления FunctionType:
|
||||||||||||||||||||||||
MacrosType | EntitySchemaQuery |
Тип макроса. Задается значением перечисления EntitySchemaQueryMacrosType, определенного в пространстве имен Terrasoft.Core.Entities. |
||||||||||||||||||||||||
FunctionArgument | BaseExpression | Аргумент функции. Принимает значение, если функция определена с параметром. Класс BaseExpression определен в пространстве имен Terrasoft.Nui.ServiceModel.DataContract, является предком для класса ColumnExpresion и имеет такой же набор свойств. | ||||||||||||||||||||||||
DatePartType | DatePart |
Часть даты. Задается значением из перечисления DatePart, определенного в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. Значения перечисления DatePart:
|
||||||||||||||||||||||||
AggregationType |
AggregationType | Тип агрегирующей функции. Задается значением из перечисления AggregationType, определенного в пространстве имен Terrasoft.Common, определенного в библиотеке классов Terrasoft.Common. | ||||||||||||||||||||||||
AggregationEvalType | AggregationEvalType | Область применения агрегирующей функции. Задается значением из перечисления AggregationEvalType, определенного в пространстве имен Terrasoft.Core.DB, определенного в библиотеке классов Terrasoft.Core. | ||||||||||||||||||||||||
SubFilters | Filters | Коллекция фильтров вложенных запросов. Имеет тип Filters, определенный в пространстве имен Terrasoft.Nui.ServiceModel.DataContract. |
Подробно об использовании фильтров в клиентской части изложено в статье "Класс EntitySchemaQuery. Работа с фильтрами". Далее рассматривается пример использования фильтров в запросах к службе DataService из стороннего приложения.