Журнал ВРМ World

Мировая история развития технологий управления эффективностью бизнеса – обзоры зарубежных публикаций

WEB-API Хранилища данных  Контур Корпорация 

И, наконец, представляем вашему вниманию рассказ о собственной разработке
компании  Intersoft Lab . Описываемое решение по доступу к
корпоративному Хранилищу данных через Интернет/Интранет реализовано в продукте
компании - системе Контур Корпорация.
В результате разработки специальной архитектуры системы создание
корпоративного сайта с вводом и получением данных Хранилища становится делом
дизайнеров, а не программистов.

Доступ к данным Хранилища через Интернет обеспечивает дешевую и удобную доставку информации до всех заинтересованных сотрудников, партнеров и клиентов организации. Поэтому все большее количество поставщиков СУБД, универсальных и специализированных Хранилищ данных предоставляют свои инструменты решения этой задачи.

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

Часто для получения данных в броузере применяется прямое кодирование в html-страницах SQL-запросов к таблицам РСУБД или специальных запросов к многомерным кубам OLAP-серверов, например на языке MDX. Также в страницах можно описать бизнес-логику и логику интерфейса.

Однако этот путь для Хранилища данных весьма неэффективен. Хранилище должно развиваться, в нем будут появляться новые виды данных и возникать новые виды запросов. Каждая новая задача будет требовать дорогостоящего проектирования, разработки и тестирования. Результатом будет монолитная система, требующая синхронных изменений структуры таблиц, правил бизнес-логики и внешнего вида интерфейса при добавлении новых данных или даже новых отчетов. Сопровождение и развитие такой системы сможет выполнять только высококвалифицированный программист, обладающей знаниями о структуре базы данных, навыками программирования одновременно на нескольких языках: SQL, HTML, скриптовых языках.

Для сокращения трудозатрат при изменении состава данных Хранилища, создании новых отчетов и запросов требуется архитектурное решение, позволяющие разделить систему на независимые слои.

WEB-API системы  Контур Корпорация

Архитектурное решение

Задача удобного и дешевого обеспечения доступа к данным Хранилища из броузера решена в системе  Контур Корпорация  путем создания нескольких относительно независимых слоев.

Рис.1 WEB-API системы Контур Корпорация

1. Слой данных. База данных содержит внутри себя большую часть бизнес-логики, что защищает данные от разрушения и делает их извлечение понятным для программиста.

2. Слой бизнес-объектов. Web-API основано на особенностях самого Хранилища.  Контур Корпорация  предназначена для хранения деловой и финансовой информации и содержит в себе предопределенные классы бизнес-объектов. Это: Субъекты (клиенты, партнеры, сотрудники), Организационно-штатная структура (филиалы, департаменты, отделы, штатные должности), Бизнес-операции (финансовые, хозяйственные, организационные операции), Документы (произвольные формы документов, портфели документов, многостраничные и табличные документы), Счета и показатели (произвольное количество планов бухгалтерских счетов и наборов финансовых показателей подразделений, автоматическая консолидация учетных данных корпорации) и т.д.

Библиотека прикладных классов ACL (Application Class Library) является объектной оболочкой над реляционными таблицами и хранимыми процедурами СУБД. Она описывает все классы объектов, которые могут существовать в Хранилище. Каждый конкретный объект является воплощением одного из классов библиотеки и имеет свойства - сами данные и методы - действия над ними. Эта библиотека является центральным звеном решения. При ее помощи очень легко загрузить или получить любые данные Хранилища, даже если структура Хранилища непрерывно развивается. Так при появлении нового вида документов, например кредитного договора, для получения списка договоров программист пишет следующий код:


МоиДоговоры = СписокДокументов()
МоиДоговоры.Тип =  Кредитный_Договор 
МоиДоговоры.Филиал = 12
МоиДоговоры.Дать()


Теперь, объект МоиДоговоры содержит список кредитных договоров филиала № 12.

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

В системе  Контур Корпорация  метаданные охватывают все объекты системы, в ACL реализованы классы, позволяющие легко манипулировать ими.

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

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


МойСписокОтчетов = СписокОтчетов()
МойСписокОтчетов.Получить()


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


МойОтчет = Отчет()
МойОтчет.Код = код_выбранного_пользователем_отчета
МойОтчет.Получить()


