Абриаль 2.1 Начало Выше Дальше28/09/04 А.И.Пацкин [packin.ru]
[ Разработка веб-интерфейса ] Abrial DDL ] Конструирование БД ] Ассоциации ] Правила. Продукционное программирование ] Схема ядра ]

Разработка веб-интерфейса

Абрис 1 - Руководство ] Примитивы Абриса ] Операции - справочник ] Справочник примитивов Абриса ]


 Главная цель и смысл работы - кардинально, т.е. на несколько порядков упростить и сократить затраты на организацию связи Интернет-СУБД. И во-вторых: создать единый унифицированный интерфейсный аппарат для локальной, и для удаленной работы с базами данных.


Два главных новых понятия "веб-шаблон" и "мета-тег". Веб-шаблон - текстовый файл в формате HTML (расширение по умолчанию тоже "htm"), т.е. страница или часть страницы, включающая кроме обычного текста и тегов еще и "метатеги" (см. ниже). Из веб-шаблонов динамически компонуется страничка, выдаваемая пользователю. Мета-тег отличается от обычного тега знаком # сразу за открывающей угловой скобки. Метатеги заменяются (примерно как SSI или ASP) на изображения элементов базы данных, других веб-шаблонов, и некоторых встроенных примитивов, таких как текущая дата и т.п..

Общее описание архитектуры.

  • Архитектура напоминает SSI (Server Side Includes). Главное отличие - полная интеграция с конкретной БД, т.е. в текст страницы динамически вставляются в основном элементы БД. И еще важнее то, что странички сразу же получаются навигационными при минимальном или даже нулевом знании веб-дизайнера о структуре БД. Т.е., имея любую БД, про которую дизайнер не имел ни малейшего представления мы, тем не менее, сразу же имеем навигационный сайт для просмотра (а в перспективе и для изменения) этой БД. Дизайнер (веб-шаблонов) может постепенно узнавать что-то про данные. Это знание касается только имен классов и аспектов (в смысле Абриаля, "аспект" - это некое обобщение понятия "атрибут", "свойство"). По мере узнавания данных, странички могут становиться более красивыми, разнообразными, дружественными и лучше организованными. Но изначально никакого знания про данные не требуется.
  • Второе: одна и та же система работает для серверного (CGI) варианта и для обычного настольного/локального варианта работы с БД. Для крайнего пользователя сходство в том, что он в обоих случаях работает с броузером: в случае серверного варианта он пользуется стандартным броузером (не обязательно даже IE, если не используются его уникальные примочки, и не обязательно из под Windows), а в локальном варианте он работает с MS IE в окне программы Абриаль. Причем в локальном варианте этот встроенный броузер обновляется вместе с Windows или с установкой его новой версии. Для дизайнера/разработчика сходство в том, что как серверном, так и в локальном варианте работает один и тот же набор веб-шаблонов и используется одна и та же БД. Итак: разница между локальным и удаленным вариантом, как для пользователя, так и для разработчика абсолютно прозрачна. (Если, конечно, не считать того, что в локальном варианте в дополнение к гипертексту имеется мощный аппарат гипертаблиц и гипердеревьев, которым разработчик или продвинутый пользователь может эффективно строить или изменять БД).
  • Третье - всякое программирование со странички убирается и переносится, если и насколько оно нужно, внутрь активной базы данных. Это принципиальный момент. Мне кажется, что можно и нужно стремиться к полной ликвидации скриптов в страничках. Тот минимум, который нужен для организации странички, например нумерация строчек таблиц, подсчет сумм в столбцах таблиц и другие элементы а-ля генератор отчетов, должны быть обеспечены аппаратом мета-тегов/веб-шаблонов. Этот аппарат по сути не стремится играть роль языка программирования, это всего лишь набор "макросов", играющий роль генератора страничек отчетов. Все расчеты касающиеся существа данных, должны по идее проводиться внутри самой БД её встроенными средствами.
  • Если кто-то так любит скрипты, что жить без них не может, то возможен вариант, чтобы мета-теги вставлялись внутрь скриптов или более общо - внутрь других нестандартных тегов, (например, тегов ASP, хотя с ASP вопрос неясный: как совмещаются ASP и CGI я не изучал, а данная технология основана на CGI).

Как работают веб-шаблоны

