Интеграция корпоративных информационных систем может обходиться владельцам чуть ли не дороже, чем их внедрение. Причина кроется в том, что используемые сегодня «традиционные» способы интеграции зачастую оказываются или недостаточно гибкими, или требуют слишком больших затрат и усилий.
Сегодня для интеграции приложений чаще всего используются различные варианты выгрузок (в форматах XML, CSV) и веб-сервисы SOAP. И почти всегда это связано с созданием дополнительного программного кода, отражающего структуру и специфику данных, которыми обмениваются приложения. Как следствие, при изменении структуры данных в этот код придется вносить изменения. Еще одно серьезное ограничение: с помощью выгрузок и SOAP сложно наладить связь между более чем двумя информационными системами. Кроме того, приходится придумывать способы восстановления целостности данных после сбоев, мониторинга работоспособности обмена, разрешения конфликтов. В общем, поддержка подобных решений — увлекательное и недешевое занятие.
В крупных организациях нередко применяют шины обмена сообщениями и системы управления мастер-данными (Master Data Management, MDM). Эти инструменты предоставляют больше возможностей, но дороги и сложны как во внедрении, так и в эксплуатации.
Есть ли реальные альтернативы «традиционным» методам интеграции? Да, такие варианты существуют. Один из них основан на применении технологий Semantic Web.
«Семантическая паутина»
Идеи семантических сетей, зародившиеся более чем полвека назад, нашли практическую реализацию в эпоху Интернета. В частности, они служат фундаментом «семантической паутины» (Semantic Web). Этот термин, введенный в обращение группой разработчиков технологий Интернета, обозначает набор принципов, на которых, по их мнению, базируется будущее Всемирной сети. Суть этих принципов проще всего объяснить в сравнении с сегодняшней структурой Интернета.
Мы привыкли к тому, что Интернет — это огромное множество сайтов, каждый из которых содержит прежде всего текстовую информацию. Ориентироваться в ней помогают поисковые машины, старающиеся ответить на наши запросы. При этом ищут они, конечно же, такие страницы, на которых упомянуты введенные нами слова. Например, если мы зададим поисковой машине запрос «Купить Mercedes не старше пяти лет», то увидим в качестве результатов поиска обсуждения этой темы в форумах, предложения по страхованию, кредитам, запчастям, и только небольшая часть выдачи будет содержать собственно объявления о продаже автомобилей. Разумеется, гораздо рациональнее искать интересный нам автомобиль, применяя специализированные сервисы, позволяющие выбрать марку и модель, установить желаемый диапазон цен, года выпуска, ограничить результаты поиска предложениями в определенном городе, выбрать множество других характеристик, определяемых нашими условиями фильтрации. Результат, который мы получим, будет в точности соответствовать условиям запроса и не будет содержать ничего, кроме объявлений о продаже автомобилей. Продвинутые сервисы позволяют производить такой поиск по всем автомобильным порталам одновременно, не ограничиваясь каким-то одним сайтом. Разумеется, для этого все порталы должны предоставлять нужные сведения в виде, пригодном для автоматической обработки.
Согласно идее разработчиков «семантической паутины», похожим образом должны уметь работать практически все узлы Всемирной сети. Для этого они должны содержать данные, которые можно автоматически обрабатывать с учетом их смысла (семантики) и структуры.
Для решения этой задачи были разработаны и утверждены консорциумом W3C в качестве стандартов язык описания фактов Resource Description Framework (RDF), языки для формализации онтологий Web Ontology Language (OWL) и RDF Schema (RDFS). Онтология представляет собой «словарь терминов», с его помощью мы можем выразить сведения о каких-либо объектах, их свойствах и отношениях. (Например, онтология автомобильного портала должна содержать понятия «автомобиль», «марка», «модель», а также описания связей между объектами и их свойствами: «выпущен в.. .», «является моделью», «имеет цвет».) Сведения о конкретном объекте, например о продаваемом автомобиле, выражаются посредством набора утверждений, записанного с помощью этих терминов. Утверждения группируются в математический граф, становясь его ребрами. Вершинами графа являются объекты и их свойства. Каждый объект имеет уникальный идентификатор (URI). Каждое ребро этого графа — отдельное утверждение (например, «этот автомобиль выпущен в 2009 году»). Это утверждение можно записать в синтаксисе RDF, а затем передать, вместе с другими утверждениями, какому-либо сервису, который обработает полученную информацию. Другой пример такого графа — любая социальная сеть: в вершинах графа, который ее описывает, находятся пользователи, а связи между ними — это его ребра.
Для обработки информации, представленной в семантической форме, разработаны специальные программные средства, такие как SPARQL — язык запросов к массивам данных RDF, предоставляющий совершенно иной уровень построения баз данных и запросов к ним по сравнению с реляционными базами.
Реальная интеграция
Описываемый в статье подход применен, например, в группе компаний «СвердловЭлектро» при интеграции используемой там CRM-системы с системой, в которой работают инженеры-проектировщики. Менеджеры по работе с клиентами вводят в CRM заявки на составление предварительных смет на различные виды продукции предприятия (например, трансформаторы). Заявки поступают в информационную систему проектного отдела, где их обрабатывают инженеры. Результат обработки каждой заявки проходит процедуру утверждения и возвращается в CRM-систему, где его видит менеджер. Весь процесс происходит так, что передача данных между системами незаметна для их пользователей. Менеджер прямо из CRM-системы может наблюдать за обработкой заявки в другой системе и дополнять содержащуюся в ней информацию.
Семантические технологии для интеграции приложений
Конечно же, семантические средства годятся не только для обработки данных из Интернета. Используя их, можно «наладить диалог» между любыми информационными системами.
Представим, что в компании есть три системы, в которых хранятся сведения о клиентах: CRM, ERP и система документооборота. Конечно, эти сведения будут иметь разную структуру. Разные системы могут быть источником актуальной информации о тех или иных свойствах клиента. Например, номера телефонов и имена контактных лиц будут актуальнее в CRM-системе, а банковские реквизиты — в ERP. Если менеджер по продажам, работающий с CRM-системой, внесет в нее новые реквизиты клиента, эту информацию необходимо перенести и в ERP. Для этого разумно создать шину обмена сообщениями, которые будут отражать семантику производимых действий. То есть после изменения реквизитов клиента в CRM по шине отправится сообщение такого типа: «Номер расчетного счета клиента № 787 теперь равен 401018». Другие системы смогут интерпретировать это сообщение в соответствии со своими потребностями.
Чем сложнее данные, передаваемые между приложениями, чем чаще меняется их структура, чем больше самих систем, тем более рельефными становятся преимущества кодирования информации при передаче в семантическую форму. Благодаря этому мы абстрагируем каждую из систем от структуры данных объектов в других системах и существенно снижаем риск сбоев при внесении изменений в какую-либо из программ.
Как может выглядеть схема интеграции корпоративных приложений в самом общем виде? Один вариант — использование центра обмена семантическими сообщениями в качестве интеграционной шины: интегрируемые информационные системы передают определенные срезы той информации, которой они обладают, на единый узел корпоративной интеграции, который распространяет сообщения другим системам. Одним из его компонентов выступает сервер SPARQL или иное хранилище информации, представленной в семантической форме. Потребитель информации (пользователь или информационная система), работающий с этим сервером, имеет дело с огромным информационным графом, его вершинами являются объекты и их свойства, а гранями — связи между ними. Чтобы построить такой граф, информационные системы, включенные в обмен, должны использовать общую онтологию. Для некоторых сфер применения и отраслей промышленности существуют стандартные онтологии, их можно использовать в готовом виде или расширить для своих целей. Можно и создать свою онтологию с нуля.
Другой подход предлагается в стандарте ISO 15926, разработка которого длится уже несколько лет. В различных частях стандарта описана основа стандартной онтологии для любых предметных областей, также в нем представлены детальные онтологии для нефтегазовой отрасли и ряд шаблонов. Этот стандарт сосредоточен скорее на способе представления информации, нежели на методах ее передачи. Девятая часть стандарта, посвященная технологическим аспектам взаимодействия систем, пока имеет статус черновика. Она предполагает, что информационные системы, участвующие в обмене, «выставляют» данные, которыми готовы поделиться с другими, на так называемые фасады (в роли таких фасадов, вероятнее всего, выступает SPARQL-сервер). При таком способе сложно будет добиться синхронизации данных в различных системах — но, скорее всего, такая задача разработчиками стандарта и не ставилась, он предназначен скорее для обмена данными между организациями в пределах крупной производственной цепочки, нежели для интенсивного обмена внутри одной компании.
На мой взгляд, метод с единым интеграционным центром лучше подойдет для предприятий среднего масштаба с высокой интенсивностью информационного обмена между системами, серьезными требованиями к отказоустойчивости и оперативности передачи данных. В этом случае без центрального сервера не обойтись. В его задачи будут входить маршрутизация (с учетом прав доступа каждой системы, их «подписки» на определенные виды данных и события), проверка и восстановление целостности данных, обеспечение гарантированной доставки, при необходимости — повтор передачи. Замечу, что этот подход не противоречит ISO 15926 — нет никакой проблемы в том, чтобы центральный сервер в нашей архитектуре начал функционировать как «фасад».
Системы, работающие по такому принципу, существуют уже сегодня. Подобно тому как технологии Semantic Web должны изменить принципы работы с информацией в Интернете и инструменты поиска, использование семантических технологий для интеграции данных обещает открыть новые горизонты и решить наболевшие проблемы в этой сфере.