Знание - прибыль!

АрхиГраф.MDM

Функциональность АрхиГраф.MDM

Руководство пользователя (PDF)

Руководство администратора (PDF, только оглавление)

Производительность

Демо-версия API

Свидетельство о регистрации

АрхиГраф.MDMдокументация на программный интерфейс

Более подробную информацию об архитектуре обмена данными с помощью АрхиГраф.MDM, а также о реализации адаптеров информационного обмена для работы с ней, можно найти в Технической документации на MDM-систему.

Эта страница посвящена описанию программного интерфейса АрхиГраф.MDM. Функции редактирования модели данных и содержимого справочников, разграничения прав доступа, контроля изменений, автоматической проверки целостности данных реализуются при помощи других наших продуктов, работающих в связке с MDM: Onto.pro и АрхиГраф.СУЗ.

Транспортный уровень обмена между MDM и приложениями

Принцип работы программного интерфейса АрхиГраф.MDM основан на обмене XML-пакетами с другими программными системами. Транспорт пакетов может осуществляться несколькими способами: при помощи очередей MQ (предпочтительный способ, и единственный возможный в высоконагруженных и высоконадежных архитектурах), SOAP-сервисов, или прямых HTTP-запросов. Форматы пакетов и последовательность обмена ими не зависят от способа передачи информации.

В конфигурации, когда обмен сообщениями происходит через MQ, для MDM и каждого приложения создается две очереди: входящих и исходящих сообщений. В качестве менеджеров очередей могут использоваться как коммерческие, так и Open Source решения.

Маршрутизацию сообщений соответствующим получателям обычно обеспечивает корпоративная сервисная шина (ESB). Она отвечает за перемещение сообщений из исходящей очереди отправителя во входящие очереди получателей, в том числе - на основе анализа содержимого пакетов. Правила маршрутизации настраиваются на уровне шины. В качестве ESB, работающей в связке с АрхиГраф.MDM, могут использоваться решения различных производителей, включая Open Source-продукты.

Диаграмма информационного обмена

В работе MDM-системы используются 7 видов пакетов, показанных на следующей диаграмме:

Диаграмма информационного обмена MDM

Как следует из диаграммы, информационные системы могут обращаться к MDM с запросами четврех видов. Далее мы рассмотрим каждый из видов запросов, а также типы пакетов, которыми MDM-система отвечает на них.

Вы можете также изучить работу системы на демонстрационном примере.

DataModelRequest - запрос на получение структуры модели

CatalogRequest - запрос на получение всех объектов определенного класса

EntityRequest - запрос на получение конкретного объекта

ChangesRequest - запрос на изменение конкретного объекта

DataModel - структура модели данных

Package - информация о конкретных объектах

OperationResults - результат запроса на выполнение операции

InvalidPackage - сообщение об ошибочном запросе

DataModelRequest
запрос на получение структуры модели

Параметры: StartElement - стартовый класс интересующего фрагмента модели. Если параметр пропущен, возвращается содержимое всей модели.

Ответ: DataModel - пакет с описанием структуры информационной модели: перечнем всех описанных в ней классов, атрибутов и связей.
В случае ошибки при обработке запроса, в ответ на этот и другие пакеты MDM возвращает пакет InvalidPackage.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<DataModelRequest StartElement="Компании"/>

CatalogRequest
запрос на получение всех объектов определенного класса

Параметры: Code - наименование класса, список объектов которого необходимо получить.

Ответ: Package - пакет с описанием сущностей указанного класса.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<CatalogRequest Code="Компании" ></CatalogRequest>

EntityRequest
запрос на получение конкретного объекта

Параметры: Code - код объекта, описание которого необходимо получить.

Ответ: Package - пакет с описанием сущностей указанного класса.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<EntityRequest Code="ИвановИИ" ></EntityRequest>

ChangesRequest
запрос на изменение конкретного объекта

Параметры: Пакет содержит теги Item, описание которых приводится в структуре пакета Package, содержащего информацию о каком-либо объекте. В одном пакете может быть передан запрос на изменение сразу нескольких объектов. Для каждого объекта передается свой тег Item.

Ответ: OperationResults - пакет с информацией о результатах выполнения операции.
Кроме того, после успешного выполнения операции MDM отправляет пакет Package, который получают все информационные системы, заинтересованные в сведениях об объектах такого типа.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<ChangesRequest Originator="ERP" >
[теги Item]
</ChangesRequest>

Атрибут Originator содержит идентификатор информационной системы-отправителя, и может использоваться ESB для маршрутизации сообщения.


