Для эффективной работы с документами в Progress существует механизм word indexing - возможность построения индексов по словам в символьном поле.
Приложение может также использовать данные из мета-схемы базы (т. е. само описание базы данных может быть доступно в виде обычной базы) и виртуальные run-time-таблицы (magic tables), содержащие данные об активных блокировках записей, работающих пользователях, параметрах базы данных. Для поддержания семантической целостности базы данных, для различных событий, таких как добавление, удаление, нахождение записи в базе и т. д., можно определить триггеры, выполняемые в ответ на эти события. Механизм триггеров можно использовать для дополнительной журнализации событий в базе, ограничения видимости записей, соответствующих некоторым критериям для определенных групп пользователей. Например, для события find record для таблицы "Зарплата" можно создать триггер, который позволит просматривать записи о зарплате только тех сотрудников, сумма зарплаты которых не превышает определенного для данного пользователя значения, хранимого в другой таблице. Пользователь может даже не догадываться, что просматривает только часть записей. Все триггеры пишутся в виде обычныхGL-процедур, могут работать с любым источником данных, поддерживаемым Progress, и до сих пор обладали только тем недостатком, что в отличие от хранимых процедур исполнялись на клиентской стороне. Но с появлением в сентябре996 года нового продукта Progress AppServer - компонентного сервера приложений - триггеры могут выполняться в любом узле вычислительной сети, в том числе и на самом сервере базы данных.
Компонентный сервер приложений AppServer.
Одним из важных шагов, предпринятых Progress Software в направлении создания распределенных приложений в N-уровневой архитектуре клиент-сервер, является введение в язык понятия удаленных процедур (remote procedures), разрабатываемых на языкеGL и используемых для разделения приложения на компоненты. Каждый из этих компонентов запускается на своем сервере приложений в непосредственной близости от данных, с которыми он работает, тем самым выделяя сегмент бизнес-логики из приложения - по сути инкапсулируя его функции в различных компонентах, каждый из которых может быть запущен на разных серверах в различных узлах сети. В приложении, написанном с использованием запускаемых на компонентном сервере удаленных процедур, клиентское приложение может вызвать удаленную процедуру и, не дожидаясь возврата из нее, сразу же перейти к следующей процедуре. Работа клиента будет прервана только по окончании выполнения удаленной процедуры для возвращения результата. Очевидно, что при этом общая производительность приложения значительно возрастает.
Progress/4GL
Компонентный языкGL - ядро разработки критически важных приложений, которое позволяет управлять всеми уровнями приложения: пользовательским интерфейсом, бизнес-логикой приложения и данными. Он обеспечивает управление транзакциями, генерацию отчетов, определение механизмов безопасности и целостности данных. В приложении наGL для работы с данными можно использовать SQL. Progress/SQL удовлетворяет стандарту ANSI SQL89 Level. Также в приложение могут быть интегрированы вставки С, на объекты ActiveX, OLE, механизмы DDL, DDE, Unix named pipes и другие.
Переносимость.
Progress функционирует более чем на60 программно-аппаратных платформах и поддерживает различные сетевые протоколы - TCP/IP, SPX/IPX, SNA, DecNet, NetBIOS. Приложения, разработанные на одной платформе, могут эксплуатироваться на любой другой из поддерживаемых платформ. Среди них MS-DOS, Novell, Windows, OS/2, Unix (UnixWare, SCO Unix, Interactive, Sun Solaris, AIX, HP-UX, IRIX), Windows NT (Intel, Alpha), OSF/1, OpenVMS, OS/400. Одним из уникальных свойств Progress является то, что одно и то же приложение может работать как в графической среде (Motif, Windows), так и на алфавитно-цифровых терминалах. Разработчик может создавать и различные экранные формы для каждого из типов пользовательского интерфейса.
Интернационализация.
Вопрос интернационализации приложений и поддержки национальных алфавитов является одним из принципов открытости системы. С другой стороны, реализация этого требования довольна сложна, так как требует решения большого количества проблем: cортировки, форматного отображения дат и денежных единиц, календарных дней, телефонных номеров и т. д. Опыт работы с Progress и программными продуктами, разработанными c его помощью, показал, что Progress удовлетворяет самым жестким требованиям, предъявляемым к открытой системе с точки зрения интернационализации.
В каждой стране используется свой алфавит - набор символов (немецкий, французский, испанский, русский). Для их представления обычно используются таблицы кодировок, содержащие коды от до55. Однако в некоторых случаях одного байта не хватает для представления всех символов алфавита (китайский, корейский, японский). Progress предоставляет возможность работы как с однобайтовыми, так и двухбайтовыми таблицами кодировок.
Системные сообщения.
В ряде случаев, особенно при эксплуатации готовой системы неспециалистами в области информационных технологий, требуется исключить появление на экране любой информации на языке, отличном от используемого в данной стране. Основную проблему вызывают системные сообщения, появляющиеся при различных сбоях; как правило, они выдаются только на английском языке. В Progress можно выбрать язык, на котором будут выдаваться системные сообщения, среди них есть, естественно, и русский.
Одновременная поддержка нескольких языков.
Все более актуальной становится возможность использования одного и того же приложения в различных странах на разных языках с учетом национальных традиций и особенностей. В России разработчикам также приходится решать такого рода задачи. Российские приложения хотят эксплуатировать на Украине, в Казахстане, в других странах бывшего Советского Союза. При этом встает вопрос поддержки национальных алфавитов каждой из этих стран. Progress Software разработала специальный продукт Translation Manager для решения этих вопросов. В его состав входят два основных компонента - Translation Manager и Visual Translator.
Описание процесса перевода приложения.
В процессе перевода выделяются две ключевые фигуры: руководитель проекта и собственно переводчик. Каждый из них решает свои задачи. Руководитель проекта формирует задание для переводчика, определяет стоимость работы, распределяет ее между переводчиками, осуществляет контроль за выполнением работы, готовит окончательный вариант приложения. Переводчик получает задание, осуществляет перевод и возвращает выполненную работу руководителю проекта. В соответствии с этими ролями распределены функции между двумя компонентами.
Руководитель проекта определяет те процедуры, которые должны быть переведены на другой язык. После этого он указывает фильтр для типов сообщений, которые необходимо перевести в каждой процедуре. Такими типами могут быть: меню, метки, наименования кнопок и т. д. После этого происходит формирование задания для переводчиков. В задание могут быть включены стандартные словари, содержащие перевод основных терминов, и допускается использование стандартных словарей фирмы Microsoft, которые применялись для перевода Word и Excel. При этом выдается вся статистика, позволяющая оценить трудоемкость работы и возможные сроки ее окончания. Переводчику передается только информация, необходимая для перевода, без логики самого приложения. Задание может посылаться по почте, на дискете или иным способом.
Получив задание, переводчик приступает к его переводу на другой язык. Возможны два режима перевода: поэкранный либо построчный. После окончания перевода и его проверки переводчик посылает выполненное задание обратно руководителю проекта.
Руководитель проекта, собрав полученные работы от переводчиков, консолидирует их работу и выполняет компиляцию приложений. После этого с данным приложением можно работать с использованием нового языка. Язык задается стартовым параметром.
Разработчиком Progress является американская компания Progress Software Corporation (Бедфорд), имеющая представительства в4 странах мира. На Progress создано более000 приложений, среди которых крупные банковские системы, системы управления промышленными, торговыми предприятиями. На территории СНГ дистрибьютором Progress Software является компания CSBI EE.
Для создания отчетов в интерактивном режиме существует специальная компонента Progress - Report Builder (до версии.1 включительно, в последующих версиях - Actuate). Заметим, что Report Builder требует отдельного connect с базой данных, поэтому в однопользовательском сеансе перед входом в среду Report Builder следует отсоединиться от базы данных.