Реализация eql-поиска по документу
Примечание
Перед началом работы со сценариями рекомендуется ознакомиться со стандартами написания программного кода на языке C#.
Рассмотрим вариант реализации eql-поиск для документа.
Для примера возьмем документ Файл и добавим в него атрибут EQLStr типа Строка (рис. 1), на вкладке Дополнительно установим признак Участвуем в поиске (фильтре) (Рис. 1).
Рис. 1. Окно создания свойства. Вкладка "Общие"
Рис. 2. Окно создания свойства. Вкладка "Дополнительно"
В модуль сценариев добавим новый класс:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | public class FileManager: DocumentManager <IFileConfigExt, long > { public static FileManager Instance { get { return Locator.GetServiceNotNull <FileManager> (); } } public override void SetupFilter (ICriteria criteria, IEntityFilter filter) { var eqlDocExtFilter = filter as IFileConfigExtFilter; if (eqlDocExtFilter! = null ) { if (! String.IsNullOrEmpty (eqlDocExtFilter.EQLStr)) SetupFilterQuery (criteria, eqlDocExtFilter.EQLStr); } base .SetupFilter (criteria, filter); } } |
И добавим:
1 2 3 | using EleWise.ELMA.Documents.Models; using EleWise.ELMA.Documents.Managers; using NHibernate; |
После публикации документа и перезапуска сервера в фильтре документа Файл появится поле EQLStr (Рис. 3), в котором можно ввести eql-запрос.
Рис. 3. Поле EQLStr в фильтре документа "Файл"
Примечания
- В данной реализации конструктор eql-запросов будет не доступен.
- Данный функционал реализует eql-поиск только для одного типа документа (для наследников он работать не будет).