Содержание


Использование MDM Application Toolkit для создания MDM-центричных бизнес-процессов. Часть 4

Работа с интеграционными сервисами MDM

Comments

Серия контента:

Этот контент является частью # из серии # статей: Использование MDM Application Toolkit для создания MDM-центричных бизнес-процессов. Часть 4

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Использование MDM Application Toolkit для создания MDM-центричных бизнес-процессов. Часть 4

Следите за выходом новых статей этой серии.

Обзор

В настоящей статье описывается, как можно использовать некоторые из ключевых интеграционных сервисов IBM InfoSphere MDM в составе Application Toolkit. В предыдущих статьях этого цикла рассматривалось, как применять базовые возможности управления данными (CRUD: Create, Retrieve, Update, Delete – создание, получение/восстановление, обновление, удаление) и поиска данных (Search), и интеграционные сервисы иерархического дерева для получения корневого узла, а также как сохранить изменения в иерархическом дереве. Из этой статьи читатели узнают, как использовать оставшиеся интеграционные сервисы для:

  • вызова транзакций Physical MDM Txn и транзакций запроса MDM;
  • вызова Physical MDM, чтобы вернуть ответный XML-файл;
  • получения перечислимых (enumerated) типов данных и кодовых таблиц;
  • работы с исключениями, которые были отброшены (thrown) интеграционными сервисами.

Предварительные требования

Предполагается, что вы прочитали три предыдущие статьи этого цикла и можете создавать типы данных MDM в системе BPM. Вам также потребуется руководство MDM Transaction, чтобы решить, какие вам нужны транзакции и тип транзакций.

Вызов физических транзакций Physical MDM Txn и транзакций запроса MDM

Поскольку интеграционные сервисы Create, Get, Update, Delete и Search работают с физическим компонентом MDM (Physical MDM), существует ряд ограничений, обусловленных соглашениями о наименовании. Эти интеграционные сервисы функционируют по следующей схеме: сначала проверяется тип переданного объекта BPM, а после этого определяется имя бизнес-объекта MDM путем удаления расширения BObj и префикса TCRM (если он имеется). Например, TCRMPersonBObj становится Person. Затем, в зависимости от интеграционного сервиса выводится имя транзакции. Сервис Create присоединяет в начале имени "add", так что имя транзакции в данном случае будет addPerson. Аналогичным образом добавляются префиксы Get, Update, Delete и Search для других соответствующих интеграционных сервисов. Если транзакция в InfoSphere MDM не отвечает этим соглашениям о наименовании, то вам следует применить один из двух интеграционных сервисов, описанных ниже.

Физический компонент MDM использует два разных типа транзакций:

  • Транзакции запроса MDM, в которых вы передаете набор параметров.
  • Транзакции MDM Txn, в которых предоставляется бизнес-объект MDM.

На рисунке 1 показано соответствие данных для интеграционного сервиса Physical MDM Txn.

Рисунок 1. Соответствие данных для интеграционного сервиса Physical MDM Txn
A screenshot of the Physical MDM Txn Data Mapping in BPM
A screenshot of the Physical MDM Txn Data Mapping in BPM

В таблице 1 приводятся описания соответствий данных MDM Txn.

Таблица 1. Описание соответствий данных MDM Txn
Соответствия входных данныхОписание
Подробности соединения с сервером MDMОбъект MDM_Connection, который был сконфигурирован для указания на ваш сервер MDM.
Имя транзакции MDMИмя транзакции MDM, которую вы ходите вызвать (запустить), например, addPerson.
Запрос MDMТребуемый бизнес-объект BPM, например, TCRMPersonBObj.
Управление транзакцией MDMДополнительный объект MDM_Txn_Control, который используется, чтобы помочь восстановить исторические данные, и действует только для определенных транзакций.

Интеграционный сервис Physical MDM Inquiry практически идентичен интеграционному сервису Physical MDM Txn, за исключением того, что результатом запроса MDM является список NameValuePairs. Например, транзакция запроса getPerson требует, чтобы пользователь указал параметры PartyId и InquiryLevel.

Вызов Physical MDM для получения XML Response

Сервис Physical MDM XML Response практически идентичен сервисам Physical MDM Txn и Physical MDM Inquiry, за исключением того, что полученным ответом будет строка, представляющая собой XML-запись объекта отклика, а не собственно объекта. Тип объекта запроса MDM определяет, какие интеграционные сервисы вызывались. Например, если этим типом является список NameValuePairs, то вызывался интеграционный сервис MDM Inquiry.

Код, представленный в листинге 1, демонстрирует, как создать XML-документ и получить доступ к объекту отклика ResponseObject, содержащемуся в отклике, с помощью XPath в узле Server Script. (tw.local.xmlResponse является переменной процесса, представляющей отклик.)

