(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Создание приложения Oracle CEP с нуля

Источник: oraclegis
oraclegis

В этой статье я расскажу, как создать новое приложение Oracle CEP, которое читает данные с помощью адаптера из очереди JMS, обрабатывает их и передает на выход только те сообщения, которые удовлетворяют условию. В итоге мы придем вот к такому приложению

image

Начинаем работу

  1. Инсталлируем плагин для Oracle CEP и запускаем сервер Oracle CEP. Это детально описано - в предыдущей статье.
  2. Создаем новое приложение для Oracle CEP.
    imageimage
  3. Задаем параметры приложения Oracle CEP. При этом выбираем не использовать базовые приложения
    imageimageimageimage
  4. Приложение создано и мы можем приступать к настройке работы приложения.

Настройка готового и создание собственного адаптера

Основная роль адаптера - преобразование данных, поступающих из различных источников в формат событий Oracle CEP. Затем эти события передаются следующим по цепочке компонентам сети обработки событий. Обычно, адаптер - это точка входа или выхода событий в/из приложения Oracle CEP.

В поставке Oracle CEP идут следующие готовые адаптеры:

  • JMS адаптера (Weblogic JMS, Oracle AQ, Websphere MQ и др.)
  • HTTP publish-subscribe адаптер

Если у вас другой источник, например:

  • датчики со своими API
  • плоские файлы
  • RSS, twitter
  • Reuters, Wombat или Bloomberg

то пишется Java-класс, обрабатывающий событие. Мы рассмотрим 2 варианта получения событий: с помощью JMS и с помощью адаптера собственной разработки.

JMS
  1. Настраиваем очередь сообщений в соответствие с инструкцией Oracle WebLogic Server 10.3: Configure JMS Servers and Destinations (инструкция для Weblogic; для других серверов приложений - обращайтесь к документации соответствующих продуктов)
  2. Для конфигурации входящего JMS-адаптера, кликнем правой кнопкой в EPN Editor и выберем New->Adapter (для перехода в EPN Editor нужно кликнуть правой кнопкой файл HelloWorld.context.xml и выбрать Open in EPN Editor)
    image
  3. Задаем имя адаптеру и указываем его тип - jms-inbound
    image
  4. Указываем пока еще не существующий тип событий - jmsEvent. Его нужно будет создать позже, а также параметры для подключения к JMS
    image
  5. Закрываем окно конфигурации JMS-адаптера. В результате должна получиться следующая картинка:
    image
  6. Создаем тип ожидаемого события jmsEvent в EPN Editor на закладку Event Types - я добавил 2 поля username и message:
    image
Создаем тип события jmsEvent
  1. Как было оговорено - на вход сети будут поступать события, содержащие 2 атрибуты username и message. Для эффективной работы с этими событиями создадим класс Java - cep.event.JMSEvent. В этом классе создадим 2 private поля - username и message:
    imageimage
  2. Для эти полей реализуем соответствующие методы get и set. Для этого кликнем правой кнопкой в редакторе кода и выберем Source->Generate Getter And Setter methods.
    imageimage
  3. Теперь необходимо зарегистрировать тип события в EPN Editor на закладке Event Types.
    image
Создаем потребителя событий (Sink)

Обычно событий, поступающие из адаптера перерабатываются, просеиваются, анализируются и агрегируются. В нашем простейшем случае - мы сразу направим поток событий потребителю для вывода на экран. Выводом на экран будет заниматься специальный класс cep.sink.simpleListener.

  1. Создаем новый класс - cep.sink.simpleListener. Для того, чтобы включить его в качестве потребителя в сеть, необходимо в этом классе реализовать соответствующий интерфейс - StreamSink.
    imageimage
  2. Вывод на экран организовываем с помощью System.out:
    image
    view source print?
    1  @Override 
    2  public void onInsertEvent(Object event) throws EventRejectedException {  
    3  if (event instanceof JMSEvent){  
    4  JMSEvent jmsEvent=(JMSEvent) event;  
    5  System.out.println("---------------------------------------------");  
    6  System.out.format("Username:%s Message:%s\n",jmsEvent.getUsername(),jmsEvent.getMessage());  
    7  }  
    8  } 
  3. Ну и последнее - нужно связать выход адаптера со входом listener. Для этого в EPN Editor жмем правой кнопкой на полотне и выбираем New->Event Bean. Затем кликаем на иконке адаптера  и, удерживая левую кнопку мыши, тащит стрелку на eventBean. После соединения адатера и listener стрелкой появляется ошибка (около адаптера загорается красный фонарик) - он пропадет после того, как мы свяжем ранее описанный класс с элементом сети eventBean.

    imageimage

  4. Жмем 2 раза на eventBean - в открывшемся xml-описании переименовываем объект и задаем для него класс event.sink.simpleListener:

    image

  5. В результате мы имеем вот такую сеть:

    image

Разворачиваем приложение и тестируем.

Для того, чтобы развернуть приложение на сервере:

  1. Запускаем сервер CEP

    image

  2. Публикуем приложение. Для этого жмем правую кнопку на сервере CEP и выбираем "Add and Remove", добавляем приложение. Затем необходимо синхронизировать приложение кнопкой "Publish to Server"

    image

  3. Приложение для обработки событий развернуто.
  4. Скачаем тестовое приложение, которое будет наполнять очередь сообщений. Скачать приложение можно по следующим ссылка:
  • приложение + исходники + полный пакет библиотек для подключения к weblogic (60 Мб)
  • приложение + исходники (7 Кб)
  • запускаем следующей командой

    java -jar postJMS.jar URL QUEUE_NAME USERNAME PASSWORD NUM_OF_MEESAGES

Результат работы

В консоли Eclipse мы увидим сообщения, получаемые из очереди:

image

Добавляем процессор

Мы только что создали простейшее приложение:

image

Давайте добавим обработчик событий. Для того мы создаем 2 канала и процессор, а также коммутируем их:

image

image

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

view source print?
1  <wlevs:channel id="inputChannel" event-type="jmsEvent">  
2  <wlevs:listener ref="processor" />  
3  </wlevs:channel>  
4    
5  <wlevs:channel id="outputChannel" event-type="jmsEvent">  
6  <wlevs:listener ref="simpleOutputBean" />  
7  </wlevs:channel 

image

По-умолчанию процессор настраивается так, чтобы пропускать через себя все сообщения. Настроим его таким образом, чтобы он пропускал только те сообщения в которых встречается "100". Для этого кликнем 2 раза на процессоре в EPN Editor - откроется окно настройки процессора:

image

Как можно видеть процессору сопоставлен 1 запрос на CQL и тот закомментирован

view source print?
1  <processor>  
2  <name>processor</name>  
3  <rules>  
4  <query id="ExampleQuery"> <!-- <![CDATA[ select * from MyChannel [now] ]]> --> </query>  
5  </rules>  
6  </processor> 

Давайте раскомментируем его и зададим условия на события (используется regular expression), которые процессор будет пропускать дальше по цепочке:

view source print?
1  <processor>  
2  <name>processor</name>  
3  <rules>  
4  <query id="ExampleQuery">  
5  <![CDATA[ select * from inputChannel [now] where message like ".*100.*" ]]> 
6  </query>  
7  </rules>  
8  </processor> 

В результате на консоль будут выводиться только сообщения, содержащие 100:

image

Заключение

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

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Oracle »
Написать редактору 
 Рекомендовать » Дата публикации: 25.06.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Oracle Database Standard Edition 2 Named User Plus License
Oracle Database Standard Edition 2 Processor License
Oracle Database Personal Edition Named User Plus Software Update License & Support
Oracle Database Personal Edition Named User Plus License
SAP® Crystal Presentation Design 2016 WIN INTL NUL
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Новые материалы
Delphi - проблемы и решения
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Кто, что знает за карту рассрочки Совесть? (1)
Иногда требуется купить что-то очень нужное, но выделить средства нет возможности. В этом случае...
 
Access, Ключевое поле, Счетчик (10)
Подскажите пожалуйста, как изменить в Access в ключевом поле (счетчик последовательно),...
 
Решение задач на оптимизацию с помощью MS Excel (4)
Zdravstvuyte, ya pro4itala danniy material, no ne smogla ponat kakie formuli ispolzovalis v...
 
Отличается ли ДрифтКазино от беттинга? (4)
Друзья, давно заметил, что на Дрифте уже несколько месяцев во всю рекламируется и предлагается...
 
Сайт инструмент (1)
Я бывший программист пользовался 1 сайтом проверенным он мне действительно помог я блогодоря...
 
 
 



    
rambler's top100 Rambler's Top100