В настоящее время ИТ-инфраструктура средних и крупных предприятий и организаций характеризуется разнообразием используемого программного обеспечения: ERP, MDM, CAD, бухучет, офисные приложения и т.д. Эффективность использования разнородного ПО в основном определяется эффективностью обмена данными между различными его компонентами (см. рис. 1).

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

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

  • Обмен между базами данных приложений с помощью SQL-сценариев (в общем случае сценариев на языке доступа к базе данных).
  • Обмен файлами.
  • Использование API или Web-сервисов по принципу PUSH и PULL (запись или чтение данных).
  • Использование сервисной шины предприятия.

Построение обмена данными на основе сервисной шины предприятия имеет ряд преимуществ:

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

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

Предлагаемый подход

В основе предлагаемого подхода лежит построение единой (объединяющей) семантической сети, описывающей предметные области интегрируемых приложений. Затем следует построить схему отображения информационных моделей приложений на единую семантическую сеть. Эти отображения можно использовать для «интерпретации» данных, передаваемых в сеть или из сети. Интеграция приложений представляет собой:

  • получение информационных объектов в формате XML из приложения 1 по сервисной шине предприятия,
  • их интерпретацию в виде фрагмента семантической сети,
  • интерпретацию в формате XML полученного фрагмента семантической сети в виде коллекции объектов приложения 2 и их свойств,
  • маршрутизацию XML-представления полученных информационных объектов по сервисной шине предприятия в приложение 2 (см. рис. 3)

Метамодель единой семантической сети представляет собой видоизмененную метамодель языка EXPRESS, являющегося частью международного стандарта ISO 10303 (STEP). Этот стандарт был разработан для построения описаний изделий, которые могли бы использоваться как своеобразный идентичный цифровой образ изделия на протяжении всего его жизненного цикла. В настоящее время он поддерживается всеми поставщиками CAD-, PDM- и CAM-решений. Базовыми понятиями метамодели являются: сущность (Entity); отношение (Relationship) и класс (Class); предикат (Predicate) и λ-выражение (LambdaExpression). Сущность и отношение — это классические понятия информационного моделирования. Понятие «класс» описывает некоторое множество элементов, которое может быть задано явным перечислением входящих в него элементов, объединением, пересечением, разностью или декартовым произведением других классов, а также предикатом (1-го порядка), определяющим принадлежность объекта множеству. Предикаты используются для определения принадлежности элемента множеству и вычисляемых отношений, а λ-выражения — для определения вычисляемых свойств. Метамодель определяет структуру БД, к которой организован стандартизированный доступ (SDAI), обеспечивающий чтение-запись в XML-формате в соответствии с заданной пользователем информационной моделью в формате XSD. Структура БД открыта, поэтому при желании можно использовать SQL.

В качестве технологической платформы предлагается использовать семейство ПО Talend: Talend Open Studio (средство разработки) и Talend MDM (управление справочниками). Платформа включает в себя сервер приложений JBoss, среду разработки на базе Eclipse и обеспечивает разработку Web-сервисов, функционирующих на сервере JBoss, путем построения цепочек преобразования данных из обширной библиотеки компонентов. В библиотеку входят:

  • компоненты для доступа к самым разным приложениям — серверам БД, ERP, сервисным шинам предприятия и др.;
  • компоненты обработки различных форматов данных — простой текст, текст с заданными разделителями, XML и т.д.;
  • компоненты управления последовательностью преобразований (развилки, циклы и т.д.).

Пример

В качестве примера рассмотрим обмен платежным поручением между «1С» и частной информационной системой. Предположим, что платежное поручение определяется датой, номером, получателем, плательщиком, основанием (утвержденной заявкой на денежные средства) и составом (расшифровкой). Семантическую сеть будем строить, «разузловывая» платежное поручение на отношения. Сущность PaymentOrder (Платежное поручение) имеет отношения: Номер (отношение DocumentRefNo, тип STRING), Дата (отношение DocumentDate, тип DATE), Основание платежа (отношение PaymentBasis, тип RequestForFunds — сущность), Контрагент (отношение Contractor, тип Contractors — класс, получаемый объединением классов физических и юридических лиц) и Состав платежа (отношение PaymentItems, тип PaymentItem — сущность). Перечисленные сущности, отношения и классы приведены на рис. 4. Далее рассмотрим понятие DocumentObject.ПлатежноеПоручениеИсходящее, являющееся платежным поручением в «1С». В соответствии с XSD конфигурации «1С», которую легко можно выгрузить из «1С», понятие DocumentObject.ПлатежноеПоручениеИсходящее имеет более семидесяти свойств, включая: Ref (идентификатор), дату (Date), номер (Number), основание платежа (ДокументОснование), получателя платежа (Контрагент), состав платежа (РасшифровкаПлатежа), статьи затрат (СтатьяДДС) и др.

