White Papers

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

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

Системы управления базами данных

XML в системах электронного бизнесаВерсия для печати

Язык XML превратился сегодня в реальный инструмент построения систем B2B. Так, Северо-Западное таможенное управление осуществляет проект по организации системы обмена электронными документами между таможенными службами России и Финляндии.

Александр Календарев

Язык XML превратился сегодня в реальный инструмент построения систем B2B. Так, Северо-Западное таможенное управление осуществляет проект по организации системы обмена электронными документами между таможенными службами России и Финляндии. В данной статье разбираются некоторые особенности разработки этой системы, построенной на основе обмена XML-документами. В статье рассмотрены принципы построения подобных систем и структуры электронных сообщений, разобраны практические примеры.

Консорциум WWW Consortium (www.w3c.org) еще в феврале 1998 года рекомендовал использовать язык XML при организации систем электронного бизнеса. Эффективность такого подхода к построению B2B-систем основывается на четком и наглядном представлении структурированной информации, возможности использования современных сетевых протоколов при низких затратах на создание интерактивных бизнес-систем. Независимость представления информации в виде XML-документов позволяет разным разработчикам создавать компоненты системы автономно.

Во всех существующих B2B-системах обмен, как правило, строится по типовой схеме, с использованием http-запросов и протокола SSL.

Cо стороны одного торгового партнера в качестве клиентской программы выступает приложение, которое в режиме POST выдает http-запрос к Web-серверу второго партнера. На стороне сервера запрос обрабатывается, и соответствующее приложение готовит ответ и возвращает его через сервер клиентской программе. Обмен осуществляется в виде XML-документов. Подобный обмен называют осуществлением бизнес-транзакции.

Рассмотрим пример. Пусть Предприятие А запрашивает наличие продукции у Поставщика В (в этом случае Предприятие А и запущенная на его стороне программа выступает в качестве клиента). АСУ Склад (Поставщик В) располагает базой данных по складскому комплексу. Типовой алгоритм обмена выглядит следующим образом (см. рис. 1).

Рис. 1. Организация обмена в B2B-системах
  1. Предприятие А инициирует процесс А (заказ продукции), который выступает в качестве Web-клиента.
  2. Процесс А формирует XML-документ (например, запрос- накладная) и передает его как http-запрос POST на Web-сервер Поставщика В. В качестве URI используется идентификатор ресурса обрабатывающего приложения; этот идентификатор может быть либо одинаковым для всех типов документов, либо индивидуальным для каждого типа — все зависит от структуры B2B-сервера.
  3. Web-сервер анализирует запрос и порождает серверный процесс В, передавая в качестве параметра тело XML-документа. Процесс В запускается Web-сервером и обрабатывается как ASP-страница, CGI-приложение или Java-севрлет.
  4. Процесс В формирует запрос на SQL-сервер базы данных.
  5. SQL-сервер производит необходимые операции в базе данных, формирует ответ и возвращает его Процессу В.
  6. По ответу от SQL-сервера Процесс В формирует XML-документ и возвращает его в ответ на http-запрос клиентскому приложению.
  7. Далее, в зависимости от ситуации на стороне клиента формируется либо новый http-запрос, либо заканчивается сеанс.

Организация документооборота

При построении систем В2В центральное место занимает составление структуры электронных документов и карты сообщений. Целесообразно, чтобы каждый XML-документ, подобно HTML-документу, имел заголовок, в котором заключена общая информация о бизнес транзакции и тело сообщения, содержащее структурированную информацию. Для выделения заголовка рекомендуется использовать тег , для описания запроса — тег , а для ответа на запрос — тег ). Для того чтобы XML-документ был формально правильно построен, необходимо его две составные части «Заголовок» и «Запрос» обрамить тегами, скажем, . Примерный вид типового электронного документа:



... данные заголовка


... основные данные
или тело электронного документа