Теперь опишем структуру возвращаемых пакетов.

DataModel
структура модели данных

Пакет состоит из множества тегов ObjectType, каждый из которых описывает какой-либо класс информационной модели.

Пример пакета, иллюстрирующий его общую структуру:

<?xml version="1.0" encoding="UTF-8"?>
<DataModel StartElement="Клиенты" Prefix="http://some-model.ru/instance">
<ObjectType Code="Компании" Name="Компании">
  <Parent ParentID="ЮридическиеЛица"/>
  <Attribute Type="Literal" AttributeID="Телефон" Name="телефон" DataType="xsd:string"
MinOccurence="1" MaxOccurence=""/> </ObjectType> <ObjectType Code="Персоны" Name="Персоны">   <Attribute Type="Literal" AttributeID="ДатаРождения" Name="дата рождения" DataType="xsd:date"
MinOccurence="1" MaxOccurence="1"/>   <Attribute Type="Reference" AttributeID="РаботаетВ" Name="работает в">     <Target TargetId="Компании"/>   </Attribute> </ObjectType> </DataModel>

Тег DataModel

Корневой тег модели данных.

Атрибуты:

  • StartElement - корневой элемент фрагмента модели, если был задан в запросе
  • Prefix - префикс названий элементов модели по умолчанию. Во всех остальных пакетах префикс не указывается, если он соответствует этому префиксу. Теоретически, в пределах одной модели данных могут использоваться разные префиксы. В этом случае идентификаторы элементов модели, имеющих другой префикс, будут иметь полный вид - http://.../.../[Имя элемента].

Тег ObjectType

Передает информацию о каком-либо классе.

Атрибуты:

  • Code - уникальный код класса
  • Name - читаемое наименование класса

Тег Parent

Передает информацию о том, что класс является потомком другого класса. Каждый класс может являться потомком любого числа других классов.

Атрибуты:

  • ParentId - уникальный код класса-родителя

Тег Attribute

Передает информацию об атрибуте, присущем объектам каком-либо класса. Атрибуты наследуются классами рекурсивно, то есть если атрибут "ИНН" объявлен для класса "Юридические лица", он считается объявленным и для объектов вложенного в него класса "Компании".

Атрибуты:

  • AttributeID - уникальный код атрибута
  • Name - читаемое наименование атрибута
  • Type - тип значения атрибута: Literal для атрибутов-литералов, Reference для атрибутов, хранящих ссылки на другие объекты.
  • DataType - используется для атрибутов-литералов, хранит тип значения. Указывается один из стандартных типов данных xsd: integer, string, date, dateTime, boolean, double.
  • MinOccurence - минимальное число значений этого атрибута для каждого объекта. Если MinOccurence=1, значит, атрибут обязателен.
  • MaxOccurence - максимальное число значений этого атрибута для каждого объекта. Атрибуты MinOccurence и MaxOccurence могут не указываться, тогда атрибут может принимать любое количество значений.

Тег Target

Указывает классы, объекты которых могут быть значениями для данного атрибута-ссылки.

Атрибуты:

  • TargetID - уникальный код класса

Package
информация о конкретных объектах

Пакет состоит из одного или нескольких элементов Item, каждый из которых передает информацию об одном объекте. В рамках одного пакета Package может прийти информация о нескольких взаимосвязанных сущностях разных типов, или о нескольких сущностях одного типа.

Каждый объект (сущность) характеризуется следующими параметрами:

  • Идентификатор - глобальный код объекта, присвоенный системой MDM. Обычно выглядит как URI, то есть адрес вида http://some-domain.ru/prefix/object. Первая часть идентификатора, до object, называется префиксом - обычно она одинакова для всех элементов модели. Стандартный префикс может указываться, или пропускаться. Префикс, отличный от стандартного, указывается в любом случае. Последняя часть URI, object, является собственно уникальным кодом объекта.
  • Наименование - стандартное свойство, присутствующее по умолчанию у всех элементов. Представляет собой читаемое название элемента.
  • Набором типов - перечнем классов, к которым относится объект. Каждый объект может относиться к любому количеству классов. Принадлежность к классам рекурсивна, т.е. для MDM тот факт, что объект принадлежит к некому классу иерархии, означает, что он одновременно является членом всех вышележащих классов.
  • Набором атрибутов - перечнем значений свойств данного объекта. Для свойств-литералов указывается непосредственное значение, для свойств-связей - уникальный идентификатор объекта, на которое ссылается свойство. В семантической модели каждое свойство каждого объекта может иметь столько значений, сколько разрешает информационная модель.