В штатном режиме (от которого м.б. возможны редкие отклонения) одна страничка пользователя соответствует одному объекту БД. На страничке располагается вся информация по объекту в том числе и в основном всевозможные связи с другими объектами. Эти связи изображаются и работают на страничке как обычные HTML ссылки. Клик по такой ссылке открывает страничку смежного объекта и т.д. Объекты терминальные, т.е. обычные строчные и текстовые значения видны на странице в своём натуральном виде. В перспективе их можно будет редактировать как поля форм.

В начале пользователю может быть показан набор классов, доступных для данной категории пользователей. Это парадный вход. Раскрыв данный класс пользователь видит список объектов. Выбрав один из объектов, пользователь начинает навигацию.

Что происходит внутри.

Объект на страничке представлен своей "кодовой ссылкой", т.е. специфическим урлом. В серверной версии это вызов CGI программы с параметрами. В локальной - это вызов некого несуществующего урла определенного вида, который перехватывается оболочкой. Кстати, на страничке могут быть обычные урлы, которые обрабатываются стандартным образом. Но один раз перейдя по такому урлу, пользователь далее работает в "обычном интернете". Вновь в среду Абриаля его может оттуда перевести некий специфический урл.

Специальный урл обычно определяет следующие вещи: 1) Базу данных Абриаля, 2)Класс объекта 3) Имя объекта 4) вместо 2 и 3 может быть числовой ид объекта. 5) Для "больших" объектов, может быть указан аспект, и/или точка сканирования "длинного" аспекта. Например длинный список слов в словаре может быть разбит на куски приемлемого размера. В зависимости от БД, класса, аспекта и пользователя выбирается начальный веб-шаблон. Если нет специального шаблона для данного класса или данной БД - берется "общий", т.е. универсальный для всех БД и классов. Наличие "общих" шаблонов позволяет просматривать в режиме навигации практически любую заранее неизвестную БД.

Как устроен веб-шаблон?

В нём могут быть вставки, например такие:

<#HEADER>

... некий текст

<#FOOTER>

Здесь HEADER и FOOTER - имена других шаблонов, задающих одинаковые, т.е. стандартные начало и окончание странички, для нескольких однотипных шаблонов. Т.е. здесь мы видим, что вставить один шаблон в другой очень просто: нужно только использовать имя вставляемого шаблона в качестве имени мета-тега внутри вызывающего шаблона. Эти вставки похожи на вызовы функций (или макросов). Тем более, что при этих "вызовах/вставках" можно использовать параметры.

Например, есть такой мета-тег:

<#MACRO1 A="QWERTY" N=123>

Тогда в этом месте вставляется текст шаблона MACRO1, а внутри этого текста все метатеги <#A> будут заменяться на QWERTY, а все <#N> - на 123.

Значения параметров можно использовать в значениях атрибутов тегов и метатегов. Например, внутри MACRO1 можно вызывать другой шаблон с переменным значением атрибута.

<#MACRO2 X=<#N>>

Итак, чему может соответствовать имя мета-тега:

  1. Имени вставляемого шаблона
  2. Имени параметра, заменяемого на значение в вызывающем шаблоне.
  3. Имени некоторого примитива.

За счет мета-тегов с именами примитивов, вставляются элементы баз данных. Перечислим стандартные (примитивные) мета-теги.

  • <#OBJFORM> - отображает текущий объект в виде стандартной таблицы
  • <#ASPECT A="..." [ O="..."  D=""]> - отображает значение аспекта A либо одиночное, либо список, либо таблицу, в зависимости от типа аспекта. Объект берется по умолчанию текущий или тот, что задан именем O. Можно задать также другую, отличную от текущей базу данных параметром B. Объект нужно задать ид-ом в форме 4567.
  • <#NAME> - имя объекта
  • <#OBJ> - числовой ид текущего объекта например #123
  • <#CLASS> - имя класса текущего объекта
  • <#DBASE> - имя файла текущей БД. .
  • .... и т.д. список должен быть довольно длинный, но пока работает это.

Как "открыть" новую БД? Нужно в урле задать файл с одним из стандартных расширений Абриаля. (AB,AW,AM). По умолчанию происходит вход в таблицу классов (парадный вход) базы данных.

.... to be continued...


Все права защищены. © 2000-2004 РосНИИ ИИ
http://artint.ru
Copyright. © 2000-2004 by RRIAI
Александр Иосифович Пацкин [mailto:aleksandr@tochka.ru].
28/09/04

К началу документа.