Бинарные выражения ConstraintComparison
Бинарные выражения представляют собой простые конструкции: имя элемента определяет выполняемую операцию, Field – имя поля, Value – значение.
Поддерживаемые операции: § EQUAL – равно, § GREAT – больше, § LESS – меньше, § LIKE – похожесть. Как правило, преобразуется в SQL-оператор LIKE, хотя в будущих версиях возможно использование полнотекстового поиска, § NOTEQUAL – не равно, § NOTGREAT – не больше, § NOTLESS – не меньше, § IN – значение содержит список фиксированных значений через запятую. Унарные выражения ConstraintAttribute Унарных выражений всего 2: ISNOTNULL и ISNULL – проверка на наличие и отсутствие значения. Пользовательский фильтр ConstraintFilter Фильтр – это ограничение на выборку данных, предварительно подготовленное и сохраненное пользователем или администратором в базе данных LanDocs. Технически он представляет собой законченное параметризованное выражение, которое может быть подставлено в условие WHERE.
ConstraintFilterPARAMETER Структура предназначена для передачи параметров в фильтр.
Подзапрос INQUERY Подзапрос позволяет ограничить выборку записей, значения поля в которых входят в набор значений, выбранных из другого объекта. Это условие, как правило, транслируется в SQL-конструкцию: WHERE Field IN (select ObjectField from ObjectName where CONSTRAINTS)
Описание параметра Constraint
В параметре constraint должна передаваться строка, содержащая xml вида: <CONSTRAINTS> ограничение ограничение … </CONSTRAINTS> Здесь ограничение – либо фильтр, либо простое_ограничение, либо ограничение_INQUERY, либо группа ограничений, заключенных в теги <AND>, <OR>, <NOT>. Формат фильтра (применяет фильтр LanDocs с заданным идентификатором): <FILTER filterID=«идентификатор_фильтра»> <PARAMETERS> <PARAMETER name=«имя_параметра» value=«значение» /> <PARAMETER name=«имя_параметра» value=«значение» /> … </PARAMETERS> <FILTER> В качестве значения здесь и далее можно также использовать одно из специальных значений:
Формат ограничения_INQUERY (порождает в SQL запросе условие IN с вложенным запросом вида «… IN (SELECT …)»): <INQUERY field=«атрибут» objectName=«объект» objectField=«атрибут_объекта»> <CONSTRAINTS> ограничение ограничение … </CONSTRAINTS> </INQUERY> Здесь атрибут – это наименование атрибута бизнес-объекта, объект – наименование бизнес-объекта вложенного запроса, атрибут_объекта – наименование атрибута бизнес-объекта вложенного запроса. Соответствие полей таблиц в БД и атрибутов бизнес-объектов системы задается в репозитории. Назначение и использование репозитория описано в разд. 4 настоящего документа.
Форматы простых_ограничений (они порождают соответствующие условия в SQL-запросе): <EQUAL field=«атрибут» value=«значение» /> <NOTEQUAL field=«атрибут» value=«значение» /> <LESS field=«атрибут» value=«значение» /> <NOTLESS field=«атрибут» value=«значение» /> <GREAT field=«атрибут» value=«значение» /> <NOTGREAT field=«атрибут» value=«значение» /> <LIKE field=«атрибут» value=«значение» /> <NOTLIKE field=«атрибут» value=«значение» /> <ISNULL field=«атрибут» value=«значение» /> <ISNOTNULL field=«атрибут» value=«значение» /> <IN field=«атрибут» value=«значение1,значение2,значение3,…» /> Здесь атрибут – это наименование атрибута бизнес-объекта. Соответствие полей таблиц в БД и атрибутов бизнес-объектов системы задается в репозитории. Назначение и использование репозитория описано в разд. 4 настоящего документа. Форматы AND-, OR- и NOT-ограничений (они порождают соответствующие условия в SQL-запросе): <AND> ограничение ограничение … </AND>
<OR> ограничение ограничение … </OR>
<NOT> ограничение </NOT> Примеры xml-строк ограничений: § Выбрать документы с одним прикрепленным файлом: <CONSTRAINTS> <EQUAL field=«VersionCount» value=«1» /> </CONSTRAINTS> § Выбрать документы за первую половину 2008 года: <CONSTRAINTS> <GREAT field=«RegistrationDate» value=«1.01.2008» /> <LESS field=«RegistrationDate» value=«1.08.2008» /> </CONSTRAINTS> § Выбрать документы с заданными ID: <CONSTRAINTS> <IN field=«ID» value=«340255,340256,340599» /> </CONSTRAINTS>
Комментарии к использованию сервисов В данном разделе описаны особенности и соглашения при использовании сервисов. OpenInstruction Опции OpenMode Массив опций OpenMode позволяет балансировать между подробностью заполнения полей структуры InfstructionInfo и производительностью. Описание всех опций приведено в таблице ниже. Априори можно считать, что пустой массив OpenMode обладает самой высокой производительностью, а флаг All заполняет все возможные поля, но при этом является наиболее тяжелым для системы.
Чтение отчетов
OpenInstruction может быть использован для чтения отчетов, но с небольшими ограничениями: разрешен только режим OpenMode.All или OpenMode.Basic (или его эквивалент). Эта функциональность предназначена для случаев, когда приложение знает только идентификатор сущности, а ее тип неизвестен. Режим OpenMode.All В режиме OpenMode.All будет выполнено наиболее точное отображение полей отчета на структуру поручения. В частности, будут переданы (если есть) прикрепленный документ, файлы и подписи. Режим OpenMode.Basic В этом режиме (или для его эквивалента – при пустом массиве режимов) будут возвращены только основные свойства, которые совпадают для поручения и отчета. Остальные режимы Поскольку структуры отчета и поручения хотя и похожи, но все-таки отличаются, то попытка воспользоваться оптимизирующими параметрами, используя неправильный метод, будет приводить к исключению типа InvalidArgumentFault. CreateProject Идентификаторы файлов Для поручений с прикрепленным документом можно ограничить доступ к отдельным файлам для исполнителей. Эти ограничения задаются с помощью массива FileVersion и флага ExactFileList в структуре UpdateSingleInstructionData.
Примечание к версии 3.0.2 На момент написания данного раздела (сборка 3.0.2.20) нельзя задать различные списки версий файлов для разных соисполнителей. Список файлов читается только из данных MainInstruction. В будущих релизах это будет исправлено. Для корректной работы приложения с будущими версиями web-сервисов необходимо дублировать массив FileVersion и флаг ExactFileList для каждого соисполнителя. UpdateProject Идентификаторы файлов При обновлении проекта используются те же соглашения, что и при создании проекта поручения. TakeInWork и AcceptReport Подписи операций хотя и передаются, но не сохраняются, так как на данный момент такой режим не поддерживается объектом INSTRUCTION. ReadFolderObjects Явное задание порядка сортировки не реализовано и переданные данные не обрабатываются.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|