Пример пакета, иллюстрирующий его общую структуру:

<?xml version="1.0" encoding="UTF-8"?>
<Package>
  <Item Code="ИвановИИ" Name="Иванов И.И.">
    <Type TypeId="Персоны"/>
    <Type TypeId="Сотрудники"/>
    <Attribute Type="Literal" AttributeId="ДатаРождения" Value="1970-01-01"/>
    <Attribute Type="Reference" AttributeId="РаботаетВ" Value="ОООАльфа"/>
  </Item>
</Package>
				

Тег Package

Используется для группировки информации о нескольких объектах

Атрибуты:

  • Destination - коды систем-получателей. Может использоваться ESB для маршрутизации сообщений.

Тег Item

Передает информацию о конкретном объекте.

Атрибуты:

  • Code - уникальный код объекта
  • Name - читаемое имя объекта
  • LocalCode - временный код объекта, используемый в случае, когда тег Item передается в составе пакета ChangesRequest, содержащего запрос на создание объекта. Значением атрибута является внутренний код объекта в той системе, в которой он был создан. Атрибут Code при этом передается пустым. В ответном пакете OperationResults MDM-система возвращает присвоенный объекту постоянный уникальный код, а также соответствие между ним и временным кодом.

  • OperationID - уникальный идентификатор операции на создание/изменение объекта. Используется при передаче тега Item в составе пакета ChangesRequest. Генерируется приложением-отправителем, используется для получения информации о результате операции.

Тег Type

Передает информацию о том, каким классам принадлежит данный объект. Может встречаться несколько раз для одного объекта.

Атрибуты:

  • TypeId - идентификатор класса, которому принадлежит объект.

Тег Attribute

Передает информацию о значении какого-либо атрибута объекта. Может встречаться несколько раз для одного атрибута, если модель данных это позволяет.

Атрибуты:

  • Type - тип значения атрибута: Literal, если значение представляет собой константу, Reference - если значение является уникальным идентификатором другого объекта, и LocalCodeReference, если ссылка осуществляется на другой объект по его временному коду. Последний вариант используется в случаях, когда тег Item передается в составе пакета ChangesRequest. При этом пакет может содержать запрос на создание сразу нескольких сущностей, связанных между собой. Значение LocalCodeReference используется для указания на то, что значение Value ссылается на другой объект, создаваемый в этом же запросе, по его временному коду.
  • AttributeID - имя атрибута по схеме данных.
  • Value - значение атрибута.

OperationResults
результат запроса на выполнение операции

Пакет состоит из одного или нескольких элементов OperationResult, характеризующих результат выполнения операции.

Пример пакета, иллюстрирующий его общую структуру:

<?xml version="1.0" encoding="UTF-8"?>
<OperationResults>
  <OperationResult OperationID="af3459889459" Code="af88811f-deb4-483d-a05f-dbd2f21a7bea" LocalCode="2"
Result="Успех" Message="Объект успешно создан"/>   <OperationResult OperationID="564dbaf455" LocalCode="12345" Result="Ошибка" Message="Ошибка создания объекта"/> </OperationResults>

Тег OperationResults

Группирует информацию о выполнении пакета операций.

Атрибуты:

  • Destination - коды систем-получателей. Может использоваться ESB для маршрутизации сообщений.

Тег OperationResult

Передает информацию о результатах выполнения одной из операций в составе пакета.

Атрибуты:

  • OperationID - уникальный идентификатор операции, переданный в теге Item запроса ChangeRequest.
  • Code - постоянный код, присвоенный созданному объекту в результате обработки запроса на создание.
  • LocalCode - временный код объекта, переданный системой-отправителем. При обработке пакета, система-отправитель должна сохранить у себя постоянный код объекта, присвоенный MDM, используя временный код, чтобы найти объект.
  • Result - текстовое сообщение о типе результата операции ("Успех" или "Ошибка").
  • Message - развернутое текстовое сообщение о результате операции.

InvalidPackage
сообщение о неверном запросе

Сообщает системе-отправителю, что она отправила неверный запрос.

Пример пакета, иллюстрирующий его общую структуру:

<?xml version="1.0" encoding="UTF-8"?>
<InvalidPackage/>

Тег InvalidPackage

Атрибуты:

  • Destination - коды систем-получателей. Может использоваться ESB для маршрутизации сообщений.

Более подробную информацию об архитектуре обмена данными с помощью АрхиГраф.MDM, а также о реализации адаптеров информационного обмена для работы с ней, можно найти в Технической документации на MDM-систему.