1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /122, 1995 г./ | Бонус | Поиск  

Обзоры

Компания Progress предложила свою методологию разработки приложений

Владимир Смирнов


© 2004, Еженедельник «Компьютерра» | http://www.computerra.ru/offline
Этого материала на сайте "Компьютерры", к сожалению, нет

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

С чего начинает разработчик, используя RAD Progress? Он вызывает "Построитель пользовательского интерфейса" (User Interface Builder, UIB), который является объектно-ориентированным инструментом визуального программирования.

Создание указанного компонента приложения начинается с открытия исходного объекта – пустого окна (window), в которое последователь но вводятся необходимые элементы – объекты БД (таблицы и поля) и графические управляющие элементы (кнопки управления, ниспадающие меню, "радиокнопки" и пр.). Для этого достаточно с помощью мыши выбрать нужный компонент на палитре UIB (рис 1) и затем, используя технику pomt&click, задать его положение и размеры в открытом окне.

 

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

Принятая компанией Progress Software методология (Application Development Methodology, ADM) основывается на использовании инкапсулированных модулей приложений, то есть объектов, содержащих в скрытом от разработчика виде информацию для представления объекта и описания всех действий, которые объект может выполнять. Согласно этой методологии, объекты создаются стандартными процедурами на языке Progress 4GI и стандартным интерфейсом коммуникаций между объектами.

Создание и оформление объекта данных в окне приложения приводит к генерации UIB исходных кодов процедур, которые затем сохраняются в едином хранилище – Data Dictionary. При любом вызове созданного объекта приложения UIB однозначно выберет из Data Dictionary данные, относящиеся к нему, и автоматически сгенерирует логику его представления.

Это значит что во первых, совершенно не обязательно знать SQL, чтобы использовать UIB в качестве инструмента быстрой разработки. Как правило, весь оконный интерфейс представления данных создается автоматически и имеет стандартный вид, в этом случае интерфейс даже не нужно определять визуально.

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

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

Кроме того, объекты приложений, создаваемых с помощью UIB Progress, включают в себя внутренние процедуры, или 'методы", – действия, которые могут быть вызваны и многократно исполнены одним или несколькими пользовательскими триггерами объектов. Скажем, можно создать внутреннюю процедуру которая при нажатии кнопки ввода новой записи в окне счетов клиента приведет к появлению сообщения о величине его платежного баланса. С помощью внутренних процедур могут быть определены способы передачи управления от одних объектов приложения к другим что упрощает создание сложных многооконных приложений.

Вообще говоря, в RAD Progress существуют два типа процедур – внешние и внутренние. Внешние процедуры вызываются с диска и могут содержать обращения к исполняемым внутренним процедурам. Такой метод обеспечивает:

 – многократность использования кодов процедур, так как любая отдельная процедура или объект, созданный на основе процедуры, может иметь множество исполняемых "экземпляров",

 – единую поддержку кодов, когда изменение процедуры в исходном объекте мгновенно отражается во всех его экземплярах,

 – единое, стандартное представление и единый набор действий объектов, так как все включенные в приложение экземпляры созданы из одних и тех же исходных объектов,

 – легкость компоновки приложений ибо все объекты подчиняются единым правилам взаимодействия друг с другом,

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

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

Объекты, создаваемые с помощью SmartObjects, ориентированы на использование в типовых прикладных за дачах обработки информации из баз данных. Каждая процедура из реализованных SmartObjects формирует определенное стандартное представление информации из БД и использует определенный набор взаимодействий с другими SmartObjects. Так, SmartViewer и SmartQuery работают совместно по заранее предопределенному алгоритму: SmartQuery посылает выбранные записи в SmartViewer, чтобы отобразить данные на дисплее.

SmartObjects могут выполнять ряд операций благодаря использованию внутренних процедур, которые подразделяются на два типа:

 – операции – "методы", которые могут быть вызваны любой программой и которые требуют от SmartObjects выполнения определенного действия (они представляют собой как бы функции, написанные на Progress 4GL);

 – действия по умолчанию, которые задают поведение SmartObjects в критические для приложения моменты, называемые "событиями ADM". Такие процедуры могут использоваться для прерывания, отмены или переадресации ADM-npoцесса.

