1 / 39

Практический опыт использования Ensemble

Практический опыт использования Ensemble. Борис Егоров. Происхождение видов. О чем вы думаете, когда слышите. «Интеграция приложений». ?. Происхождение видов. Две или несколько систем, содержащие данные... Обмен данными... Отслеживание изменений в данных...

camden
Télécharger la présentation

Практический опыт использования Ensemble

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Практический опыт использования Ensemble Борис Егоров

  2. Происхождение видов О чем вы думаете, когда слышите «Интеграция приложений» ?

  3. Происхождение видов • Две или несколько систем, содержащие данные... • Обмен данными... • Отслеживание изменений в данных... • Расписания передачи данных... • Сбор данных по отчетности... • Конвертация данных... словари... вспомогательные данные... • Накопление данных...

  4. Происхождение видов • Данные, данные, данные... • Координация данных • 90% всех проектов, в которых есть слово «интеграция» • Сложность • не архитектурная • техническая (производительность) • постановочная • Extract, Transform, Load (ETL)

  5. Exract, Transform, Load • Координация данных • Две и более систем, синхронизация по расписанию • План работы • Связаться с первой • Связаться с второй • Трансформация данных • Наиболее часто встречающийся случай – синоним слова «интеграция» • Восприятие заказчика

  6. Как это выглядит в Ensemble? • +трансформация данных • дьявол в деталях...

  7. ETL-сложности: Скорость • synchronous call, in-proc invocation для бизнес-операций • лучше 1 большое сообщение, чем 10 более мелких • мета-сообщения (tickets) • преобразования данных, основанные на COS • пул процессов, отключение трассировки • веб-сервисы – не самая хорошая идея • накопление данных и внутренняя обработка

  8. ETL-сложности: Преобразования • Прежде всего - постановочная • Преобразование данных – отображение source-сообщения на target-сообщение • Вызывается из служб, операций, процессов • Способы задания • графическое представление / XML • код на Cache’ Object Script • «Изобразительные» средства преобразований • Ensemble Data Transformation Language

  9. «Изобразительные возможности» • Набор Ens.Util.FunctionSet • ToUpper/ToLower • Lookup/Exists (^Ens.LookupTable(table,value)) • ... обертки для COS-функций, но доступны непрограммисту • Набор функций – расширяем (наследование FunctionSet) • Произвольный код – максимальное быстродействие, сложные алгоритмы с сохранением «цивилизованного» интерфейса.

  10. Общая часть – организация взаимодействия • Модель допустимого взаимодействия определяет инструменты • Безконфликтные • интервальное сканирование (BS) • системы через API, каталогов выгрузки, и т.д. • вызов API по требованию Ensemble (BO) • Требующие вмешательства во внешние системы • обращение к Ensemble (BS + композитные) • работа с хранилищем Ensemble (все интерфейсы + композитные)

  11. Общая часть – организация взаимодействия • Головная боль – отслеживание изменений • SQL-адаптер • Поле идентификатора • ^Ens.AppData • В общем случае – не решается, кроме как полным кэшированием данных и сравнением • Частные случаи • таблицы журналов изменений • даты модификаций и пр. • ...

  12. Общая часть – организация взаимодействия • Интерфейсов – нет • Эмуляция работы пользователя • Rational Robot • Дешевые/бесплатные альтернативы • http://www.ixbt.com/soft/autosoft-part1.shtml • Возможная проблема исполнения на той же машине

  13. Сообщения • «Хорошие» сообщения не зависят от характеристик источника • Часто возникающая ситуация – с offline-взаимодействием • Сообщения – мощный механизм абстракции

  14. Родственник ETL – Data Hub • Сбор многоаспектных данных • «Композитные объекты» • несколько независимых частей • Сборка объектов • Дилемма • Легко собирать данные, трудно получать объекты • Труднее собирать данные, легче получать объекты

  15. Родственник ETL – Data Hub • «Универсальная структура данных» • Сущности – объект, атрибут, показатель, узел классификатора + структуры для составляющих • Сложные алгоритмы дальнейшей обработки и проставления ссылок

  16. Родственник ETL – Data Hub • Все «части» композитного объекта встраиваются в иерархию классов • Смысловая связность • Простота дальнейшего использования

  17. Data Hub – сборка данных • Сборка объектов • алгоритмическая (миф?) • фактографическая (мастер-индекс, трудоемкость обновления) • смешанная

  18. Data Hub – сборка данных • Классификаторы • в виде экземпляров данных • типы данных – узел классификатора, классификатор и т.д. • В виде мета-информации (классы) • облегчает сборку композитных объектов • усложняет сбор исходных данных • облегчает дальнейшее использование собранных данных

  19. Моделирование бизнес-процессов • Упрощение взаимодействия с заказчиком • Свобода реализации (диаграммы / код) • Легкий переход к процессам в Cache’ – приложениях

  20. Устранение разрыва • Бизнес-процесс с точки зрения человека-аналитика • Бизнес-процесс с точки зрения интеграционной платформы • Компоненты бизнес-процессов

  21. Сложность отладки • Асинхронные взаимодействия • «Дорогое»для реконструкции окружение

  22. Открытость Ensemble • Очень многие механизмы открыты • генерация исполнимых бизнес-процессов • трансформации данных • визуализации схем • workflow • ...

  23. Расширяемость workflow • Стратегии распределения задач (в наследниках %TaskResponse) • Настройки workflow-портала • Настройки сообщений • Собственные клиенты (ZEN и др.) • Встраивание во внешние приложения • Пакет EnsLib.Workflow

  24. Маршрутизация сообщений (routing engine) • Маршрутизирующие бизнес-правила • критерии • действия • трансформации

  25. Маршрутизация сообщений (routing engine)

  26. Маршрутизация сообщений (routing engine) • Изначально вводился для HL7 • EnsLib.MsgRouter.RoutingEngine • параметр RoutingRule • В 2007.1 – опция “Do all rules”

  27. Версионность бизнес-процессов • Время работы бизнес-процесса может составлять месяцы • Атрибут version (задается вручную) • Существование экземпляров различных версий • Отдельные версии генерируемых классов • MyBPL.V1.Context and MyBPL.V1.Thread1 • MyBPL.V2.Context and MyBPL.V2.Thread1

  28. Обработка ошибок • Сводилась к ручному анализу статусов • Интегрируемые системы вовсе не обязаны быть транзакционными

  29. Обработка ошибок • <scope> • <throw> • <catch> • <catchall> • <compensate> • <compensationhandlers> • <compensationhandler> • <faulthandlers>

  30. Обработка ошибок <process language='objectscript' request='Test.Scope.Request' response='Test.Scope.Response' > <sequence> <trace value='"before scope"'/> <scope> <trace value='"before assign"'/> <assign property="SomeProperty" value="1/0"/> <trace value='"after assign"'/> <faulthandlers> <catchall> <trace value='"in catchall faulthandler"'/> <trace value= '"%LastError "_ $System.Status.GetErrorCodes(..%Context.%LastError)_ " : "_ $System.Status.GetOneStatusText(..%Context.%LastError)' /> </catchall> </faulthandlers> </scope> <trace value='"after scope"'/> </sequence> </process>

  31. Обработка ошибок <scope> <throw fault='"BuyersRegret"'/> <faulthandlers> <catch fault='"BuyersRegret"'> <compensate target="RestoreBalance"/> </catch> </faulthandlers> <compensationhandlers> <compensationhandler name="RestoreBalance"> <assign property='context.MyBalance' value='context.MyBalance+1'/> </compensationhandler> </compensationhandlers> </scope>

  32. Alert • Служит для уведомления о проблеме • Элемент продукции с именем Ens.Alert отвечает за обработку всех alert в продукции (бизнес-операция) • Ens.AlertRequest • Property SourceConfigName As %String;Property AlertText As %String; • Alert-сообщения всегда сохраняются в event log

  33. Alert - формирование • Метод SendAlert • Do ..SendAlert(##Class(Ens.AlertRequest).%New($LB(..%ConfigName, “Message Text")) • <alert> в BPL • <alert value="The system needs service right away."/> • Автоматическое создание alert-сообщений элементами продукции • Параметр Alert on Error • Параметр Alert Retry Grace Period (BO)

  34. Контроль импорта данных • Разные источники данных • Разные проверки • Разные люди, отвечающие за разные сегменты данных • Цели • workflow • контроль принятых решений

  35. Контроль импорта данных • Первичный импорт • Маршрутизатор (роутер) • Бизнес-процесс, специфичный для источника/сущности • Библиотечные проверки • Роли workflow • Финальное сохранение (не показано)

  36. Контроль импорта данных • Бизнес-служба читает источник, сырые данные сохраняются • добавляются поля статуса (обработано, отброшено, в процессе обработки) • идентификатор «пачки» • хэшисходных значений полей • Если хэш импортируемых данных совпадает с имеющимися, и статус – «в обработке», запись игнорируется • Формируется сообщение – билет (источник, пачка, [конкретная запись]), передается роутеру

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

  38. Контроль импорта • Специфичный бизнес-процесс • открывает сырые данные • выполняет проверки при помощи своей внутренней логики, или «библиотечных вызовов» • при необходимости осуществляется выставление workflow-задач • Результат работы – исправленные данные в хранилище сырых данных • Если идет обработка не пачкой, а по записям – проверка на то, что пачку можно сохранять (при необходимости выставить task на одобрение)

  39. Спасибо. Продолжение следует.http://writeimagejournal.com Борис Егоров

More Related