Андрей Љолесов

Наверное, не стоит лишний раз повторять, что семейство офисных продуктов Microsoft давно превратилось из набора отдельных клиентских приложений в самодостаточную платформу построения специализированных бизнес-решений. В предыдущем обзоре ("Платформа Microsoft Office System 2003", "BYTE/Россия" No 12'2003) мы сделали основной акцент на те новшества в последней версии Microsoft Office, которые рассчитаны на пользователей, а теперь рассмотрим новые средства и технологии для разработчиков решений*.


* О новых средствах разработки, появившихся в предыдущей версии офисного пакета, речь шла в статье "Microsoft Office XP - платформа разработки приложений", "BYTE/Россия" No 10'2001.

В целом логика развития технологий разработки шла в последние годы от решения задач автоматизации на уровне отдельных программ на базе механизма VBA в сторону применения средств интеграции приложений (в том числе на базе Web и XML), позволяющих создавать комплексные решения корпоративного уровня. С учетом этого модернизация средств разработки в Microsoft Office 2003 была направлена в первую очередь на то, чтобы обеспечить следующие возможности.

Подключенные приложения. Здесь прежде всего имеется в виду создание приложений с использованием XML и Web-сервисов, чтобы пользователи могли взаимодействовать с самыми разными бизнес-процессами и данными предприятия. Поддержка XML добавлена в Word 2003 и существенно расширена в Excel 2003 и Access 2003 (рис. 1). Кроме того, разработчики теперь могут интегрировать Web-сервисы в любые офисные приложения.

Fig.1 Рис. 1. Word 2003 можно использовать в качестве редактора XML-документов.

Интеллектуальные приложения. Новая технология смарт-документов, реализованная для Word 2003 и Excel 2003, позволяет создавать интерактивные приложения, работающие с распределенными источниками данных. Существенно расширены и возможности создания и использования смарт-тегов, впервые появившиеся в Office XP.

Организация групповой работы. Ключевая роль здесь отводится технологиям Windows SharePoint, которые представлены в двух вариантах: SharePoint Services (компонент серверной ОС Windows Server 2003) и SharePoint Portal Server 2003 (наиболее функциональный автономный серверный продукт). В решении задач программной настройки пользовательского интерфейса и гибкого доступа к уделенным ресурсам важная роль отводится также обновленной технологии Web Parts.

Интеграция с Visual Studio .NET. Специальные средства расширения позволяют создавать дополнительные программные модули для Word, Excel и InfoPath с помощью VS.NET с использованием архитектуры .NET Framework.

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

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

В общем виде использование XML-технологий, смарт-документов и смарт-тегов, а также средств групповой работы мы рассмотрели в предыдущем обзоре Office 2003 ("BYTE/Россия" No 12'2003). Поэтому здесь мы подробнее поговорим о средствах функционального расширения офисных приложений с помощью Visual Studio .NET и основных возможностей InfoPath 2003. Вопросы использования и разработки компонентов Web Parts мы планируем обсудить в следующих номерах журнала.

Новые сферы применения методов программирования в продуктах Microsoft Office System 2003

Продукт Сферы применения программирования
Word 2003 Работа с документами в формате Word XML с помощью настраиваемых пользователем XML-схем
Программная работа с XML через объектную модель Word
Создание основанных на XML шаблонов Word, включающих пользовательскую разметку XML, динамические данные Web-сервисов и средства управления правами доступа к отдельным элементам документа
Применение смарт-документов для работы с контекстно-обусловленными решениями
Excel 2003 Преобразование электронных таблиц в структуры данных XML
Использование различных карт управления схемами для импорта/экспорта наборов данных сложной структуры
Обновление данных из XML-источников (серверные СУБД и Web-сервисы)
Проверка значимости данных в электронных таблицах с помощью XML-схем
Создание решений с применением смарт-документов для сложных задач анализа данных и финансовых вычислений
Access 2003 Экспорт XML-данных в реляционные таблицы, импорт/экспорт пространств имен XSD, применение XSL-форматирования при операциях экспорта/импорта
Интеграция данных и ссылок между таблицами Access и списками Windows SharePoint Services
Добавление действий смарт-тегов к любому полю таблицы, запроса, формы, отчета или страницы доступа к данным
InfoPath 2003 Создание динамических интерактивных XML-форм с использованием встроенной бизнес-логики
Использование существующих схем, Web-сервисов и XML-данных для создания приложений со сложными информационными связями
Интеграция приложений и систем на основе простого, интуитивно понятного пользовательского интерфейса
Развертывание решений, способных автоматически определять изменения версий и проводить соответствующие обновления
Построение решений для совместной работы, интегрированных с Windows SharePoint Services
FrontPage 2003 Использование каталога источников данных для управления источниками данных и их визуальным представлением
Создание и редактирование XSLT-элементов для созданий HTML-представления данных XML
Применение средства Data Source Detail View для просмотра структуры данных, поступающих из внешних источников
SharePoint Portal Server 2003 Использование технологии Web Parts для создания настраиваемых, интерактивных средств просмотра бизнес-данных
Создание групповых решений путем разработки программных модулей, управляющих функциями сервера через его объектную модель
Применение набора Enterprise Application Integration совместно с BizTalk Server для интеграции портала с данными различных корпоративных систем
Построение интегрированных решений, где встроенные Web-сервисы используются для доступа к данным SharePoint Portal Server со стороны других приложений
Visio 2003 Автоматическая генерация диаграмм на основе данных, получаемых из различных корпоративных источников, включая базы данных и Web-сервисы
Выборка данных из диаграмм Visio для использования в Excel, Word, Access, SQL Server и в других инструментах для интеграции с бизнес-процессами и различными системами
Встраивание Visio в .NET-решения
Встроенное применение компонента Visio Drawing Control в различных специализированных приложениях
Project 2003 Создание и редактирование проектов с помощью нового набора Project Data Services API
Сбор информации из различных источников с помощью технологий XML
Интеграция корпоративных ресурсов с имеющимися бизнес-решениями
Управление развертыванием программных решений с помощью Internet Explorer
Загрузка и синхронизация информационных ресурсов с применением служб Active Directory
Live Communications Server 2003 Сервер представляет собой расширяемую платформу для поддержки коммуникаций в режиме реального времени

Инструмент разработки расширений

В целом технологии внутреннего программирования в Microsoft Office 2003 по-прежнему базируются на традиционном механизме VBA/COM и соответствующей программной объектной модели офисных приложений. Интегрированная среда разработки самого VBA осталась примерно той же, что и в Office 2000/XP, хотя, конечно, наборы объектов в конкретных пакетах модернизированы в соответствии с их общим функциональным расширением.

Новшества в этой области коснулись технологий создания программных расширений в виде DLL. Ранее эти задачи решались в рамках инструментария VBA/VB 6.0 - специального мастера COM Add-ins, который был доступен разработчикам в составе специального выпуска Microsoft Office Developer. Теперь же, в Office 2003, двоичные расширения создаются на базе архитектуры .NET Framework с применением Visual Studio .NET 2003.

Специального выпуска Developer в составе Office 2003 нет, вместо него как отдельный продукт предлагается набор инструментов Visual Studio Tools for Microsoft Office System (VSTOS). Ориентировочная цена его коробочного варианта - 500 долл., версия Upgrade (для владельцев хотя бы одного инструмента разработки Microsoft) - 200 долл. Наверное, такое выделение инструментария в отдельную поставку будет удобнее для разработчиков, особенно для тех, кто работает с локализованными версиями Office. (Выпуск Developer поставлялся только в английской версии, соответственно, российским разработчикам нужно было приобретать и устанавливать два варианта пакета: английский и русский. Кроме лишней траты денег, это вызывало проблемы, связанные с возможными конфликтами разных языковых версий.)

VSTOS представляет собой расширение для Visual Studio .NET 2003. После его установки в окне New Project появляется дополнительная опция для создания офисных проектов на языках VB.NET и C# (рис. 2). Программирование ведется с помощью классов и объектов, находящихся в пространствах имен Microsoft.Office.Core, Microsoft.Office.Interop и Microsoft.VBE.Interop.Forms. Общая логика разработки программных компонентов примерно та же, что ранее в COM Add-Ins, но все же еще раз подчеркнем, что в Office 2000/XP разработка двоичных расширений велась на том же языке VBA, что и написание макросов, а созданные DLL могли использоваться со всеми офисными приложениями. VSTOS позволит создавать двоичные DLL-расширения, работающие в среде .NET Framework, на языках VB.NET и C#, но только для Word 2003 и Excel 2003.

Fig.2 Рис. 2. После установки VSTOS в окне New Project в среде Visual Studio.NET появляется опция для создания офисных проектов на языках VB.NET и C#.

Как отдельный продукт VSTOS, помимо собственно инструментария для VS.NET, включает еще несколько средств. Во-первых, в его состав входит Visual Basic .NET Standard Edition (это несколько усеченный по функциональности Visual Studio .NET, где используется только язык VB.NET). Кроме того, в пакет входят Microsoft Access 2003 Developer Extensions (модули исполнения Access для бесплатного распространения в продуктах независимых разработчиков и дополнительный инструментарий) и SQL Server 2000 Developer Edition.

Работа с XML-документами с помощью InfoPath

В Microsoft Office System 2003 появилось качественно новое приложение - InfoPath 2003, ранее носившее кодовое имя XDocs. Оно поставляется как автономный продукт, а также входит в состав пакета Microsoft Office 2003 Professional Enterprise Edition, распространяемого в виде корпоративных лицензий.

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

Fig.3 Рис. 3. Редактирование динамической формы в среде InfoPath 2003.

Как правило, для решения таких задач сейчас применяется специальное приложение, в котором функции управления внешним интерфейсом и связями с источниками данных реализованы посредством программного кода (хотя бы с помощью Visual Basic). InfoPath делает то же самое, но только без программирования.

В основе InfoPath лежит широкое использование различных XML-технологий: XML, XPath, XSD, XSLT, XHTML, CSS, DOM, XML DSig, SOAP, WSDL, UDDI. На рис. 4 представлена общая логика формирования динамической формы. Исходные данные получаются из XML-файлов или SOAP-сообщений (Web-сервисов), из которых с помощью XML-схемы создается внутреннее дерево данных DOM (Document object model). Далее с применением таблиц стилей XSLT строится внешний вид документа. Однако нужно подчеркнуть, что все эти программные технологии находятся внутри приложения - пользователь управляет ими через соответствующий визуальный интерфейс. В InfoPath есть также механизм внутреннего программирования при помощи скриптовых языков, что позволяет создавать более функционально насыщенные решения.

Fig.4 Рис. 4. Механизм формирования динамической формы в InfoPath 2003.

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

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

Расширение возможностей InfoPath с помощью VS.NET 2003

Наверное, многие заказчики пока еще находятся на стадии изучения возможностей InfoPath. И тем не менее уже можно говорить о востребованности данного продукта на рынке. Одно из следствий этого - намерение Microsoft выпустить его обновленную версию уже в начале нынешнего лета (с предварительной версией (preview) можно познакомиться и сейчас). Хотя пока этот пакет называется InfoPath 2003 Service Pack 1 (SP-1), это не должно вводить в заблуждение пользователей: речь идет не о традиционном пакете обновлений (обычно включающем исправления ошибок и решения проблем безопасности), а о масштабном функциональном расширении приложения. Пожалуй, продукт было бы правильнее назвать новой версией InfoPath 2.0 (скорее всего, название Service Pack должно подчеркнуть, что обновление будет выполняться бесплатно).

InfoPath 2003 Service Pack 1 содержит, в частности, более десятка дополнительных функций проектирования форм и развертывания приложения. Одна из них - новое диалоговое окно Fill Out a Form, которое открывается автоматически при запуске приложения. С его помощью пользователь может выбирать часто используемые формы, в том числе с разбивкой их по различным категориям. Отдельная функция позволяет управлять разными версиями одной и той же формы. Существенно расширены и возможности описания событийных правил, которые выдают сообщения по ходу коррекции отдельных элементов формы. Роли пользователей могут быть связаны с группами безопасности службы каталогов Active Directory.

Изменение средств развертывания форм InfoPath связано в первую очередь с обеспечением вопросов подлинности. Сейчас в случае коррекции настраиваемых форм необходимо их переустанавливать на каждом пользовательском компьютере. В новой версии для удостоверения подлинности используются программируемые сертификаты, благодаря чему можно применять автоматическое подтверждение через серверные службы, например, Windows SharePoint Services. В этом случае шаблоны обновляются сразу, как только пользователь открывает новую или уже существующую форму.

Однако наиболее существенное новшество - возможность функционального расширения InfoPath с помощью Visual Studio .NET 2003. Как известно, одна из ключевых идей InfoPath - реализация задач управления визуальными формами и связями с источниками данных без программирования, только с помощью пользовательского интерфейса. В то же время очевидно, что для создания эффективных приложений на основе этого продукта крайне желательно иметь механизм его гибкой настройки и функционального расширения с помощью средств программной автоматизации. В версии, представленной осенью 2003 г., такие задачи решаются с помощью скриптовых языков (JScript и VBScript). В новом варианте для этого можно будет применять расширения, создаваемые на VB.NET или C# с помощью Visual Studio .NET 2003 и нового инструмента - Microsoft Office InfoPath 2003 Toolkit for VS.NET.

В целом работа с InfoPath Toolkit выглядит примерно так же, как со средствами VS Tools for Microsoft Office. После его установки в диалоговом окне проектов VS.NET появляется новый значок для создания специальных проектов InfoPath Project. Разработка выполняется с помощью новой формы или путем копирования существующей формы InfoPath 1.0. В последнем случае скриптовый код JScript или VBScript автоматически преобразуется в управляемый код C# или VB.NET. Разработчик может прямо в среде VS.NET визуально сравнить исходный и полученный программный код, чтобы проконтролировать правильность выполненного преобразования, основная суть которого - замена механизма позднего связывания исполняемого кода на модель раннего связывания.

Проекты InfoPath содержат ссылку на программные компоненты (классы, интерфейсы, перечисления и т. п.) пространства имен Microsoft.Office.Interop.InfoPath.SemiTrust, с помощью которых разработчик получает доступ ко всем основным внутренним функциям приложения (рис. 5). Например, набор Delegates предоставляет 13 событий, которые позволяют отслеживать действия с кнопками и полями формы, диалоговыми окнами или меню в конструкторе InfoPath. Для управления XML-документами InfoPath используется объект DataDOMEvent, включающий 22 свойства и 14 методов. В целом же поддержка XML-технологий базируется на использовании библиотеки Microsoft XML Core Services (MSXML) 5.0.

Fig.5
Рис. 5. Доступ к внутренним функциям InfoPath 2003 SP-1 выполняется с помощью иерархической системы объектов, представленных в пространстве имен Microsoft.Office.Interop.InfoPath.SemiTrust.

В заключение нужно отметить, что InfoPath SP-1 имеет опцию обратной совместимости с текущим вариантом продукта, автоматически исключающую использование новых функций. Это придает надежность созданию форм, работающих в среде разных версий InfoPath. Однако, учитывая новизну данного приложения и его пока не слишком широкое практическое применение, конечно, имеет смысл сразу ориентироваться на применение его новых возможностей. Впрочем, тем, кто хорошо знаком с традициями Microsoft, все это не должно казаться удивительным: давно известно, что применять на практике новые продукты корпорации разумно только после выхода второй версии.