Наиболее общие внутренние процедуры ADM сохраняются в библиотеках методов, что позволяет реализовать форму наследования, когда новые процедуры SmartObjects, созданные на основе существующих SmartObjects, автоматически наследуют содержащиеся в них процедуры-"методы".

Шаг за шагом вслед за Advisor

Теперь программисту на первых этапах разработки предоставляется возможность создавать множество необходимых "интеллектуальных" объектов обработки информации из баз данных. А чтобы процесс их формирования был более упорядочен и прост, RAD Progress предоставляет Progress Advisor, который, подобно известным Microsoft Wizard, задает последовательность действий по созданию объектов приложений и определению их взаимосвязей. Для каждого типа объектов Advisor предлагает использовать один из нескольких шаблонов – исходных форм, наполняя которые специфическими данными из БД и определяя элементы их пользовательского интерфейса, можно создавать законченные индивидуальные SmartObject Masters – конечные компоненты приложений.

Если в приложении нужно использовать листаемый список выбранной из БД информации, то разработчик может применять SmartBrowser Wizard (рис.2), обеспечивающий пошаговое выполнение всех необходимых операций создания объекта SmartBrowser Master – листаемого списка записей.

Первым шагом в создании указанного объекта приложения будет присоединение к БД – это поможет сделать Advisor, открывая списки доступных внешних баз данных. Поскольку в создаваемом списке должны быть отображены не все, а лишь вполне определенные записи, то на следующем шаге разработчик задает условия их поиска (выбора) в окне построителя запроса – Query Builder (рис. 3). Когда нужно сформировать запрос к нескольким базам данных, то в окне построения запроса могут быть заданы условия объединения таблиц БД. В нижней части окна Query Builder представляется формируемый на языке 4GL запрос, который сразу же может быть протестирован на синтаксическую правильность.

 

В результате создается объект – листаемый список, в котором представляются все необходимые данные в соответствии с текущим состоянием определенных внешних БД.

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

На следующих этапах разработки в соответствии с методологией ADM (рис. 4) открываются пустые "интеллектуальные окна" SmartContamer, в которые, как в контейнеры, вводятся исполняемые экземпляры ранее сформированных объектов. Следует отметить, что независимость создаваемых объектов позволяет осуществлять рекурсию: например, в одно окно SmartWmdow может быть включен экземпляр другого созданного окна SmartWindow.

 

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

Затем разработчик определяет связи между всеми объектами окна приложения. SmartContainer образует с каждым из включенных в него объектов связи, называемые CONTAINER LINK. Если необходимо связать в окне внутренние объекты SmartObjects с внешними, используются непрямые связи PASS-THROUGH LINKS. Умение программировать может потребоваться разработчику лишь на этапе создания триггеров и установления связей в таком достаточно простом приложении. Впрочем, и в этом случае поможет Advisor: он автоматически определит условия формирования связей стандартных управляющих элементов с существующими компонентами приложения и предложит варианты наиболее простых триггеров и внутренних процедур.

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

К основным достоинствам RAD Progress следует отнести то, что он позволяет единым образом отображать любой компонент создаваемого приложения вне зависимости от используемой операционной среды.

Несмотря на то что среды с различным пользовательским интерфейсом  – как, например, графические среды Windows или Motif и среды с текстовым интерфейсом (DOS или UNIX) – размещают объекты на экране и определяют их размеры по-разному, средства альтернативного вывода UIB Progress позволяют создавать и поддерживать разные версии одинаковых окон для переноса пользовательского интерфейса в другие среды. А это значит, что пользователь будет работать с одним и тем же представлением данных в готовых приложениях на большом количестве рабочих платформ. И для разработчика вся последовательность действий по созданию и модификации приложений также остается неизменной.

 


1995 | 1996 | 1997 | 1998 | 1999 | 2000 | 2001 | 2002 | 2003 | 2004 | Оглавление текущего номера /122, 1995 г./ | Бонус | Поиск  

© 2004, Издательский дом «Компьютерра» | http://www.computerra.ru
Телефон редакции: (095) 232-22-61
E-mail редакции: inform@computerra.ru