SlideShare a Scribd company logo
Интеграционная шина на базе Ensemble 
Дмитрий Засыпкин 
dmitry.zasypkin@intersystems.com 
Приемы реализации
План 
• 
Введение 
• 
Общие задачи интеграционной шины. Сервисы ФЭР2. 
• 
Синхронное взаимодействие 
• 
Простое приложение Ensemble. Маршрутизация сообщений на основе бизнес-правил. Трансформация данных. 
• 
Асинхронное взаимодействие 
• 
Бизнес-процесс на BPL. Применение WS-Addressing. Возможности Ensemble: надежная доставка сообщений.
Интеграционная шина 
• 
Задачи шины: 
• 
Совместимость 
• 
Маршрутизация 
• 
Трансформация и нормализация 
• 
Надежная доставка 
• 
Безопасность 
• 
Протоколирование
Сервисы ФЭР 
• 
ФЭР = Федеральная Электронная Регистратура 
• 
Централизованное ведение расписаний приема врачей 
• 
Записаться на прием к врачу можно через gosuslugi.ru 
• 
Веб-сервисы ФЭР используют SSL и SOAP 1.2 
• 
Все запросы к сервисам на промышленном сервере ФЭР должны быть подписаны ЭЦП (УЦ Минздрава) 
• 
Описание сервисов ФЭР – http://egisz.rosminzdrav.ru 
• 
Документы > ЭР > Новые документы ФЭР > Описание интеграционных профилей 2.13.docx
Тестовый сервис ФЭР 
• 
Адрес SOAP-сервиса ФЭР: 
• 
http://api-er2.rosminzdrav.ru/mis 
• 
Несколько десятков «методов» 
• 
См. раздел 3 документа Описание интеграционных профилей 2.13.docx 
• 
Метод GetMos – поиск медицинских организаций (МО) 
• 
Принимает на вход набор критериев поиска МО, а также «токен авторизации внешней системы» 
• 
Выдает список поликлиник/больниц
GetMos: запрос
Вызов сервиса ФЭР из Caché 
• 
В терминале инициируем вызов сервиса ФЭР, используя системный класс %SOAP.WebRequest: 
• 
do ##class(meetup25.test.TestCaller).test()
GetMos: ответ
Ensemble 
• 
Использование инфраструктуры Ensemble для решения интеграционных задач 
• 
Бизнес-службы, бизнес-процессы, бизнес-операции 
• 
Возможность настроить отдельную очередь сообщений для каждого бизнес-процесса/операции 
• 
Очередь обладает пулом джобов (процессов ОС), занимающихся обработкой сообщений
Вызов сервиса ФЭР из Ensemble 
• 
Запускаем приложение Ensemble 
• 
В классе meetup25.test.TestCaller укажем адрес веб- сервиса Ensemble 
• 
Инициируем вызов веб-сервиса Ensemble в терминале 
• 
do ##class(meetup25.test.TestCaller).test() 
• 
Трассировка сеанса Ensemble
Задачи шины 
• 
Задачи шины: 
• 
Совместимость 
• 
Маршрутизация 
• 
Трансформация и нормализация 
• 
Надежная доставка 
• 
Безопасность 
• 
Протоколирование
Маршрутизация сообщений 
• 
Нацелим бизнес-службу на процесс «Маршрутизатор», который маршрутизирует сообщения согласно бизнес- правилу 
• 
Бизнес-правило анализирует SOAP Action сообщения, поэтому в классе meetup25.test.TestCaller укажем значение SOAP Action равное «GetMos» 
• 
Инициируем вызов веб-сервиса Ensemble в терминале 
• 
do ##class(meetup25.test.TestCaller).test() 
• 
Трассировка сеанса Ensemble
Трансформация запроса 
• 
Цель: 
• 
Использовать в клиентской системе более простой и понятный формат XML-сообщений, перенеся в Шину специфическую логику оформления запроса для ФЭР 
• 
Этапы трансформации: 
• 
1) Base64-кодирование исходного XML-сообщения 
• 
2) Добавление «оберточных» XML-элементов согласно спецификации SOAP-сервиса ФЭР
GetMos: запрос
Трансформация запроса 
• 
Этапы трансформации: 
• 
Base64-кодирование исходного XML-сообщения 
• 
Добавление «оберточных» XML-элементов 
• 
Применяемый шаблон XSLT будем хранить в настройке продукции 
• 
Добавляем трансформацию meetup25.FerRequestDTL в бизнес-правило 
• 
В классе meetup25.test.TestCaller сменим запрос на
Трансформация запроса 
• 
В терминале выполним: 
do ##class(meetup25.test.TestCaller).test() 
• 
Трассировка сеанса Ensemble
Задачи шины 
• 
Задачи шины: 
• 
Совместимость 
• 
Маршрутизация 
• 
Трансформация и нормализация 
• 
Надежная доставка 
• 
Безопасность 
• 
Протоколирование
Синхронное взаимодействие 
• 
Недостатки синхронного обмена 
• 
В случае сбоя в сети или сбоя ФЭР клиенту потребуется повторно инициировать запрос 
• 
Если ответ от ФЭР не укладывается в тайм-аут клиента, то ошибка
Асинхронное взаимодействие
Асинхронный процесс
Асинхронное взаимодействие 
• 
Изменение правил маршрутизации: 
• 
Переключим цель действия send на Асинхронный процесс 
• 
Изменения в классе meetup25.test.TestCaller: 
• 
ONEWAY = 1 (не ожидаем синхронный ответ) 
• 
Добавим формирование заголовков WS-Addressing 
• 
В качестве имитации callback-сервиса на стороне системы-клиента используется класс-заглушка 
• 
do ##class(meetup25.test.TestCaller).test()
WS-Addressing 
• 
http://www.w3.org/TR/ws-addr-core/ 
• 
WS-Addressing описывает стандартный способ включения информации о маршрутизации в заголовки SOAP-сообщений 
<env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> 
<env:Header xmlns:wsa='http://www.w3.org/2005/08/addressing'> 
<wsa:MessageID>urn:uuid:305EE1B2-EEF8-4095…</wsa:MessageID> 
<wsa:RelatesTo>urn:uuid:7854E197-F7CF-491B…</wsa:RelatesTo> 
<wsa:ReplyTo>http://server/callback-service…</wsa:ReplyTo> 
</env:Header> 
<env:Body> 
... 
</env:Body> 
</env:Envelope>
Обработка транспортных ошибок 
• 
Настройки бизнес-операции Вызов сервиса ФЭР: 
• 
Действия для кода ответа: E=RS 
• 
Интервал повторов: 5 (секунд) 
• 
Тайм-аут отказа: 15 (секунд) - в реальной системе может быть несколько суток 
• 
В случае сбоя сети или ошибки сервера ФЭР будут осуществляться повторные попытки вызова сервиса с интервалом 5 секунд в течение 15 секунд. В случае неудачи запрос будет помечен как «отложенный». 
• 
Ensemble >> Просмотр >> Отложенные сообщения
Спасибо за внимание!

