Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Бинарные выражения ConstraintComparison




Бинарные выражения представляют собой простые конструкции: имя элемента определяет выполняемую операцию, Field – имя поля, Value – значение.

Название поля Тип Описание
Field String Поле в исходной сущности, т.е. той, к которой это ограничение применяется
Value String Значение второго операнда

 

Поддерживаемые операции:

§ EQUAL – равно,

§ GREAT – больше,

§ LESS – меньше,

§ LIKE – похожесть. Как правило, преобразуется в SQL-оператор LIKE, хотя в будущих версиях возможно использование полнотекстового поиска,

§ NOTEQUAL – не равно,

§ NOTGREAT – не больше,

§ NOTLESS – не меньше,

§ IN – значение содержит список фиксированных значений через запятую.

Унарные выражения ConstraintAttribute

Унарных выражений всего 2: ISNOTNULL и ISNULL – проверка на наличие и отсутствие значения.

Пользовательский фильтр ConstraintFilter

Фильтр – это ограничение на выборку данных, предварительно подготовленное и сохраненное пользователем или администратором в базе данных LanDocs. Технически он представляет собой законченное параметризованное выражение, которое может быть подставлено в условие WHERE.

Название поля Тип Описание
FilterID Int Идентификатор фильтра
PARAMETERS ConstraintFilterPARAMETER[] Массив параметров для подстановки в тело фильтра

ConstraintFilterPARAMETER

Структура предназначена для передачи параметров в фильтр.

Название поля Тип Описание
Name String Имя параметра
Value String Значение параметра

Подзапрос INQUERY

Подзапрос позволяет ограничить выборку записей, значения поля в которых входят в набор значений, выбранных из другого объекта. Это условие, как правило, транслируется в SQL-конструкцию:

WHERE Field IN (select ObjectField from ObjectName where CONSTRAINTS)

Название поля Тип Описание
Field String Поле в исходной сущности, т.е. в той, к которой это ограничение применяется
ObjectField String Имя поля (атрибута) во внешней сущности, входящей во вложенный SELECT
ObjectName String Имя внешней сущности
CONSTRAINTS ConstraintGroups Ограничение, накладываемое на записи внешней сущности

Описание параметра Constraint

В параметре constraint должна передаваться строка, содержащая xml вида:

<CONSTRAINTS>

ограничение

ограничение

</CONSTRAINTS>

Здесь ограничение – либо фильтр, либо простое_ограничение, либо ограничение_INQUERY, либо группа ограничений, заключенных в теги <AND>, <OR>, <NOT>.

Формат фильтра (применяет фильтр LanDocs с заданным идентификатором):

<FILTER filterID=«идентификатор_фильтра»>

<PARAMETERS>

<PARAMETER name=«имя_параметра» value=«значение» />

<PARAMETER name=«имя_параметра» value=«значение» />

</PARAMETERS>

<FILTER>

В качестве значения здесь и далее можно также использовать одно из специальных значений:

§ %Year% текущий год;
§ %SessionID% идентификатор текущей сессии LanDocs;
§ %UserID% идентификатор текущего пользователя;
§ %UserIDWithRoles% список идентификаторов ролей текущего пользователя (как правило, для проверки прав);
§ %DepartmentID% идентификатор департамента текущего пользователя;
§ %AccessLevel% уровень доступа текущего пользователя.

Формат ограничения_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 заполняет все возможные поля, но при этом является наиболее тяжелым для системы.

Опция Назначение
Basic Включать только базовые атрибуты в выходные данные. Это значение используется, чтобы задать минимальный набор данных. Даже если этот атрибут не указан, результат все равно будет содержать базовые поля
Documents Включать ли детали по прикрепленному документу в выходные данные
Files Включать ли подробную информацию о файлах в возвращаемый результат
ESigns Включать ли информацию о цифровой подписи в возвращаемые данные
CoExecutors Включать ли в результат поручения для соисполнителей. Если флаг указан, а у пользователя нет прав на просмотр данных по соисполнителям, то будет сгенерированного исключение AccessDenied, даже если выставлен флаг All. Если указан флаг All, а флаг CoExecutors не указан, то будут возвращены только те поручения, к которым пользователь имеет доступ
Report Выполняет поиск отчета и заполняет поле ReportID
All Максимально подробная информация. Если указан этот атрибут, то все остальные игнорируются, считаются включенными. Если этот флаг – единственный, и пользователь имеет право на общий доступ к поручению, но не имеет права на какие-то части (например, на поручения соисполнителей), то будут возвращены только те части, на которые пользователь имеет право, без генерации исключений

Чтение отчетов

OpenInstruction может быть использован для чтения отчетов, но с небольшими ограничениями: разрешен только режим OpenMode.All или OpenMode.Basic (или его эквивалент). Эта функциональность предназначена для случаев, когда приложение знает только идентификатор сущности, а ее тип неизвестен.

Режим OpenMode.All

В режиме OpenMode.All будет выполнено наиболее точное отображение полей отчета на структуру поручения. В частности, будут переданы (если есть) прикрепленный документ, файлы и подписи.

Режим OpenMode.Basic

В этом режиме (или для его эквивалента – при пустом массиве режимов) будут возвращены только основные свойства, которые совпадают для поручения и отчета.

Остальные режимы

Поскольку структуры отчета и поручения хотя и похожи, но все-таки отличаются, то попытка воспользоваться оптимизирующими параметрами, используя неправильный метод, будет приводить к исключению типа InvalidArgumentFault.

CreateProject

Идентификаторы файлов

Для поручений с прикрепленным документом можно ограничить доступ к отдельным файлам для исполнителей. Эти ограничения задаются с помощью массива FileVersion и флага ExactFileList в структуре UpdateSingleInstructionData.

Значение флага ExactFileList Поведение фунций CreateProject/UpdateProject
False Это режим означает, что функции обновления поручения могут подобрать наилучшее поведение, например: § если список файлов не задан, то будут автоматически прикреплены все последние версии файлов из прикрепленного документа; § если список файлов задан, то они будут прикреплены к поручению. В будущем, возможно, они автоматически будут обновлены до последних версий
True Никакой обработки не выполняется, получателю предоставляется доступ только к версиям файлов, перечисленным в массиве FileVersion. Используйте этот флаг, если: § нужен полный контроль над сохраняемыми данными, например, если файлы подписываются или шифруются; § вы хотите быть максимально уверены в поведении программы с будущими версиями сервисов

Примечание к версии 3.0.2

На момент написания данного раздела (сборка 3.0.2.20) нельзя задать различные списки версий файлов для разных соисполнителей. Список файлов читается только из данных MainInstruction. В будущих релизах это будет исправлено. Для корректной работы приложения с будущими версиями web-сервисов необходимо дублировать массив FileVersion и флаг ExactFileList для каждого соисполнителя.

UpdateProject

Идентификаторы файлов

При обновлении проекта используются те же соглашения, что и при создании проекта поручения.

TakeInWork и AcceptReport

Подписи операций хотя и передаются, но не сохраняются, так как на данный момент такой режим не поддерживается объектом INSTRUCTION.

ReadFolderObjects

Явное задание порядка сортировки не реализовано и переданные данные не обрабатываются.


Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...