#354">
Архивы: по дате | по разделам | по авторам

Автоматизация хаоса-2

Архив
автор : Андрей Акопянц   08.08.2000

Продолжение. Начало в #354

Продолжение. Начало в #354


Интерфейсные объекты и метафоры

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

Окно - окно в смысле Windows. Каждое окно в каждый момент времени содержит либо таблицу, либо форму. Окна могут быть модальными (то есть не допускать выполнения операций в других окнах приложения, пока это окно не закрыто) и немодальными, последние могут быть зависимыми - то есть их содержимое может зависеть от действий, выполняемых в других окнах, и обновляться автоматически.

Таблица содержит информацию об упорядоченной совокупности однородных записей, обычно по строке на запись. Атрибутам записи соответствуют колонки таблицы. Таблица обычно используется для просмотра, реже - для редактирования. Некоторая запись таблицы обычно является текущей, и доступна навигация по записям (изменение текущей позиции) - перемещения вверх/вниз, на первую/последнюю. Часто реализуется специализированный поиск либо по набору первых букв, либо по полному значению поискового поля.

Иногда таблицы снабжают специальными панелями управления, позволяющими фильтровать записи и управлять их порядком. Порой сортировку выносят на шапку таблицы (клик на шапке поля вызывает сортировку по нему).

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

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

Подформа позволяет включить в форму в качестве ее элемента таблицу. Подформы обычно используют для работы с множественными атрибутами и отношениями.

Query By Form (QBF). Для любой совокупности записей очень полезно обеспечить унифицированную возможность отбора из нее подмножества, удовлетворяющего заданным пользователем критериям и упорядоченного указанным способом.

Эти критерии удобней всего задавать в стиле Query By Form - когда для ввода критериев используется обычная форма для данного типа записи, и в ее поля вводятся ограничения на значения соответствующих атрибутов. В стиле QBF проще всего задавать конъюнктивные условия (хотя можно и дизъюнктивные - путем задания нескольких "слоев").

Исключительно полезными при этом является возможности

- параметризовать запросы (например, от текущей даты с некоторым смещением);

- включать в состав запроса явно написанные на SQL выражения;

- создавать библиотеки именованных запросов, предоставив механизм для сохранения/восстановления/редактирования запросов;

- персонализировать доступ к сохраненным запросам, так как в реальной жизни их накапливается много.

Почти все объекты и отношения нуждаются в возможности включения в записи о них дополнительной, плохо структурированной и заранее не известной информации, которая, тем не менее, должна позволять искать эти объекты.

Это проще всего делать, включая в состав полей текстовое поле "примечания", допускающее поиск по подстроке в стиле QBF.

Специализированные поиски, фильтрации и сортировки

Наряду с общим механизмом QBF для часто используемых отборов и сортировок удобно иметь на панели специализированные инструменты (два-четыре типичных варианта сортировки и критерия фильтрации).

Категории сущностей

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

Объект - самоопределенная сущность, сохраняющая свою аутентичность от "рождения" до "смерти". Характерными примерами объектов, встречающихся почти в любой ИС, являются люди, организации и документы.

Объект всегда имеет простой уникальный идентификатор, либо естественный (являющийся атрибутом самого объекта, например, ИНН для отечественной организаций или SSN для американца), либо искусственный, полученный путем автоматической нумерации объектов в системе и/или в виде некой хэш-функции на базе его естественных атрибутов, образующих уникальное сочетание.

Объект почти всегда имеет имя. Объект имеет ряд атрибутов (реквизитов - например, город, улица и др.), которые обычно объединяются в некоторые логически связанные группы (например, почтовый адрес). В качестве атрибута могут выступать простые значения (числа, строки, тексты и др.) и ссылки, то есть идентификаторы других объектов. Кроме того, атрибутами могут выступать справочные коды.

В состав атрибутов объекта всегда нужно включать произвольное текстовое примечание.

Объекты делятся на разные категории, определяемые набором атрибутов и их значениями. Категории могут быть выстроены иерархически (объектное наследование), например:

- лица,

- юридические лица,

- физические лица,

- резиденты,

- нерезиденты.

Объекты "нижестоящих" категорий содержат все атрибуты "вышестоящих", но могут содержать и дополнительные.

