гуарана - JAVA интеграция приложений

далее тут пред
Описание.

Web Site: www.tdg-seville.info/rzfrantz/guarana
Version described: 1.4.0
License & Pricing: TDG’s License 1.0 and free

в формате PDF

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

1 введение

Типовая компания использует программное обеспечение экосистем [1], которые состоят из множества приложений, поддерживающих их деятельность. И часто новый бизнес-процесс должен поддерживаться двумя или большим количеством приложений и оптимизация текущего бизнес-процесса требует взаимодействия с этими приложениями. Зачастую эти приложения разработаны без учёта возможности интеграции , т.е. они не имеют программного интерфейса. Как следствие интеграция не всегда является тривиальной задачей и должна быть проведена в большинстве случаев с помощью ресурсов этих приложений, таким как базы данных, файлы данных, очереди сообщений и пользовательские интерфейсы. Чтобы сохранить синхронизацию данных приложения взаимодействуют друг с другом, производя периодические вызовы, порождая новые отображения данных или создавая новую функциональность [2]. По этой причине многие компании полагаются на Enterprise Service Buses для развития интеграционных решений, поскольку они обеспечивают необходимую технологию для интеграции разнородных приложений с помощью экзогенных процессов [3, 4]. Интеграционное решение развёртывается на программную экосистему, как новое приложение, которое предоставляет своим пользователям отображение на верхнем уровне интегрированных приложений, с которыми они могут взаимодействовать.

Гуарана это технология, которая может использоваться для разработки, внедрения и запуска решений интеграции приложений. Гуарана обеспечивает интуитивный предметно- ориентированный язык (DSL, domain-specific language ), который может использоваться для разработки решений на высоком уровне абстракции. Он также предоставляет комплект разработчика (SDK), который может быть использован для реализации и запуска решений. В этой статье мы познакомимся с DSL и рассмотрим использование SDK для реализации интеграционных решений.

2 Домен-ориентированный язык

Гуарана DSL был разработан в целях оказания поддержки для разработки интеграционных решений на высоком уровне абстракции, таким образом, чтобы разработчики программного обеспечения могли сконцентрировать усилия на разработке решений, не заботясь о технических деталях его реализации. Язык обеспечивает большую поддержку для интеграции моделей, описанных в книгах Hohpe и Woolf [2]. Основными строительными блоками Гуарана DSL являются: коммуникационные порты, процессы, задачи и слоты.

 

Порты взаимодействия (Communication Ports): Абстракция далека от коммуникационного механизма, необходимого для общения с приложением. В текущей версии языка поддерживается четыре типа портов:

Тип порта Описание
Entry Port Позволяет процессу получать информацию из приложения.
Exit PortПозволяет процессу передать информацию в приложение.
Exit PortПозволяет процессу передать информацию в приложение.
Solicitor PortИспользуется для запроса информации из приложения.
Responder PortИспользуется для ответа на запросы приложений.

Процессы (Processes): Предназначены, чтобы организации взаимодействие с рядом приложений. Процессы взаимодействуют с задачи, которые осуществляют свою деятельность в оркестровке. Проще говоря, Процесс можно рассматривать как процессор сообщений.

Задача (Tasks): Это блоки, которые позволяют выполнять атомарные действия над сообщениями, которые проходят внутри процесса.

Routers ModifiersTransformers
Correalator JPEG 99*64Correalator Slimmer jpeg 102*68Slimmer Translator JPEG 99*66Translator
Merger JPEG 101*64 MergerContext-Base  Slimmer JPEG 102*65Context-Base Slimmer Splitter JPEG 104*62 Splitter
Resequencer JPEG 96*60Resequencer Content  Enricher JPEG 103*66Content Enricher Aggregator JPEG 109*65 Aggregator
Filter JPEG 95*62Filter Context-Based Content Enricher JPEG 100*62Context-Based Content Enricher Chopper JPEG 105*61Chopper
Independent  transfer JPEG 96*58 Independent transferHeader Enricher JPEG 102*64Header EnricherAssembler JPEG 102*62 Assembler
Dispatcher JPEG 98*61 Dispatcher Context-Based  Header  Enricher JPEG 99*65Context-Based Header Enricher Cross Builder JPEG 104*64 Cross Builder
Distributor JPEG 101*60 Distributor Header Promoter JPEG 101*65 Header PromoterCustom Transformer JPEG 104*66Custom Transformer
Replicator JPEG 102*62 Replicator Header Demoter JPEG 102*62 Header Demoter
Semantic Validator JPEG 98*62 Semantic Validator Custom Modifier JPEG 101*62 Custom Modifier
Custom Router JPEG 97*63 Custom Router

