|
|
|||||||||||||||||||||||||||||||||||||||||||||||
White Papers |
Организация документооборотаПри построении систем В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.
Объект DOMNode, реализующий базовый DOM-интерфейс Node, предназначен для манипулирования с отдельным узлом дерева документа. Его свойства и методы позволяют получать и изменять полную информацию о текущем узле — его тип, название, полное название, его содержимое, список дочерних элементов и т.д. Каждый узел представлен объектом XMLDOMNode и может иметь родительский узел, предшествующий и последующий узлы, дочерний узел. У корневого узла есть только последующие и/или дочерние узлы. Каждый узел имеет один из следующих типов:
В качестве примера на рис. 3 приведена DOM-модель элемента ООО Тайфун. Узел «Sender» имеет дочерний узел типа Text, содержащий данные «ООО Тайфун».
Компанией Microsoft DOM-интерфейс реализован в виде COM-сервера msxml.dll, который включен в состав ОС Windows 98, а так же в состав браузера Internet Explorer. На сайте www.msdn.microsoft.com/ подробно изложены методы и свойства интерфейсных объектов и соклассов (CoDOMDocument, CoDOMFreeThreadedDocument, CoXMLHTTPRequest, CoXMLDSOControl, CoXMLDocument), инициализируемых XML-анализатором msxml. Наиболее интересен сокласс CoXMLDocument, который содержит следующие основные интерфейсы:
Данные интерфейсы представлены шире, чем базовые рекомендации 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г Также в разделе:
|
СодержаниеСовременные архитектуры Новость
Руководителю проекта Разработчику Книги Системы управления базами данных Советы и мнения Интернет Операционные системы Книжная полка ОС Академия ОС Программная инженерия Приложения Разное
Менеджмент ИТ Платформы
Новости
От редакции Эта рубрика в архиве
Список номеров за
|
|||||||||||||||||||||||||||||||||||||||||||||