В отличие от типового HTML-документа заголовок должен содержать разного рода служебную информацию, в том числе о типе передаваемого документа и процессе его обработки. В обработку поступает лишь тело документа — содержательная часть, обрамленная тегами .

При построении системы обмена электронными документами прежде всего разрабатывается схема потоков документов, их структура и информационное содержание, а уже затем — таблицы «функций процессов», которые определяют, какой процесс будет реализовывать конкретную функцию обработки по отношению к какому документу. Особое место занимает построение бизнес-модели всей системы электронного обмена. В статье «Создание единого глобального электронного рынка — проект ebXML» (www.citforum.ru//internet/articles/ebxml.shtm) этот процесс описан более полно.

Ключевую роль в обработке XML-документов занимает концепция объектной модели документа DOM (Document Object Model) [1].

Концепция DOM

Каждый XML-документ представляется в виде набора множества объектов (классов), с помощью которых возможен доступ к отдельным элементам (полям объекта). Над элементами классов можно производить некоторые действия, вызывая методы класса объекта. DOM-модель представляет собой дерево (рис. 2), в корне которого расположен единственный объект DOMDocument, имеющий ссылку на корневой элемент (узел) DOMNode.

Рис. 2. Представление XML-документа в терминах DOM-модели

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

Каждый узел представлен объектом XMLDOMNode и может иметь родительский узел, предшествующий и последующий узлы, дочерний узел. У корневого узла есть только последующие и/или дочерние узлы. Каждый узел имеет один из следующих типов:

элементNODE_ELEMENT = 1;
атрибутNODE_ATTRIBUTE = 2;
текстNODE_TEXT = 3;
секция данныхNODE_CDATA_SECTION = 4;
ссылка на единицу NODE_ENTITY_REFERENCE = 5;
единицаNODE_ENTITY = 6;
инструкцияNODE_PROCESSING_INSTRUCTION = 7;
комментарийNODE_COMMENT = 8;
документNODE_DOCUMENT = 9;
тип документаNODE_DOCUMENT_TYPE = 10;
фрагмент документаNODE_DOCUMENT_FRAGMENT = 11;
замечаниеNODE_NOTATION = 12.

В качестве примера на рис. 3 приведена DOM-модель элемента ООО Тайфун. Узел «Sender» имеет дочерний узел типа Text, содержащий данные «ООО Тайфун».

Рис. 3. DOM-представление узлов документа

Компанией Microsoft DOM-интерфейс реализован в виде COM-сервера msxml.dll, который включен в состав ОС Windows 98, а так же в состав браузера Internet Explorer. На сайте www.msdn.microsoft.com/ подробно изложены методы и свойства интерфейсных объектов и соклассов (CoDOMDocument, CoDOMFreeThreadedDocument, CoXMLHTTPRequest, CoXMLDSOControl, CoXMLDocument), инициализируемых XML-анализатором msxml. Наиболее интересен сокласс CoXMLDocument, который содержит следующие основные интерфейсы:

  • IXMLDOMNode (узел);
  • IXMLDOMNodeList (список узлов);
  • IXMLDOMDocument (документ);
  • IXMLDOMElement (элемент);
  • IXMLDOMAttribute (атрибут);
  • IXMLDOMDocumentFragment (фрагмент документа);
  • IXMLDOMText (текст);
  • IXMLDOMCharacterData (символьные данные);
  • IXMLDOMCDATASection (секция данных CDATA);
  • IXMLDOMParseError (ошибки разбора).

Данные интерфейсы представлены шире, чем базовые рекомендации DOM Core 1.0 консорциума W3C.

Создание клиентской части

Главная задача клиентской части — формирование сообщения и передача его по протоколу HTTP на Web-сервер бизнес-партнера. Суть использования DOM-интерфейса и организации бизнес-транзакций призвана проиллюстрировать пример формирования заголовка XML-сообщения клиентской программы (рис. 1).

Procedure
TThread1.HeaderCreate(Sender: Tobject);
Var
CoDoc : CoDomDocument;
Doc : DomDocument;
r : IXMLDOMElement;
Node : IXMLDOMElement; //
txt : IXMLDOMText;
attr : IXMLDOMAttribute;
begin
Doc := coDoc.Create; //создание
DOM-документа
Doc.Set_async(false); //установка синхронного
 режима обработки
Doc.LoadXML(??);
// инициация
DOM-документа
R := Doc.Get_documentElement; //получение
 адреса корневого элемента
Node := Doc.createElement ( ?Sender?);
Txt := Doc.createTextNode( ?ООО «Тайфун»?);
Node.appendChild(txt); //присвоение
 узлу 
 значение текстового узла ?ООО «Тайфун»?
r.appendChild(Node); //добавление
 элемента 
 в корень документа как дочернего
Node := Doc.createElement (?From?);
//аналогичные операции для тега 
Txt := Doc.createTextNode
 (?http://tayfun.ru/xml/default.asp?);
Node.appendChild(txt);
r.appendChild(Node);
Node := Doc.createElement (?To?);
//аналогичные операции для тега 
Txt := Doc.createTextNode (?http://irbis.ru?);
Node.appendChild(txt);
r.appendChild(Node);
Node := Doc.createElement (?TypeDocument?);
Att := Doc.createAttribute (?Id ?, ? Order?);
Node.appendChild(Att); //
r.appendChild(Node);
end;

Данная часть программы реализована в среде Delphi, однако выбор среды программирования принципиального значения не имеет. Главное, чтобы средой программирования поддерживалась COM-технология.

В представленном примере показано как инициализируется сокласс CoDomDocument, через который осуществляется доступ к интерфейсам IXMLDOMElement, IXMLDOMElement, IXMLDOMText, DOMText, IXMLDOMAttribute, DOMAttribute.

Объявление переменной со-класса coDoc : CoDomDocument и переменной Doc : DomDocument, а также ее создание методом Create (Doc := coDoc.Create;) осуществляется один раз, как правило, в процедуре обработки создания объекта приложения onCreate. Объявление должно находиться в секции описания глобальных переменных, чтоб был доступ из локальных процедур.

В результате выполнения данной подпрограммы для бизнес-транзакции будет сформирован заголовок:

 ООО?Тайфун» 
 http://tayfun.ru./xml/default.asp 
 http://irbis.ru 

В [2] можно найти пример формирования бизнес-транзакции «инвойс» из данных базы данных, находящихся на стороне клиента.

Основное преимущество организации бизнес-транзакций в XML-виде в том, что существует возможность формировать сообщение, используя независимые структуры таблиц реляционных СУБД как на принимаемой, так и на передаваемой стороне.

Cоздание серверной части

В отличие от клиентской части, на серверной части решается обратная задача — разбор принятого XML-сообщения. Приведенный пример обработки CGI-приложения иллюстрирует способ преобразования полученного XML-документа и его обработки. Рассмотрено также использование XSL-шаблона для анализа документа типа ORDER. Хотя http-запрос ASP-страницей обрабатывается эффективнее, чем CGI-приложением, существенной разницы, как это делать, нет. Гораздо важнее решить вопрос — как построить программу обработки. Выбор на использование CGI-приложения пал потому, что наиболее популярный в Рунете Web-сервер Apache не поддерживает технологию ASP.


1 2

06.12.2001г


Также в разделе:

Новости ОСП-ТВ - 18.03.10



Содержание

Современные архитектуры

Новость

Руководителю проекта

Разработчику

Книги

Системы управления базами данных

Советы и мнения

Интернет

Операционные системы

Книжная полка ОС

Академия ОС

Программная инженерия

Приложения

Разное

Менеджмент ИТ

Платформы

Новости

От редакции



Эта рубрика в архиве
Список номеров за



OSP.RU :: Написать письмо.