При построении соответствия между элементами информационной модели понятия, передаваемого из стороннего приложения, и уже построенной семантической сетью можно выделить следующие случаи:

  • понятие имеет однозначный «аналог» в семантической сети; на рис. 4 они выделены зеленым цветом и имеют два наименования — PaymentOrder (DocumentObject. ПлатежноеПоручениеИсходящее) и ApplicationForFunds (DocumentRef.ЗаявкаНаРасходованиеСредств);
  • отношение имеет однозначный «аналог» в семантической сети, типы значений совпадают; на рис. 4 они выделены зеленым цветом и имеют два наименования — DocumentDate (Date), DocumentRefNo (Number), PaymentBasis (ДокументОснование) и др.;
  • отношение имеет однозначный «аналог» в семантической сети, типы значений не совпадают (T1 — множество значений отображаемого свойства, T2 — множество значений свойства, входящего в семантическую сеть). Возможны следующие ситуации:
    • между T1 и Т2 можно установить взаимно однозначное соответствие (класс CostTypes на рис. 5),
    • T1 входит в T2 или существует F, такая, что F (T1) входит в T2,
    • T2 входит в T1 или существует F, такая, что F (T2) входит в T1, разность между T1 и T2 (F (T2)) — непустое множество;
    во втором и третьем случаях необходимо построить отображение G, которое построит соответствие между разностью T1 / T2 (T1 / F (T2)) и T2;
  • понятие или отношение не имеют аналогов в семантической сети (на рис. 4 они выделены красным цветом). В этом случае семантическая сеть должна быть достроена — созданы новые классы, отношения, сущности.

Фрагмент интерпретатора объекта «1С» DocumentObject.ПлатежноеПоручениеИсходящее приведен на рис. 4. XML-представление платежного поручения поступает из сервисной шины, в качестве которой используется ApacheMQ. Полученное представление преобразуется в набор строк с помощью компонента tExtractXMLField. Этот компонент вычитывает узел по заданному адресу, а затем каждый узел XML-представления (соответствующий свойству объекта) отображает на столбце результирующего набора записей.

Полученный набор записей содержит столбцы со значениями свойств объектов. Как упоминалось выше, некоторые значения могут быть отображены в семантической сети напрямую (типы совпадают), а некоторые требуют своеобразного «перевода». Для этого в интерпретаторе используются компоненты tMap, позволяющие определить отображение значений свойств XML-представления на значения свойств, входящих в семантическую сеть.

Для построения отображений используются «справочники» (компоненты PaymentCategoryIn, RequestForPayment, qQualiff_pp, ContractorIn, BankAccountIn, OrganizationIn), содержащие значения идентификаторов элементов класса CostTypes, экземпляров сущности ApplicationForFunds, элементов класса Contractors и др.). Результат отображения — набор значений свойств переданного объекта — передается в приложение 2 с помощью компонента tMSSqlOutput_1 (данные приложения 2 хранятся в БД MSSqlServer).

Выводы

В статье описан подход к интеграции приложений, основанный на отображении XML-представлений объектов приложений в семантическую сеть или из нее. В качестве технологической платформы в подходе используются Talend Open Studio и Talend MDM. Механизмом передачи объектов является сервисная шина предприятия ApacheMQ.

Глоссарий

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

Семантическая сеть — информационная модель предметной области, имеющая вид ориентированного графа, вершины которого соответствуют объектам предметной области, а дуги (рёбра) задают отношения между ними. XSD (XML Schema Definition) описывает структуру XML-документа и служит в известном смысле метамоделью для спецификации XML. Является более распространенной альтернативой предыдущей спецификации DTD (Document Type Definition).

SDAI (Standard Data Access Interface) — стандартный интерфейс доступа к данным, определяемый международным стандартом ISO 10303 (STEP). Производимые в нём операции в настоящее время реализованы в библиотеках таких популярных языков, как С, C++, Java.