Михаил Шарко,
руководитель проекта
MichaelSh@astrosoft.ru

Любая система комплексной автоматизации внедряется не на пустом месте. Как правило, она заменяет устаревшие системы (которые на начальных этапах сосуществуют с ней), а затем нередко функционирует в окружении других специализированных приложений, выступая для них как центр данных. Следовательно, для разработчиков крупных приложений масштаба предприятия, в частности, ERP-систем, большое значение имеет хорошо продуманная архитектура, обеспечивающая необходимую гибкость для интеграции с другими приложениями. В свою очередь, компании, решившие внедрить определенную ERP-систему, должны быть уверены, что она впишется в существующую инфраструктуру и станет ее органичной частью, а не дорогим и бесполезным украшением. В этой статье мы поговорим об интеграции с внешними приложениями на примере ERP-системы SAP R/3.

SAP Open Business Framework

Система SAP R/3, разработанная компанией SAP AG (http://www.sap.com), не случайно относится к числу наиболее популярных ERP-систем во всем мире. Это стало возможным благодаря продуманности архитектуры системы и выполнению трех основных принципов:

  • интеграция с существующим программно-аппаратным окружением;
  • единый внутренний коммуникационный стандарт;
  • способность адаптировать новые технологии и стандарты.

Эта концепция воплощена в открытой интеграционной среде системы - SAP Open Business Framework. Основное положение этой концепции состоит в том, что бизнес-компоненты меняются гораздо медленнее, чем технологии. Например, логика бухгалтерского учета вряд ли изменится в течение нескольких лет, в то время как способ отображения данных на конкретной платформе может меняться быстро. Поэтому имеет смысл создать бизнес-компонент (например, "Сотрудник") и разработать строгий неизменный интерфейс к нему, что гарантирует независимость его от версий R/3 и возможность использования таких бизнес-компонентов во внешних приложениях.

Основа открытой интеграционной среды R/3 - бизнес-объект, инкапсулирующий данные конкретного объекта и логику их обработки. Бизнес-объекты логически сгруппированы и размещены в репозитории бизнес-объектов (SAP Business Object Repository). Для предоставления внешнего доступа к функциональности бизнес-объектов разработаны специальные интерфейсы BAPI (Business Application Program Interface), которые по сути представляют собой методы бизнес-объектов: например, бизнес-объект Customer имеет BAPI CreateFromData для создания этого объекта.

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

Коннекторы

Коннекторы (Connectors), разработанные компанией SAP AG, позволяют интегрировать внешние приложения или технологии с системой SAP R/3 за счет использования открытых стандартов. На текущий момент существуют несколько коннекторов: SAP DCOM Connector, SAP Business Connector, SAP Java Connector, SAP .NET Connector. Рассмотрим кратко их возможности.

SAP DCOM Connector

Исторически это первый коннектор, разработанный SAP AG совместно с Microsoft в конце 90-х годов XX века. Он использует распределенную компонентную модель (DCOM) для организации доступа к бизнес-объектам R/3. Для каждого бизнес-объекта R/3 генерируется прокси-компонент COM, методами которого как раз и являются BAPI. Эти прокси-компоненты размещаются в приложении COM+, тем самым обеспечивая системе встроенные преимущества COM+: кэширование каналов связи с сервером R/3 и управление транзакциями. Для связи между прокси-компонентами и сервером R/3 используется специализированная библиотека низкоуровневого протокола RFC (Remote Function Call), по которому происходит обмен данными между SAP-системами. Поддерживаются синхронный и асинхронный режимы протокола RFC, а также протоколы, использующие транзакции (tRFC) и очереди (qRFC). В итоге Windows-программистам остается только использовать COM-компоненты привычным им образом, не заботясь о тонкостях взаимодействия в SAP R/3.

Наряду с поддержкой бизнес-объектов и BAPI коннектор DCOM может создавать прокси-компоненты для RFC-функций и документов IDOC (Intermediate Document), созданных для электронного обмена данными (EDI) как между системами SAP, так и с внешними системами.

SAP Business Connector

После признания XML международным стандартом обмена данными компания SAP AG разработала бизнес-коннектор, обменивающийся с внешними приложениями с помощью XML-документов. Поскольку XML-документы могут передаваться через Интернет по протоколу HTTP, этот бизнес-коннектор позиционируется как прослойка среднего уровня между SAP R/3 и Интернет-приложениями, позволяющая реализовывать бесшовную интеграцию B2B (рис. 1).

Fig.1 Рис. 1. Интеграция с помощью SAP Business Connector.

Практически все возможности взаимодействия с объектами R/3 (BAPI, RFC-функции, IDOC), которые были описаны в DCOM-коннекторе, существуют и для бизнес-коннектора. Бизнес-коннектор - составная часть SAP's Internet Business Framework (IBF); он предоставляет возможность сотрудничества с помощью Интернет-технологий как на уровне пользователей (Workplace - внутри компании, mySAP Marketplace - между компаниями), так и на уровне компонентов и бизнес-процессов.

SAP Java Connector

SAP Java Connector представляет собой инструментарий, позволяющий Java-приложениям взаимодействовать с любыми системами SAP и вызывать функции Java из среды SAP-систем. Java Connector также поддерживает работу с BAPI, RFC-функциями и IDOC, позволяет работать в синхронном и асинхронном режиме, использует транзакции и очереди при выполнении операций и пул клиентских соединений.

SAP .NET Connector

SAP .NET Connector официально объявлен преемником DCOM-коннектора, т. е. наследует все его возможности. Однако технология .NET позволила расширить функциональность этого коннектора и упростить его использование для разработчиков приложений.

SAP .NET Connector позволяет работать с BAPI, RFC-функциями и IDOC из любого .NET-приложения, а также дает доступ к .NET-компонентам из любого приложения mySAP.com.

В режиме разработки в Visual Studio.NET специальный Proxy Wizard упрощает интеграцию данных и процессов SAP-систем, предоставляя простой и интуитивно понятный пошаговый режим. Proxy Wizard интерактивно генерирует классы на языке C# и добавляет их в текущий .NET проект; при этом создается шаблон кода для соединения и регистрации в системе SAP. После этого программист имеет доступ ко всем свойствам, методам и даже структурам таблиц объекта SAP из своего .NET-приложения с полной поддержкой IntelliSense (рис. 2).

Fig.2 Рис. 2. Интеграция с помощью SAP .NET Connector.

В режиме выполнения SAP .NET Connector проводит все необходимые коммуникации с SAP-сервером. В качестве коммуникационного протокола может использоваться как RFC, так и SOAP. Поддерживается транзакционный протокол tRFC и протокол с использованием очередей qRFC. Ради безопасности соединения можно использовать различные режимы, включая аутентификацию (через форму логина), Kerberos, сертификаты X.509 и Microsoft Passport.

Таким образом, набор коннекторов позволяет реализовать самые разные способы интеграции внешних приложений с системами SAP. Это могут быть как специальные решения, так и универсальные адаптеры (например, Microsoft Adapter for SAP для BizTalk Server использует DCOM Connector). В частности, компания "АстроСофт" (http://www.astrosoft.ru) создала решение, которое объединяет в себе как универсальность доступа к данным SAP R/3, так и простоту создания клиентского приложения.

"Корсар" - клиент для SAP R/3

В 2000 г. в одном из проектов компания "АстроСофт" столкнулась с необходимостью интегрировать собственное приложение с SAP R/3. Анализ коннекторов показал, что оптимальным решением можно считать SAP DCOM Connector. Для работы с несколькими бизнес-объектами такой подход был бы вполне оправдан. Однако если число бизнес-объектов и бизнес-процессов, выполняемых на их основе, превышает два десятка, то скупость метаданных прокси-компонентов, генерируемых SAP DCOM Connector, оказывается узким местом, и для Windows-программистов рабочей средой становится система SAP R/3. Поэтому было решено создать компоненты, содержащие подробные метаданные бизнес-объектов SAP, а также простой визуальный редактор, использующий эти компоненты для быстрой генерации ASP-страниц. Дальнейшее развитие этой технологии привело к созданию продукта "Корсар".

Продукт "Корсар" Astrosoft Client for SAP R/3 предоставляет инструментарий для организации эффективного доступа к данным и транзакциям SAP R/3 из различных приложений, в том числе Web-форм, которые можно создать, не написав ни единой строчки кода, с помощью одного из модулей продукта. Для доступа к данным SAP R/3 применяются только стандартные технологии компании SAP и полностью сохраняется логика и целостность данных транзакций R/3. Для доступа к данным R/3 через Интернет на рабочих станциях пользователей достаточно иметь только Microsoft Internet Explorer.

Astrosoft Client for SAP R/3 состоит из трех модулей (Генератор Transact-объектов, Генератор форм, Административный модуль) и расширения, обеспечивающего работу через Web-сервисы.

Генератор Transact-объектов (GTO) предназначен для генерации специальных COM-компонентов (Transact-объектов), которые реализуют конкретную транзакцию SAP R/3. Этот модуль использует стандартный SAP DCOM Connector для доступа к данным R/3 через BAPI или RFC-функции. В результате работы генератора создается репозиторий Transact-объектов.

Генератор форм (GASP) предназначен для создания пользовательских форм. Результат его работы - сгенерированные ASP-страницы, которые размещаются на Интернет-сервере компании. Этот модуль использует Transact-объекты, созданные соответственно генератором Transact-объектов.

Административный модуль (AM) упрощает предоставление пользователям прав доступа к Transact-объектам, позволяет применять различные сценарии аутентификации пользователей и групп пользователей, а также ведет журнал действий пользователей.

Web-сервисы (WS) - это набор программ, позволяющих клиентским приложениям работать с Transact-объектами через Web-сервисы, а также упростить создание таких клиентских приложений в среде как Visual Studio.NET, так и Visual Studio 6 или других IDE, работающих с COM-компонентами.

Как работают модули "Корсар"

Генератор Transact-объектов

Генератор Transact-объектов - это основной модуль ПО "Корсар". Он генерирует специальные COM-компоненты, работающие с данными только одной транзакции. Такие компоненты называются Transact-объектами (ТО).

В работе с модулем можно выделить два шага (рис. 3), выполняемых с помощью специальных Мастеров. На первом шаге с помощью Мастера репозитория Transact-объектов (TOR) на сервере приложений генерируется репозиторий бизнес-объектов SAP R/3 (в виде набора BAPI Proxy COM-компонентов). Эта операция выполняется с помощью стандартного SAP DCOM Connector и необходима для того, чтобы Windows-приложения могли работать с данными SAP R/3. При этом в репозиторий Transact-объектов полностью переносится структура репозитория бизнес-объектов (BOR) SAP R/3, чего DCOM Connector не обеспечивает. На втором шаге c помощью Мастера Transact-объектов создаются Transact-объекты, соответствующие определенным транзакциям SAP R/3. Их можно создавать для любого BAPI или RFC-функции, открытой для доступа из внешних систем. В отличие от COM-компонентов, генерируемых SAP DCOM Connector, Transact-объекты содержат расширенные метаданные транзакции: структуру транзакции с точностью до полей, связь полей со справочниками, структуру этих справочников и их взаимосвязь друг с другом, обязательные для заполнения поля, связанные с транзакцией отчеты с параметрами их запуска, словесные описания параметров и т. д. Таким образом, Transact-объекты дают мощную и удобную основу для организации работы с данными SAP R/3 из любого Windows-приложения. Примером использования Transact-объектов может служить модуль генератора форм.

Fig.3 Рис. 3. Логическая схема системы "Корсар".

Генератор форм

Генератор форм представляет собой упрощенный визуальный редактор ASP-страниц. Используя метаданные Transact-объектов из репозитория Transact-объектов (см. рис. 3), разработчик с помощью простых операций перетаскивания может без единой строчки нового кода создать содержимое пользовательских форм, соответствующих конкретной транзакции, изменить дизайн формы, установить ряд свойств для элементов формы: значения по умолчанию, маска ввода и т. д. Можно создавать цепочки транзакций, при которой выходные данные одной транзакции становятся входными данными следующей. Далее происходит генерация ASP-страниц, которые публикуются на Web-сервере компании и сразу же становятся доступными для пользователей. Пользователи, работая с пользовательскими формами через Web-браузер, могут выполнять транзакции или получать отчеты системы SAP R/3. Доступ к данным R/3 происходит по следующей схеме: ASP-страница вызывает соответствующий Transact-объект, а тот, в свою очередь, вызывает один из методов BAPI Proxy-компонента, который и обменивается данными с бизнес-объектом SAP R/3 по стандартному протоколу RFC.

Административный модуль

Административный модуль упрощает процесс предоставления пользователям прав доступа к Transact-объектам, вводя дополнительный контур безопасности. Права доступа могут предоставляться как отдельным пользователям, так и группам пользователей. Предусмотрены различные сценарии аутентификации в SAP R/3. Все действия пользователей при работе с Transact-объектами хранятся в соответствующих журналах, которые можно анализировать с помощью Административного модуля.

Web-сервисы

Для сценариев удаленного доступа к данным SAP R/3 из клиентских приложений было разработано расширение системы "Корсар" в виде Web-сервисов. Web-сервисы представляют собой набор программ (рис. 4), которые позволяют обмениваться данными с R/3 через Transact-объекты и удобны для разработки клиентских приложений. Для среды разработки Microsoft Visual Studio.NET созданы генераторы WSDL и прокси-класса для выбранного Transact-объекта, а для Microsoft Visual Studio 6 или других IDE, поддерживающих работу с COM-компонентами, разработан компонент WSCaller, эмулирующий в режиме разработки работу с Transact-объектом в режиме offline и выступающий как Web Service Proxy в режиме выполнения.

Fig.4
Рис. 4. Логическая схема работы Web-сервисов "Корсар".

Сценарии использования

Функциональность Astrosoft Client for SAP R/3 позволяет применять его в разных сценариях работы с данными SAP R/3.

Легкий Web-клиент

Это основной сценарий работы системы "Корсар", использующий преимущества генератора форм. С его помощью можно создать упрощенный привычный интерфейс для пользователей с низкой компьютерной квалификацией, например, кладовщиков. При этом пользовательские формы могут содержать только необходимую информацию, что упрощает и ускоряет работу с простыми операциями, такими, как оприходование и отпуск материалов. Благодаря этому пользователями такого сценария могут быть исполнители простых операций, требующих тем не менее доступа к R/3.

Другое очевидное применение - организация удаленного доступа к данным R/3 для мобильных пользователей и даже для клиентов компании. Например, компания имеет дистрибьюторскую сеть для сбыта своей продукции. Дистрибьюторы должны отчитываться о продажах, заказывать товар и т. д. Обычно это организуется путем отправки файлов по электронной почте, импорта данных в R/3 или даже ручного их ввода. С помощью системы "Корсар" можно быстро создать соответствующие формы ввода данных и предоставить их дистрибьюторам для доступа через Интернет.

Шлюз для внешних приложений

Многие крупные компании, применяющие ERP-систему SAP R/3, тем не менее пользуются и другими приложениями для выполнения определенных задач. В частности, весьма популярной остается система "1С:Предприятие". Такой подход неминуемо приводит к проблемам с интеграцией приложений для синхронизации данных или консолидации информации в основной системе.

Существует несколько способов решения задач интеграции. Самый универсальный, но в то же время и самый дорогой, - использование специальных серверов для интеграции приложений (например, Microsoft BizTalk Server), в состав которых входит набор адаптеров для популярных систем и приложений. Другая крайность - разработка специальных конвертеров или синхронизаторов под конкретную задачу силами программистов компании или привлеченных консультантов. Недостаток такого подхода состоит в том, что для новых задач интеграции понадобятся и новые разработки. Иногда сложность процесса обмена данных и специфика работы с конкретной системой требуют offline-решения с импортом/экспортом данных, что не всегда приемлемо для автоматизации бизнес-процесса. И наконец, существуют системы, упрощающие автоматизацию путем предоставления ряда сервисов, которые либо выполняют сложные операции обмена данными, либо обеспечивают удобный интерфейс для настроек этой процедуры. Astrosoft Client for SAP R/3 предоставляет именно такой сервис в двух вариантах: с использованием COM-технологий и XML Web-сервисов.

Минимальная конфигурация системы "Корсар" для этого сценария включает только модуль "Генератор Transact-объектов" и расширение Web-сервисов (если используется вариант Web-сервисов). Дополнительно можно использовать административный модуль для настройки прав доступа к операциям обмена данных и ведения журнала операций. Сценарий интеграции основан на упрощении доступа к данным R/3 по сравнению с использованием "чистых" компонентов SAP-коннекторов.

В случае COM-технологии на клиентской стороне используется специальный компонент ActiveX, который инкапсулирует детали взаимодействия с Transact-объектами и предоставляет программисту набор простых методов инициализации необходимого Transact-объекта, заполнения входных данных, запуска транзакции обмена данными с R/3 и получения выходных данных. При использовании Web-сервисов разработка клиентских .NET-приложений упрощается с помощью соответствующих .NET прокси-компонентов, взаимодействующих с Transact-объектами.

Заключение

Несомненные достоинства архитектуры ERP-систем - их расширяемость и возможность интеграции с внешними приложениями. Для этого ERP-системы предоставляют разработчикам стандартный интерфейс коммуникации, универсальный механизм связи, а также инструментарий (connectors), автоматизирующий интеграцию. Все это служит хорошей основой для интеграционных решений. Однако эти технологии в силу своей универсальности, как правило, малоэффективны для решения специализированных задач. Поэтому существуют разработки, реализующие надстройки над такими технологиями и тем самым позволяющие значительно упростить автоматизацию определенных бизнес-задач.

Одно из таких решений - система "Корсар", разработанная компанией "АстроСофт". Она предназначена для организации эффективного доступа к данным и транзакциям SAP R/3 из различных приложений, в том числе Web-форм, которые можно создать без написания кода, с помощью одного из модулей продукта. В планах развития продукта - переход на использование SAP .NET Connector и организация основного сценария доступа к данным SAP R/3 через XML Web-сервисы.