Таблица 2 Задачи, которые реализуют шаблоны интеграции в Гуарана DSL.

Слоты (Slots): Используются для подключения и рассинхронизации связи между двумя задачами или задачей и портом. Каждая задача должна быть связана, по крайней мере с двумя слотами, задача которых получение и отправка сообщений на другие элементы внутри процесса интеграции. Слоты, которые соединяют порты и задачи, известны как интерслоты.

3 Пример «Бронирование тура»

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

Постановка задачи: Экосистема программного обеспечения в этом случае состоит из пяти приложений, а именно: Travel System, Invoice System, Mail Server, Flights Façade, and Hotels Façade.
Travel System - Система Путешествий стандартная программная система, которую туристическое агентство использует для регистрации информации о своих клиентах и запросах бронирования.
Invoice System - Служба Счетов работает на Системе Обслуживания Счетов , которая является отдельной программной системой, позволяющей клиентам оплачивать их путешествия кредитными картами.
Mail Server - Почтовый сервер выполняет обработку электронной почты и используется для предоставления клиентам информации о своих заказах.
Flights Façade, Hotels Façade - Фасад Рейсов и Фасад Гостиницы представляют собой интерфейсы, которые позволяют бронировать перелеты и гостиницы. Они оба, в дополнение к почтовому серверу, представляют собой приложения, которые были разработаны с учётом проблем интеграции. Наоборот, Система Путешествий и Служба Счетов являются программными системами, которые были разработаны без учёта интеграция в записи пользователя, таким образом, интеграционное решение должно взаимодействовать с ними на уровне обмена данными (data layer). Единственное предположение, которое мы делаем это то, что каждый заказ, зарегистрированный в Travel System, содержит все необходимые сведения об оплате, перелёте и гостинице, и запись локатор, которая однозначно идентифицирует бронирование путешествия. Интеграционное решение должно периодически опрашивать Travel System о поступлении новых запросов о путешествии, так чтобы можно было бы забронировать перелёт и отель, выставить счёт клиенту отправкой электронной почты с информацией о его / её путешествии.

Интегрированное решение для бронирования перелётов и гостиниц JPEG 680*392Рис 1 Интегрированное решение для бронирования перелётов и гостиниц.

Решение: мы разработали интеграционное решение, используя Гуарана DSL, которое состоит из одного процесса оркестровки, который экзогенно координирует приложений, участвующие в интеграции, см. Рисунок 1. Некоторые порты имеют доступ к Системе Путешествий и Системе Счетов на уровне файлов. Задача Переводчик (Translator) используется в процессе перевода сообщений из канонической формы в схему, с которой интегрированы приложение Счетов и работа почтового сервера. Рабочий процесс начинается на входе порта P1, который периодически опрашивает Travel System, чтобы найти новые запросы. Запросы хранятся в отдельных XML-файлах. Для каждого запроса, входной порт порождает сообщение в процесс, который, в свою очередь, вводится в слот S1. Задача T1, получая сообщения из этого слота, реплицирует их, так что одна копия используется для отправки электронной почты заказчику, а другие используются для подготовки счёта и бронирования. Первый экземпляр проходит через фильтр задачи T2, который препятствует выходу на порт P2 сообщений, без адреса электронной почты. Задача T3 формирует запись локатора из тела сообщения в заголовок сообщения, так что бы его можно было использовать в целях корреляции в задачах Т5 и Т6. До корреляции, второй экземпляр раскладывается в задаче T4 на различные сообщения, так что одно исходящее сообщение с платёжной информацией идёт в Систему Счетов, а задачи T7 и T8 могут собрать сообщения, используемые для бронирования авиабилетов и отелей, соответственно.

4 комплект разработки программного обеспечения