Листинг 1. Создание XML-документа
// Создаем XML-документ с заданной строкой ответа
var doc = new tw.object.XMLDocument(tw.local.xmlResponse);

var response = doc.xpath("/TCRMService/TxResponse/ResponseObject");

Вы можете решить использовать этот интеграционный сервис по нескольким причинам:

  • Если вы хотите установить соответствие с вашими собственными бизнес-объектами, но не хотите импортировать все бизнес-объекты MDM.
  • Если вы хотите лучше управлять результатом (тем, что возвращается) – особенно, если вы работаете с подтипами MDM или если вы работаете в среде Physical MDM, где бизнес-объекты MDM располагаются внутри иерархии объектов.

Получение перечислимых типов данных и кодовых таблиц

Интеграционные сервисы были созданы, чтобы помочь вам получать перечислимые данные (enumerated data), используя интеграционные сервисы Get Options в Virtual MDM или Physical MDM. Оба этих интеграционных сервиса возвращают список NameValuePairs, который может быть с легкостью связан с выбранным компонентом Coach View в вашем Coach-элементе.

Для среды Virtual MDM необходимо установить соответствия параметров, указанные в таблице 2.

Таблица 2. Соответствие данных для интеграционного сервиса Virtual Get Options
Соответствия входных данныхОписание
Подробности соединения с сервером MDMОбъект MDM_Connection, который был сконфигурирован для указания на ваш сервер MDM.
Перечислимый тип данныхСтрока, представляющая перечислимый тип данных (Enumerated Data Type, EDT) в виртуальной модели. Например, MARTSTST – тип, представляющий Marital Status (Семейное положение).

Для среды Physical MDM необходимо установить соответствия параметров, указанные в таблице 3.

Таблица 3. Соответствие данных для интеграционного сервиса Physical Get Options
Соответствия входных данныхОписание
Подробности соединения с сервером MDMОбъект MDM_Connection, который был сконфигурирован для указания на ваш сервер MDM.
Имя MDM CodetableИмя кодовой таблицы в Physical MDM. Например, CDMARITALSTTP для Marital Status (Семейное положение).
Идентификатор территории (языка)Дополнительная строка, отображающая один из поддерживаемых MDM региональных кодов, которые должны быть возвращены. Строка может содержать буквенный код региона (например, fr) или цифровой код языка (например, 200). Значение по умолчанию: en.
СелекторДополнительный список NameValuePair, который вы можете использоваться для изменения данных, возвращаемых из отклика CodeTypeBObj. По умолчанию, интеграционный сервис возвращает name и tp_cd в качестве имени и значения. Определяя, какой элемент в CodeTypeBObj является именем, а какой – значением, пользователи могут получать данные, более релевантные и соответствующие их потребностям.

Работа с исключениями, которые были отброшены интеграционными сервисами

Все интеграционные сервисы могут отбрасывать ошибки исключений. Важно определить, что это за ошибки, и какие исправления или изменения в потоке процесса могут потребоваться. Для фиксации ошибок, отброшенных в результате вызова вложенного интеграционного сервиса, вам нужно присоединить Error Intermediate Event («промежуточное сообщение – ошибка») (значок молнии), как показано на рисунке 2.

Рисунок 2. Интеграционный сервис, использующий Error Intermediate Event
A screenshot of an example Integration Service using an Error Intermediate Event

В таблице 4 приводятся описания исключений, которые могут быть отброшены интеграционными сервисами MDM

Таблица 4. Исключения, которые могут быть отброшены интеграционными сервисами MDM
ИсключениеОписание
MDMBPMConnectionExceptionОтбрасывается в результате ошибки при подключении к рабочему серверу MDM – такой, например, как неверное имя хоста или неверные данные для аутентификации.
MDMBPMConversionExceptionОтбрасывается в результате ошибки при преобразовании между MDM и TWObjects. Возникает, главным образом, из-за несоответствия между объектом в MDM и объектом, определенным в BPM.
MDMBPMOperationExceptionОтбрасывается при неудачном запросе к MDM, как правило, из-за неверных данных.

Все исключения расширяют класс java.lang.Exception, который предоставляет сообщение и причину, с помощью атрибута, показанного в листинге 2.

Листинг 2. Расширение java.lang.Exception
String reasonCode : The supplied reasonCode for the
failure

MDMBPMOperationException добавляет атрибут, показанный в листинге 3.

Листинг 3. Атрибут из MDMBPMOperationException
 ArrayList<MDMBPMResponseMessage> errors : A list of ResponseMessages
                    detailing an error

MDMBPMResponseMessage содержит информацию, показанную в листинге 4.

