Диссертация (1090660), страница 10
Текст из файла (страница 10)
та, где ожидается число (в данном случае, год). Такой алгоритм позволяетпользователю не заострять внимание на порядке следования локаций в коде BML.Подробнее этот алгоритм разобран в разделе 2.9.Вставки, применяемые в локациях могут быть следующего вида:[set:block] — где set является именем набора, а block — именем блока. Захваченное значение из данной вставки будет проверено на соответствие своему типу данных, указанному для блока в модели, и будет использоваться при выборке экземпляранабора. Кириллические символы в URL будут транслитированы, согласно стандарту BGN/PCGN[40]. Знаки препинания, не участвующие в формировании структурыURL, а также символы латиницы будут сохранены в первозданном виде.
Остальныесимволы будут заменены на нижнее подчёркивание.[set@page] — ключевое слово page сообщает о том, что в данный шаблон будетподставлено число, которое интерпретатор задействует при выборке номера страницы множества экземпляров набора с именем set. Ключевое слово page остается вструктуре шаблона и не изменяется.[set@id] — ключевое слово id сообщает о том, что в данный шаблон будет подставлен идентификатор набора, который интерпретатор задействует при выборке изнабора с именем set.
Ключевое слово id также не изменяется.@all — определяет локацию, логика которой исполняется вместе с любыми другими локациями.Другие атрибуты локации:template — устанавливается основной шаблон для данной локации. На основе шаблона и выходных данных с помошью шаблонизатора будет сгенерирован конечныйдокумент.output — устанавливается направление потока генерируемых выходных данныхлокации. Допустимые значения: std – поток будет сгенерирован стандартно, в браузерклиент, email – поток будет сгенерирован и отправлен по указанному адресу элек-48тронной почты. В последнем случае необходимо взаимодействие с атрибутом send ублока email.allowed – задаёт перечень групп, которым разрешён доступ к данной локации. Вкачестве указания пользователя используется его численный идентификатор.disallowed – задаёт перечень групп, которым запрещён доступ к данной локации.В качестве указания пользователя используется его численный идентификатор.onsuccess — значением атрибута является URL, на который произойдёт перенаправление в случае, если операция создания, обновления или удаления хотя бы одногоили нескольких экземпляров набора выполнена успешно.
Динамические вставки допустимы двух видов: те, что уже были использованы в этой же локации в атрибутеbase, либо те, что относятся к создаваемому или изменяемому экземпляру набора. Впервом случае значение подстановки будет скопировано из значения, ранее захваченного в base. В последнем случае динамическая вставка будет заменена на значениеблока успешно изменённого или вновь добавленного экземпляра набора в данной локации. Если в обеих случаях задействован один и тот же набор, то приоритетнымявляется второй случай.
Значение none будет означать, что результат выполнения будет отправлен в ту же локацию. По умолчанию: none.onfail — то же, что и onsuccess, но перенаправление произойдёт в случае неуспешного выполнения операции. Допустимы только динамические вставки, задействованные в base. Стоит также отметить, что если перенаправление происходит в другуюлокацию (т.е. при любом значении атрибута, отличным от none), код ошибки не передаётся.
По умолчанию: none.2.4Разработка компоненты «Набор»Набор (элемент Set) является коллекцией данных различного типа. Набор идентифицируется уникальным именем, с помощью которого набор может быть определён вмодели и локации. Имя задаётся с помощью атрибута name. Зарезервированные имена начинаются с символа нижнего подчёркивания. Их использование указывает на то,что набор выполняет специализированные функции. На текущий момент это функцииавторизации.
Подробнее: 2.6.1.В контексте модели набор определяет структуру данных отдельно взятой коллекции и её отношение с другими наборами. Результатом выборки из набора являетсяодин или множество экземпляров набора. Выборка из набора осуществляется при обработке соответствующей локации, в которой задействован этот набор.49Индивидуальные критерии выборки задаются в виде атрибутов-модификаторов вкаждой из локаций, где используется данный набор. Большинство из этих атрибутовмогут быть заранее определены в модели.
В таком случае, эти атрибуты будут общимидля всех локаций, если не будут переопределены индивидуально в любой из них.Результат выборки данных — экземпляры набора — отправляется в шаблонизатор.Внутри элемента набора могут быть только блоки, являющиеся непосредственнымиего составляющими. Атрибуты набора указаны в таблице 2.1.Таблица 2.1. Атрибуты набораАтрибутОписаниеПоПрименениеумолч.actУказывает на действие, которое необходимо применить для данного экзем- readModel,пляра набора или нескольких наборов: создать, выбрать, обновить, удалить,Locationавторизовать, выйти (последние два для авторизационного набора см. 2.6.1).Возможные значения: create, read, update, delete, auth, logout, либо @input.В случае указания последнего, значение атрибута будет считываться из пользовательских данных.actaliasУказывает синоним атрибута act при приёме данных извне.НетModel,LocationКлонирует набор, указанный в атрибуте.
В модели может применяться толь- noneModel,ко для дочерних наборов, которые, по сути, являются одними и теми же на-Locationборами с одинаковыми данными. Если применяется в локации, создаёт клоннабора с теми же самыми атрибутными характеристиками. Однако все атрибуты, указанные в клонируемом наборе, переопределят атрибуты, которые былиунаследованы от исходного набора.funcУказывает через запятую перечень дополнительных функций при выборке на- selectModel,бора.
Возможные значения: select — осуществляется выборка, count — осу-Locationществляется подсчёт количества экземпляров набора, author – осуществляетсявыборка информации о создателе набора.продолжение следует50clone(продолжение)АтрибутОписаниеПоПрименениеумолч.limitОграничивает максимальное количество экземпляров набора из выборки.
Как 0Model,правило, применяется вместе с соответствующим свойством постраничногоLocationвывода в атрибуте base родительского элемента Location.nameУникальное имя набора, идентифицирующее его в модели и локации. Состоит НетModel,из символов латинского алфавита, цифр и нижнего подчёркивания. Зарезерви-Locationрованные имена: _users, _groups.nameskipModel,чено, 0 — выключено.LocationУказывает явно идентификатор набора, который необходимо задействовать в НетModel,выборке. Возможные данные: числовой идентификатор или @input. В случаеLocationуказания последнего, значение атрибута будет считываться из пользовательских данных.idaliasУказывает синоним атрибута id при приёме данных извне.НетModel,Locationпродолжение следует51idДопускает не указывать имя набора при передаче данных на сервер.
1 — вклю- 0(продолжение)АтрибутОписаниеПоПрименениеумолч.orderУпорядочивает выборку экземпляров набора по соответствующим блокам. noneModel,Значением атрибута являются пары «название блока» «упорядочивание» раз-Locationделённые запятой. Упорядочивание может быть по возрастанию (ASC), по убыванию (DESC) или случайным (RAND). В последнем случае применяется каксамостоятельное значение без указания имени блока и других пар.
Если типупорядочивания не указан после имени блока, считается, что такой блок будетупорядочиваться по возрастанию. Пример: rating DESC, name ASC.parentidModel,выборке. Возможные данные: числовой идентификатор или @input. В случаеLocationуказания последнего, значение атрибута будет считываться из пользовательских данных.parentidaliasУказывает синоним атрибута parentid при приёме данных извне.НетModel,LocationrelationОтношение вложенного набора к родителю. Указывает на то, где находится parentModelпервичный ключ отношения: у родителя (значение parent), у потомка (значение child) или у обоих (связь «многие ко многим», значение multi).
Связующаятаблица множественной связи создаётся интерпретатором автоматически.продолжение следует52Указывает явно идентификатор родителя, который необходимо задействовать в Нет(продолжение)АтрибутОписаниеПоПрименениеумолч.trashПри включении указывает на то, что при удалении экземпляры набора будут 0Model,не удаляться физически, а помечаться, как удаляемые. 1 — включено, 0 — вы-Locationключено.validactУказывает через запятую перечень действий, допустимых для данного набора.
create,Model,Возможные значения: create, read, update, delete.Locationread,update,delete53542.5Разработка компоненты «Блок»Блок (элемент Block) является непосредственной частью набора и представляетсобой определённый тип данных. Тип данных может быть как элементарным, таки представлять собой сложную структуру, в том числе осуществляющей функциифайловой обработки. В методике BlockSet блок при любых обстоятельствах обладает свойством атомарности. Предварительное объявление блока у соответствующегонабора в модели также является обязательным, как и объявление самого набора.Условно, набор представляет собой таблицу в базе данных, а блок — поле в этойтаблице. Отличие в том, что блок может обрабатывать сложные данные, оставаясьпри этом элементарной сущностью в контексте методики BlockSet.
В некоторых случаях блок может брать на себя обработку сложных типов и структур, которые неограничиваются лишь одним полем, а также работать с файлами. Кроме того, блоквыполняет функцию валидации данных. Именно внутри блока происходит проверкана соответствие входных данных своему типу.
Блоку каждого типа может соответствовать разный набор атрибутов. Это особенность методики.2.5.1Классифицирование блоковБлоки делятся на три категории: базовые, составные и файловые.Базовые блоки являются косвенным эквивалентом типов, применяемых в базахданных, однако в них заложен более высокий уровень абстракции, Например, этовыражается в том, что размерность типа не указывается напрямую, а вычисляется наоснове косвенных факторов и атрибутов.Составные блоки основаны на базовых. Такие типы содержат в своей архитектуре сложные структуры и усложненные алгоритмы валидации данных, в базе данныхможет применяться дополнительная таблица для представления.
Разделение блоковна базовые и составные весьма условно, т.к. с точки зрения конечного пользователяразница заметна лишь по косвенным критериям.Файловые (мультимедийные) блоки задают правила работы с обычными файламиили со специфическими документами, поддерживаемыми системой.2.5.2Разработка атрибутов блокаАтрибуты, представленные в таблице 2.2, могут быть применены абсолютно ковсем блокам. Данные атрибуты являются универсальными.55Атрибуты подразделяются на входные и выходные. Входные атрибуты применяются в контексте модели или локации. Если атрибут допустимо применять в обеихсущностях, то значение атрибута, указанное в локации, имеет высший приоритет ипереопределяет значение, указанное в модели.