В результате имеется иерархический набор параметров, которые нужно запросить у пользователя. Однажды написанная программа на DHTML отрисовывает этот набор в виде элементов интерфейса. После того как пользователь заполнил параметры и нажал кнопку  Выпустить , программа запускает отчет:


МойОтчет.СписокПараметров = параметры_введенные_пользователем
МойОтчет.Выпустить()


Реальный синтаксис при разработке сайта отличается от приведенного в примере тем, что взаимодействие страницы с ACL происходит на транспорте XML. Т.е страница и ACL обмениваются вопросами и ответами в виде XML-документов.

3. Слой доступа. Существуют возможности доступа к бизнес-объектам для платформ Windows NT(IIS) и UNIX(Apache и т.д.):

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

Вариант 2. Использование в качестве скриптового языка- Python , который очень для этого удобен. Кроме того именно на Python реализована библиотека ACL и программист получает непосредственный доступ к ее объектам.

Вариант 3. Применение специально разработанного Java-скрипт для передачи XML-запросов к библиотеке ACL и получения от нее XML-ответов.

4. Слой транспорта. Запросы к Хранилищу, полученные данные и служебная информация перемещается между слоем интерфейса и слоем доступа в виде XML-документов. При этом применяется собственный диалект Dynamic XML. Основной особенностью этого диалекта является его автоматическая адаптация под изменения структуры данных Хранилища. Так в результате описанного выше запроса программист получит следующий XML-документ:


<списокдокументов количество = 124>
    <документ номер = 11>
       <тип> Кредитный_Договор <тип>
       <филиал>12<филиал>
       <дата>12.01.2000<дата>
       <сумма>15000.00<сумма>
       :
    <документ>
    <документ номер = 12>
       <тип> Кредитный_Договор <тип>
       <филиал>12<филиал>
       <дата>13.01.2000<дата>
       <сумма>6000.00<сумма>
       :
    <документ>
    :
<списокдокументов>


5. Слой интерфейса. Интерфейс создается дизайнером сайта как совокупность страниц, обращающихся к объектам на языке XML. При этом доступны все данные Хранилища, но не требуется знание его физической структуры. Никакое изменение структуры данных не приводит к необходимости изучения новых схем таблиц, или изменения существующих страниц, за счет изоляции базы данных при помощи библиотеки XML.

Применение Web-API системы для создания корпоративного сайта

В результате создания Web-API организация может быстро и эффективно организовать на своем сайте доступ к данным корпоративного Хранилища.

Теперь при создании интерфейса к Хранилищу можно отказаться от программирования и сосредоточится над вопросом дизайна. Для решения этой задачи можно привлечь профессиональные студии, которые достаточно быстро освоят Web-API и все усилия сосредоточат не на способах получения данных, а на оформлении внешнего вида сайта, создании удобных интерфейсов запросов и наглядных формах представления данных.

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

Повторим основные возможности, которые предоставляет Web-API системы  Контур Корпорация :

  1. Создание статических страниц, которые оформлены наилучшим образом для неизменного контента, получаемого из Хранилища данных. Например, регистрационные данные Вашего банка.
  2. Создание обычных динамических страниц для получения от пользователя параметров и выдачи ему стандартных отчетов, например выписки по счету.
  3. Создание интеллектуальных динамических страниц, изменяющих набор параметров и форму отображения в зависимости от выбора пользователя за счет получения метаданных и использования их для генерации страниц перед выводом данных.
  4. Создание Web-интерфейса к Хранилищу, который позволит получать все данные, даже при изменении структуры Хранилища, например все типы документов или планы счетов, которые есть на момент внедрения и будут появляться при развитии системы.
  5. Возможность получения любых, а не только заранее предопределенных данных из Хранилища.
  6. Возможность пакетного и интерактивного ввода данных в Хранилище.
  7. Возможность администрирования и даже расширения структуры Хранилища через Интернет!
  8. Возможность разрабатывать сайт на платформах Microsoft и UNIX.
  9. Разработка корпоративного сайта с доступом к Хранилищу данных силами профессиональных Web-дизайнеров, а не программистов.


Автор: Владимир Некрасов, технический директор  Intersoft Lab