Листинг 4. MDMBPMResponseMessage
errType : The ErrorType (e.g. FVERR)
mdmThrowable : The throwable that MDM made
reasonCode : The MDM reasonCode
errorMessage : The error message associated with the error

В узле Server Script ошибка будет доступна через XML-элемент tw.system.error. Тогда у вас будет возможность использовать XPath для синтаксического разбора ошибки, чтобы извлечь необходимые данные.

В листинге 5 приведен пример сбоя.

Листинг 5. Пример сбоя
<error type="mdm.bpm.exceptions.MDMBPMOperationException"
	description="MDMBPMOperationException">
	<cause type="java.lang.Throwable" description="cause"></cause>
	<errors type="java.util.ArrayList" description="ArrayList">
		<element type="mdm.bpm.exceptions.MDMBPMResponseMessage"
			description="MDMBPMResponseMessage">
			<errType type="java.lang.String" description="String">READERR
			</errType>
			<errorMessage type="java.lang.String" description="String">The
				following is not found: Person</errorMessage>
			<mdmThrowable type="java.lang.String" description="String">
			</mdmThrowable>
			<reasonCode type="java.lang.String" description="String">2092
			</reasonCode>
		</element>
	</errors>
...
</error>

Для получения MDMBPMResponseMessage вы можете использовать код, приведенный в листинге 6, в пределах узла Server Script.

Листинг 6. MDMBPMResponseMessage
var err = tw.system.error;
var mdmResponseMessage = err.errors[0].element[0];

Вы также можете получить сообщение с помощью XPath, как показано в листинге 7.

Листинг 7. xpath
var msgs = err.xpath("//element[@type='mdm.bpm.exceptions.MDMBPMResponseMessage']");

// Записываем найденные сообщения об ошибке
for(var i=0; i<msgs.length; i++){
    log.info(msgs.item(i).errorMessage);
}

Полезные советы

Если вы затрудняетесь активировать интеграционные сервисы MDM, то более простым решением может быть размещение монитора портов TCP/IP между вашей системой BPM и сервером MDM. Монитор предоставляется вместе с инструментарием MDM Workbench, который вы, возможно, используете для создания бизнес-объектов MDM BPM. Монитор показывает все запросы и соответствующие отклики, выполненные между BPM и сервером MDM.

Когда вы создаете свой файл WSDL (Web Service Definition Language) для физического компонента Physical MDM, попробуйте уменьшить размер ваших бизнес-объектов. Постарайтесь также включать в них только те атрибуты, которые необходимы вам в вашем потоке процесса. Тщательное конфигурирование объектов MDM может значительно повысить производительность интеграционных сервисов. Физический компонент MDM также содержит высоко-рекурсивные объекты – объект может включать другой объект такого же типа.

В таблице 5 представлены несколько имеющихся пакетов исправлений (Fix Pack), которые могут помочь в решении конкретных проблем.

Таблица 5. Ссылки на документы Authorized Program Analysis Report (APAR) по продукту IBM Business Process Manager (BPM), где описываются ошибки для рекурсивных объектов
Документ APARСсылкаПроблема
JR45937: COACH LOADING FOREVER WHEN OPENED IN THE BROWSER. LOG FILE SHOWS TWCLASS DATE WAS NOT EVALUATED ERRORhttp://www-01.ibm.com/support/docview.wss?uid=swg1JR45937При попытке запустить процесс, который должен показать coach-элемент, браузер непрерывно пытается его загрузить, однако coach-элемент не отображается. При этом лог-файл переполняется сообщениями об ошибке "Default value for TWClass Date was not evaluated" («Значение по умолчанию для TWClass Date не было определено»).
JR45518: BPM PROCESS DESIGNER 8.0.1 CRASHhttp://www-01.ibm.com/support/docview.wss?uid=swg1JR45518Если при создании схемы связывания данных coach-элемент имеет переменную циклической структуры, или переменная имеет глубокую древовидную структуру, то это потенциально вызывает ошибку Out Of Memory (нехватка памяти).

Заключение

В этой статье было описано то, как использовать оставшиеся интеграционные сервисы MDM при разработке рабочих потоков InfoSphere MDM. Для того чтобы облегчить обработку ошибок в потоке процесса, в статье также была рассмотрена работа с исключениями, которые могут быть отброшены интеграционными сервисами. Интеграционные сервисы, предоставляемые в составе пакета Application Toolkit, облегчают разработчикам создание процессов, которые интегрируются с InfoSphere MDM.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Information Management
ArticleID=1035670
ArticleTitle=Использование MDM Application Toolkit для создания MDM-центричных бизнес-процессов. Часть 4: Работа с интеграционными сервисами MDM
publish-date=08042016