Для каждой категории может быть определено одно или несколько представлений (views). Представление описывается набором атрибутов, в которые кроме атрибутов самого объекта могут входить атрибуты связанных объектов, справочников и пр., а так же критерием отбора объектов, включенных в представление.

Для представления может быть определен

- вид табличного (списочного) представления, а также

- форма (представление в виде карточки).

Форма обычно бывает многостраничной, при этом группы связанных атрибутов не разбиваются по страницам.

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

Форма может открываться в том же окне (вместо списка), а может - в отдельном. Окно формы может быть как модальным, так и немодальным (зависимым). Из просмотра формы надо уметь вернуться в список в тот же контекст. Как правило, список нужен для просмотра, а редактирование и ввод новых объектов удобнее делать в форме.

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

Связь имеет место в случае, когда объект содержит ссылку на другой объект. Например, наличие связи между Организацией и Подразделением определяется ссылкой из Подразделения на Организацию.

Связи содержательно именуются, причем на разных концах связи имена могут быть разные (например, Вышестоящая организация и Структурные подразделения). Для связи 1:n могут быть определены дополнительные условия, ограничивающие список связанных объектов, например, связь Производственные подразделения, фильтрующая из всех Структурных подразделений те, у которых есть признак производственные.

Связям не соответствуют никакие дополнительные объекты данных, и определение связей используется как основа для построения интерфейсных решений. Наличие связи позволяет перемещаться (навигировать) между связанными объектами в одну и другую сторону и выполнять связанное редактирование данных.

Например, связь между Организацией и Подразделением предполагает:

- возможность из Подразделения перейти в Организацию с целью просмотра или редактирования данных об организации;

- при вводе нового Подразделения указать Организацию, просто выбрав ее из списка;

- возможность перейти из Организации в список ее Подразделений с целью просмотра и редактирования как списка (добавление/удаление подразделений), так и информации об отдельных подразделениях в нем;

- возможность при построении представления (view) подразделения ссылаться на атрибуты организации.

Отношения связывают между собой два и более объекта. Отношение не имеет собственной "cамости" и однозначно описывается теми объектами, которые в это отношение вступают, и типом отношения. Кроме этого, отношение может содержать дополнительные атрибуты. Примером отношения является Занимаемая должность, связывающая Организацию и Сотрудника и характеризуемая типом отношения - занимаемой позицией. Это отношение может быть нагружено дополнительной информацией, такой как оклад, уровень занятости и т. д.

Отношения также образуют систему категорий, отличающихся набором атрибутов. Интерфейсно отношения могут быть представлены либо в виде отдельных списков (по категориям), содержащих ссылки (связи) на объекты, вступившие в данное отношение, либо представляться в виде табличных подформ в формах тех объектов, которые вступают в это отношение. Например, может быть 1) отдельная доступная для просмотра/редактирования таблица Занимаемые должности, и/или 2) страничка (подформа) Сотрудники в форме Организация, и/или 3) страничка (подформа) Занимаемые должности в форме Люди.

В случае 1 ввод и редактирование записей производится в стиле связей (из Организаций и Сотрудников к Занимаемой должности и из Занимаемой должности - к Организациям и Сотрудникам. В случае 2 и 3 - путем редактирования соответствующих подформ. Записи подформ, содержащих ссылки на объекты, лучше редактировать переходом в форму, хотя при малом числе атрибутов можно это делать и в таблице.

Множественные атрибуты и группы

Множественные атрибуты (группы атрибутов) похожи на отношения 1:n, но, в отличие от них, не содержат ссылки на второй и прочие объекты. Пример множественного атрибута - список телефонов.

Если считать, что в телефоне выделяется код и тип телефона (рабочий, домашний, мобильный и др.), то телефоны являются множественным групповым атрибутом.

Интерфейсно множественные атрибуты естественнее всего представлять подформой с редактированием прямо в таблице, если число атрибутов в группе невелико.

Для отношений и множественных атрибутов достаточно сложно, но возможно реализовать механизм задания QBF-запросов, так как может быть задано несколько условий - либо конъюнктивных, либо дизъюнктивных. Интерфейсно включение условия на отношение или множественный атрибут должно происходить так же, как ввод новой записи.

Окончание следует



© ООО "Компьютерра-Онлайн", 1997-2024
При цитировании и использовании любых материалов ссылка на "Компьютерру" обязательна.