Гуарана SDK является инструментом Java программного обеспечения, которое позволяет осуществлять и выполнять интеграционные решения разработанные с Гуарана DSL. Архитектура Гуарана SDK состоит из двух слоёв. Первый слой, называемый конструктивом (framework), обеспечивает абстрактную реализацию всех основных понятий DSL. Второй слой, называемый набором инструментов, предоставляет конкретные реализации конструктива, а также, этап выполнения на основе задач системы. Ниже мы покажем, как реализовать некоторые строительные блоки DSL с использованием Гуараны SDK для интеграционного решения, показанного на рисунке 1.

Для начала вы должны создать проект Java в вашем любимом IDE и импортировать файл jar предоставленный на сайте Гуарана в Интернете. Затем вы можете начать программировать решение. Так как процесс является лишь Контейнером для задач, вы можете написать:

import guarana.framework.process.Process;
public class BookingProcess extends Process
...
}

Внутри этого процесса, вы объявляете порты, задачи и слоты процесса для интеграционного решение. Теперь, давайте объявим порт P1 и задачу T1:

import guarana.framework.port.EntryPort;
import guarana.framework.task.Task;
...
private EntryPort p1;
private Task t1;

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

p1 = new EntryPort( "Reads from the Travel System Application" ) {
@Override
public void initialise() {
setInterSlot( new Slot( "s1" ) );
// Communicator
c = new InCommunicator( ... );
c.output[0].bind( getInterSlot() );
setCommunicator( c );
}
};
addPort( p1 );

Этот код создаёт Порт Входа и инициализирует его, используя метод initialise (). Внутри этого метода, слот S1 создан и установлен на порт как слот, который будет использоваться для передачи входящих сообщений в следующую задачу в интеграции потока - репликатор задача t1. Задача Коммуникатор поставлена на порт, и, наконец, последняя строка кода добавляет порта p1 к процессу.

Гуарана DSL позволяет разработчикам программного обеспечения создавать свои модели для решения проблем интеграции. Некоторые задачи очень просты и разработчикам программного обеспечения не придётся описывать никакой бизнес-логики для описания своей семантики, такие как задача — репликатор. Однако другие задачи должны настраивается с помощью низкоуровневой бизнес-логики, такие как политика фильтрации, которые должны быть применены к сообщениям. Такую конфигурацию сложно отслеживать, если она нарисована на листе бумаги с использованием Гуарана DSL, но можно упростить, если вы использовать программный инструмент, который позволяет разрабатывать и настраивать решения интеграции с помощью визуального конструктора. Ниже мы покажем, как настроить репликатор задача t1 на рисунке 1:

import guarana.toolkit.task.routers.Replicator;
s2 = new Slot("s2");
s4 = new Slot("s4");
t1 = new Replicator( "t1", 2 );
t1.input[0].bind( p1.getInterSlot() );
t1.output[0].bind( s4 );
t1.output[1].bind( s2 );
addTask( t1 );

При настройке фильтра задачи t2, разработчики программного обеспечения должны переопределить метод DoWork () для обеспечивает политики фильтрации по своему усмотрению. Эта задача может быть построена следующим образом:

s3 = new Slot("s3");
t2 = new Filter("t2") {
@Override
public void doWork(Exchange e) throws TaskExecutionException {
Message in = (Message) e.input[0].poll(); ....
String body = in.getBody();
if ( body.length() != 0 ) {
e.output[0].add(in);
}
}
};
t2.input[0].bind( s2 );
t2.output[0].bind( s3 );
addTask( t2 );

5 выводы

В этой статье мы ввели предметно-ориентированный язык (Гуарана DSL) для разработки решений интеграции корпоративных приложений на высоком уровне абстракции. Мы также представила комплект разработчика (SDK Гуарана), который представляет собой программный инструмент для реализации решений интеграции корпоративных приложений, разработанные на Гуарана DSL.

6 библиография

[1] D. Messerschmitt and C. Szyperski. Software ecosystemm: Understanding an indispensable technology and industry. MIT Press, 2003
[2] G. Hohpe and B. Woolf. Enterprise integration patterns: Designing, building, and deploying messaging solutions. Addison-Wesley, 2003
[3] J. Davies, D. Schorow, S. Ray, and D. Rieber. The definitive guide to SOA: Enterprise Service Bus. Apress, 2008
[4] D. Chappel. Enterprise Service Bus: Theory in practice. O’Reilly, 2004