More Related Content

What's hot

AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
Ontico
 
WebSockets
WebSocketsWebSockets
WebSocketsplusnin
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
AvitoTech
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Ontico
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Ontico
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Ontico
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Ontico
 
Управление версиями в TFS 2008
Управление версиями в TFS 2008Управление версиями в TFS 2008
Управление версиями в TFS 2008
Александр Шамрай
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Ontico
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиKirill Mokevnin
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Ontico
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
Timur Batyrshin
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Ontico
 

What's hot (16)

AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
AWS и GCP: трудная жизнь в облаках / Максим Пугачев (IPONWEB)
 
WebSockets
WebSocketsWebSockets
WebSockets
 
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
«Миллион открытых каналов с данными по сети» – Илья Биин (Zenhotels)
 
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
Дизайн REST API для высокопроизводительных систем / Александр Лебедев (Новые ...
 
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
Разгоняем ASP.NET Core / Илья Вербицкий (WebStoating s.r.o.)
 
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
Неочевидные детали при запуске HTTPS в OK.Ru / Андрей Домась (Одноклассники)
 
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
 
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
Оптимизация сервера потокового видеовещания (Дмитрий Шатров)
 
Управление версиями TFS 2010
Управление версиями TFS 2010Управление версиями TFS 2010
Управление версиями TFS 2010
 
Управление версиями в TFS 2008
Управление версиями в TFS 2008Управление версиями в TFS 2008
Управление версиями в TFS 2008
 
Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...Опыт построения СХД на базе Windows Server для использования в публичном обла...
Опыт построения СХД на базе Windows Server для использования в публичном обла...
 
Загрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статикиЗагрузка, обработка, хранение и отдача статики
Загрузка, обработка, хранение и отдача статики
 
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
Как SRE следит за стабильностью и скоростью HeadHunter / Антон Иванов (HeadHu...
 
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько разRootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
RootConf 2015: Как Vagrant и Chef ускорили разработку в несколько раз
 
Chef
ChefChef
Chef
 
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
Виртуальный ЦОД для корпоративных клиентов на базе Virtuozzo: стабильность, п...
 

Viewers also liked

Универсальная защищённая интеграционная шина для применения в АСУ КВО
Универсальная защищённая интеграционная шина  для применения в АСУ КВОУниверсальная защищённая интеграционная шина  для применения в АСУ КВО
Универсальная защищённая интеграционная шина для применения в АСУ КВО
Vadim Podolniy
 
Управление идентификационными данными и доступом
Управление идентификационными данными и доступомУправление идентификационными данными и доступом
Управление идентификационными данными и доступом
КРОК
 
Кибербезопасность АСУ ТП АЭС
Кибербезопасность АСУ ТП АЭСКибербезопасность АСУ ТП АЭС
Кибербезопасность АСУ ТП АЭС
Vadim Podolniy
 
Интеграция данных и приложений: основа для единой ИТ-инфраструктуры
Интеграция данных и приложений: основа для единой ИТ-инфраструктурыИнтеграция данных и приложений: основа для единой ИТ-инфраструктуры
Интеграция данных и приложений: основа для единой ИТ-инфраструктуры
КРОК
 

Viewers also liked (6)

1 кириченко и., naumen вступительное слово
1 кириченко и., naumen   вступительное слово1 кириченко и., naumen   вступительное слово
1 кириченко и., naumen вступительное слово
 
3 презентациятехучет
3 презентациятехучет3 презентациятехучет
3 презентациятехучет
 
Универсальная защищённая интеграционная шина для применения в АСУ КВО
Универсальная защищённая интеграционная шина  для применения в АСУ КВОУниверсальная защищённая интеграционная шина  для применения в АСУ КВО
Универсальная защищённая интеграционная шина для применения в АСУ КВО
 
Управление идентификационными данными и доступом
Управление идентификационными данными и доступомУправление идентификационными данными и доступом
Управление идентификационными данными и доступом
 
Кибербезопасность АСУ ТП АЭС
Кибербезопасность АСУ ТП АЭСКибербезопасность АСУ ТП АЭС
Кибербезопасность АСУ ТП АЭС
 
Интеграция данных и приложений: основа для единой ИТ-инфраструктуры
Интеграция данных и приложений: основа для единой ИТ-инфраструктурыИнтеграция данных и приложений: основа для единой ИТ-инфраструктуры
Интеграция данных и приложений: основа для единой ИТ-инфраструктуры
 

Similar to Интеграционная шина на базе InterSystems Ensemble

Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Ontico
 
Внедрение автоматизации тестирования на Сервисной Шине
Внедрение автоматизации тестирования на Сервисной ШинеВнедрение автоматизации тестирования на Сервисной Шине
Внедрение автоматизации тестирования на Сервисной Шине
SQALab
 
владивосток форум Ensemble
владивосток форум Ensembleвладивосток форум Ensemble
владивосток форум Ensemble
Elena Ometova
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
Pavel Revenkov
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
Pavel Tsukanov
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debugging
Alexey Bokov
 
Сервлеты
СервлетыСервлеты
Сервлеты
Unguryan Vitaliy
 
Cовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиCовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработки
Александр Шамрай
 
Распределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаРаспределенная система тестирования машинного перевода
Распределенная система тестирования машинного перевода
yaevents
 
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Ontico
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложенийJack Chikovany
 
Нагрузочное тестирование сайтов
Нагрузочное тестирование сайтовНагрузочное тестирование сайтов
Нагрузочное тестирование сайтов
MageCloud
 
Тестирование Enterprise Service Bus: Что? Где? Как?
Тестирование Enterprise Service Bus: Что? Где? Как?Тестирование Enterprise Service Bus: Что? Где? Как?
Тестирование Enterprise Service Bus: Что? Где? Как?
SQALab
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation
KewpaN
 
Cti контактный центр_по_запросу_10.06.2014
Cti контактный центр_по_запросу_10.06.2014Cti контактный центр_по_запросу_10.06.2014
Cti контактный центр_по_запросу_10.06.2014Tim Parson
 
Wcf Part 2
Wcf Part 2Wcf Part 2
Wcf Part 2
Igor Venzhyk
 
1. предзащита
1. предзащита1. предзащита
1. предзащитаDmitry Dushkin
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
WDDay
 
DATA CLUSTER
 DATA CLUSTER DATA CLUSTER
DATA CLUSTER
soft-point
 
Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Cisco Russia
 

Similar to Интеграционная шина на базе InterSystems Ensemble (20)

Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
Чему мы научились, разрабатывая микросервисы / Вадим Мадисон (RuTube)
 
Внедрение автоматизации тестирования на Сервисной Шине
Внедрение автоматизации тестирования на Сервисной ШинеВнедрение автоматизации тестирования на Сервисной Шине
Внедрение автоматизации тестирования на Сервисной Шине
 
владивосток форум Ensemble
владивосток форум Ensembleвладивосток форум Ensemble
владивосток форум Ensemble
 
Windows Azure Service Bus
Windows Azure Service BusWindows Azure Service Bus
Windows Azure Service Bus
 
ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS ВВЕДЕНИЕ В NODE.JS
ВВЕДЕНИЕ В NODE.JS
 
Azure web apps - designing and debugging
Azure web apps  - designing and debuggingAzure web apps  - designing and debugging
Azure web apps - designing and debugging
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Cовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработкиCовременные подходы организации процессов разработки
Cовременные подходы организации процессов разработки
 
Распределенная система тестирования машинного перевода
Распределенная система тестирования машинного переводаРаспределенная система тестирования машинного перевода
Распределенная система тестирования машинного перевода
 
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
Использование 0MQ для построения распределёных систем (Андрей Охлопков, Алекс...
 
Виртуализация критически важных приложений
Виртуализация критически важных приложенийВиртуализация критически важных приложений
Виртуализация критически важных приложений
 
Нагрузочное тестирование сайтов
Нагрузочное тестирование сайтовНагрузочное тестирование сайтов
Нагрузочное тестирование сайтов
 
Тестирование Enterprise Service Bus: Что? Где? Как?
Тестирование Enterprise Service Bus: Что? Где? Как?Тестирование Enterprise Service Bus: Что? Где? Как?
Тестирование Enterprise Service Bus: Что? Где? Как?
 
8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation8 создание приложений по технологии windows communications foundation
8 создание приложений по технологии windows communications foundation
 
Cti контактный центр_по_запросу_10.06.2014
Cti контактный центр_по_запросу_10.06.2014Cti контактный центр_по_запросу_10.06.2014
Cti контактный центр_по_запросу_10.06.2014
 
Wcf Part 2
Wcf Part 2Wcf Part 2
Wcf Part 2
 
1. предзащита
1. предзащита1. предзащита
1. предзащита
 
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET»  O...
ВІТАЛІЙ ГОНЧАРУК «За допомогою чого пишуться серйозні веб додатки на .NET» O...
 
DATA CLUSTER
 DATA CLUSTER DATA CLUSTER
DATA CLUSTER
 
Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1Безопасность ЦОД-часть 1
Безопасность ЦОД-часть 1
 

More from InterSystems

InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019
InterSystems
 
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and ScalabilityInterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems
 
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee DashboardsDeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
InterSystems
 
InterSystems Caché REST Forms
InterSystems Caché REST FormsInterSystems Caché REST Forms
InterSystems Caché REST Forms
InterSystems
 
InterSystems Caché Localization Manager
InterSystems Caché Localization Manager InterSystems Caché Localization Manager
InterSystems Caché Localization Manager
InterSystems
 
Source Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL supportSource Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL support
InterSystems
 
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring AnalyticsDeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
InterSystems
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
InterSystems
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergration
InterSystems
 
InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015
InterSystems
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
InterSystems
 
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queueInterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems
 
Deep see mobile meetup красноярск
Deep see mobile meetup красноярскDeep see mobile meetup красноярск
Deep see mobile meetup красноярск
InterSystems
 
InterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutionsInterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutions
InterSystems
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
InterSystems
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
InterSystems
 
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
InterSystems
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
InterSystems
 
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
InterSystems
 
Статический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object ScriptСтатический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object Script
InterSystems
 

More from InterSystems (20)

InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019InterSystems Developers Community Update Global Summit 2019
InterSystems Developers Community Update Global Summit 2019
 
InterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and ScalabilityInterSystems IRIS Data Platfrom: Sharding and Scalability
InterSystems IRIS Data Platfrom: Sharding and Scalability
 
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee DashboardsDeepSee Web: Angular Render for InterSystems DeepSee Dashboards
DeepSee Web: Angular Render for InterSystems DeepSee Dashboards
 
InterSystems Caché REST Forms
InterSystems Caché REST FormsInterSystems Caché REST Forms
InterSystems Caché REST Forms
 
InterSystems Caché Localization Manager
InterSystems Caché Localization Manager InterSystems Caché Localization Manager
InterSystems Caché Localization Manager
 
Source Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL supportSource Control Addon for InterSystems Caché with UDL support
Source Control Addon for InterSystems Caché with UDL support
 
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring AnalyticsDeepSee SYSMON - InterSystems Caché System Monitoring Analytics
DeepSee SYSMON - InterSystems Caché System Monitoring Analytics
 
InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015InterSystems Community and Projects in CIS November 2015
InterSystems Community and Projects in CIS November 2015
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergration
 
InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015InterSystems news Meetup Sankt-Peterburg2015
InterSystems news Meetup Sankt-Peterburg2015
 
Web and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard LebedyukWeb and mobile development for intersystems caché, Eduard Lebedyuk
Web and mobile development for intersystems caché, Eduard Lebedyuk
 
InterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queueInterSystems Healthshare +DeepSee. Hospitalization queue
InterSystems Healthshare +DeepSee. Hospitalization queue
 
Deep see mobile meetup красноярск
Deep see mobile meetup красноярскDeep see mobile meetup красноярск
Deep see mobile meetup красноярск
 
InterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutionsInterSystems High Availability and Mirroring solutions
InterSystems High Availability and Mirroring solutions
 
Перевод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в UnicodeПеревод базы Caché из 8 бит в Unicode
Перевод базы Caché из 8 бит в Unicode
 
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
ECP и API управления процессами. InterSystems Meetup Sankt-Peterburg 2014
 
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
Примеры использования iknow в медицине - InterSystems Meetup Sankt-Peterburg ...
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
 
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
Управление изменениями и коллективная разработка в Caché. InterSystems Meetup...
 
Статический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object ScriptСтатический анализатор кода для InterSystems Caché Object Script
Статический анализатор кода для InterSystems Caché Object Script
 

Интеграционная шина на базе InterSystems Ensemble

  • 1. Интеграционная шина на базе Ensemble Дмитрий Засыпкин dmitry.zasypkin@intersystems.com Приемы реализации
  • 2. План • Введение • Общие задачи интеграционной шины. Сервисы ФЭР2. • Синхронное взаимодействие • Простое приложение Ensemble. Маршрутизация сообщений на основе бизнес-правил. Трансформация данных. • Асинхронное взаимодействие • Бизнес-процесс на BPL. Применение WS-Addressing. Возможности Ensemble: надежная доставка сообщений.
  • 3. Интеграционная шина • Задачи шины: • Совместимость • Маршрутизация • Трансформация и нормализация • Надежная доставка • Безопасность • Протоколирование
  • 4. Сервисы ФЭР • ФЭР = Федеральная Электронная Регистратура • Централизованное ведение расписаний приема врачей • Записаться на прием к врачу можно через gosuslugi.ru • Веб-сервисы ФЭР используют SSL и SOAP 1.2 • Все запросы к сервисам на промышленном сервере ФЭР должны быть подписаны ЭЦП (УЦ Минздрава) • Описание сервисов ФЭР – http://egisz.rosminzdrav.ru • Документы > ЭР > Новые документы ФЭР > Описание интеграционных профилей 2.13.docx
  • 5. Тестовый сервис ФЭР • Адрес SOAP-сервиса ФЭР: • http://api-er2.rosminzdrav.ru/mis • Несколько десятков «методов» • См. раздел 3 документа Описание интеграционных профилей 2.13.docx • Метод GetMos – поиск медицинских организаций (МО) • Принимает на вход набор критериев поиска МО, а также «токен авторизации внешней системы» • Выдает список поликлиник/больниц
  • 7. Вызов сервиса ФЭР из Caché • В терминале инициируем вызов сервиса ФЭР, используя системный класс %SOAP.WebRequest: • do ##class(meetup25.test.TestCaller).test()
  • 9. Ensemble • Использование инфраструктуры Ensemble для решения интеграционных задач • Бизнес-службы, бизнес-процессы, бизнес-операции • Возможность настроить отдельную очередь сообщений для каждого бизнес-процесса/операции • Очередь обладает пулом джобов (процессов ОС), занимающихся обработкой сообщений
  • 10. Вызов сервиса ФЭР из Ensemble • Запускаем приложение Ensemble • В классе meetup25.test.TestCaller укажем адрес веб- сервиса Ensemble • Инициируем вызов веб-сервиса Ensemble в терминале • do ##class(meetup25.test.TestCaller).test() • Трассировка сеанса Ensemble
  • 11. Задачи шины • Задачи шины: • Совместимость • Маршрутизация • Трансформация и нормализация • Надежная доставка • Безопасность • Протоколирование
  • 12. Маршрутизация сообщений • Нацелим бизнес-службу на процесс «Маршрутизатор», который маршрутизирует сообщения согласно бизнес- правилу • Бизнес-правило анализирует SOAP Action сообщения, поэтому в классе meetup25.test.TestCaller укажем значение SOAP Action равное «GetMos» • Инициируем вызов веб-сервиса Ensemble в терминале • do ##class(meetup25.test.TestCaller).test() • Трассировка сеанса Ensemble
  • 13. Трансформация запроса • Цель: • Использовать в клиентской системе более простой и понятный формат XML-сообщений, перенеся в Шину специфическую логику оформления запроса для ФЭР • Этапы трансформации: • 1) Base64-кодирование исходного XML-сообщения • 2) Добавление «оберточных» XML-элементов согласно спецификации SOAP-сервиса ФЭР
  • 15. Трансформация запроса • Этапы трансформации: • Base64-кодирование исходного XML-сообщения • Добавление «оберточных» XML-элементов • Применяемый шаблон XSLT будем хранить в настройке продукции • Добавляем трансформацию meetup25.FerRequestDTL в бизнес-правило • В классе meetup25.test.TestCaller сменим запрос на
  • 16. Трансформация запроса • В терминале выполним: do ##class(meetup25.test.TestCaller).test() • Трассировка сеанса Ensemble
  • 17. Задачи шины • Задачи шины: • Совместимость • Маршрутизация • Трансформация и нормализация • Надежная доставка • Безопасность • Протоколирование
  • 18. Синхронное взаимодействие • Недостатки синхронного обмена • В случае сбоя в сети или сбоя ФЭР клиенту потребуется повторно инициировать запрос • Если ответ от ФЭР не укладывается в тайм-аут клиента, то ошибка
  • 21. Асинхронное взаимодействие • Изменение правил маршрутизации: • Переключим цель действия send на Асинхронный процесс • Изменения в классе meetup25.test.TestCaller: • ONEWAY = 1 (не ожидаем синхронный ответ) • Добавим формирование заголовков WS-Addressing • В качестве имитации callback-сервиса на стороне системы-клиента используется класс-заглушка • do ##class(meetup25.test.TestCaller).test()
  • 22. WS-Addressing • http://www.w3.org/TR/ws-addr-core/ • WS-Addressing описывает стандартный способ включения информации о маршрутизации в заголовки SOAP-сообщений <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'> <env:Header xmlns:wsa='http://www.w3.org/2005/08/addressing'> <wsa:MessageID>urn:uuid:305EE1B2-EEF8-4095…</wsa:MessageID> <wsa:RelatesTo>urn:uuid:7854E197-F7CF-491B…</wsa:RelatesTo> <wsa:ReplyTo>http://server/callback-service…</wsa:ReplyTo> </env:Header> <env:Body> ... </env:Body> </env:Envelope>
  • 23. Обработка транспортных ошибок • Настройки бизнес-операции Вызов сервиса ФЭР: • Действия для кода ответа: E=RS • Интервал повторов: 5 (секунд) • Тайм-аут отказа: 15 (секунд) - в реальной системе может быть несколько суток • В случае сбоя сети или ошибки сервера ФЭР будут осуществляться повторные попытки вызова сервиса с интервалом 5 секунд в течение 15 секунд. В случае неудачи запрос будет помечен как «отложенный». • Ensemble >> Просмотр >> Отложенные сообщения