Java Developers Day. Implementacja ESB przy użyciu Mule. ESB Mule Obsługa zamówień DEMO

Podobne dokumenty
Automatyzacja procesów biznesowych Andrzej Sobecki. ESB Enterprise service bus

Korporacyjna Magistrala Usług na przykładzie Oracle Service Bus

Korporacyjna Magistrala Usług na przykładzie Mule ESB

SPECYFIKACJE WYMAGAŃ PRZYPADKI UŻYCIA (USE CASE)

Załącznik nr 1 do umowy CUI/ZP/PN/.../2017. Warsztaty grupowe

Wszystkie parametry pracy serwera konfigurujemy w poszczególnych zakładkach aplikacji, podzielonych wg zakresu funkcjonalnego.

Michał Jankowski. Remoting w.net 2.0

Kolejkowanie wiadomości Standard MQ (JMS)

Komunikator. Program do internetowych połączeń w trybie On-Line.

Ćwiczenia 3: Specyfikacja wymagań Pytania:

1 Wprowadzenie do J2EE

Serwery Statefull i Stateless

Remote Quotation Protocol - opis

Warstwa integracji. wg. D.Alur, J.Crupi, D. Malks, Core J2EE. Wzorce projektowe.

Dokumentacja wstępna TIN. Rozproszone repozytorium oparte o WebDAV

AKADEMIA GÓRNICZO-HUTNICZA Wydział Elektrotechniki, Automatyki, Elektroniki i Informatyki

Przygotuj się na e-fakturowanie. Przewodnik po implementacji dla dostawców

Dotacje na innowacje - Inwestujemy w Waszą przyszłość ZAPYTANIE OFERTOWE

Lekcja 5. Funkcje handlemessage() i initialize(), konstruktor i destruktor

Tworzenie wersji demonstracyjnych enova365 na potrzeby prezentacji u Klienta

Bazy danych 2. Wykład 1

Technologie dla aplikacji klasy enterprise. Wprowadzenie. Marek Wojciechowski

TCP/IP. Warstwa aplikacji. mgr inż. Krzysztof Szałajko

Płatności CashBill - SOAP

EJB 3.0 (Enterprise JavaBeans 3.0)

Spotkanie robocze PIONIER-CERT Poznań, Tomasz Nowak Zespół Bezpieczeństwa PCSS

Współpraca z platformą Emp@tia. dokumentacja techniczna

Wybrane działy Informatyki Stosowanej

Komponenty sterowane komunikatami

Dokumentacja techniczna

Narzędzia i aplikacje Java EE. Usługi sieciowe Paweł Czarnul pczarnul@eti.pg.gda.pl

PureSystems zautomatyzowane środowisko aplikacyjne. Emilia Smółko Software IT Architect

Ciekawym rozwiązaniem służącym do obsługi zdarzeń dla kilku przycisków w ramach jednej aktywności może być następujący kod:

ezwroty WebApi Dokumentacja techniczna

Część I Dostęp do danych oraz moŝliwości programowe (silnik bazy danych)

Proxy (pełnomocnik) Cel: Zastosowanie: Dostarczyć zamiennik pewnego obiektu, pozwalający kontrolować dostęp do niego.

Kurs OPC S7. Spis treści. Dzień 1. I OPC motywacja, zakres zastosowań, podstawowe pojęcia dostępne specyfikacje (wersja 1501)

Diagramy przepływu danych II model środowiskowy, diagram odpowiedzi na zdarzenia KI AE PSI

Lekcja 8, 9 i 10. Konspekt lekcji Poczta elektroniczna. Materiał z podręcznika: Rozdział 5. Poczta elektroniczna

MINISTERSTWO FINANSÓW PLAN INTEGRACJI SYSTEMU ZAŁĄCZNIK NR 6 SEAP SPECYFIKACJA KANAŁ DLA PODMIOTÓW ZEWNĘTRZNYCH PL PROJEKT ECIP/SEAP

Wykład 3 / Wykład 4. Na podstawie CCNA Exploration Moduł 3 streszczenie Dr inż. Robert Banasiak

Inżynieria oprogramowania. Wykład 7 Inżynieria wymagań: punkty widzenia, scenariusze, przypadki użycia

Wypożyczalnia VIDEO. Technologie obiektowe

Java wybrane technologie

Instalacja rozwiązania Uruchomienie rozwiązania w systemie Sage Konfiguracja dodatku Ustawienia dodatkowe rozwiązania...

5. Model komunikujących się procesów, komunikaty

Opis programu:

MobileMerchant firmy Elavon Najczęstsze pytania

METADANE GEOINFORMACYJNE PODLASIA

15. Funkcje i procedury składowane PL/SQL

Regulamin usług świadczonych drogą elektroniczną dla strony

Kongres Logistyczny PTL 2001

Wykład Nr Sieci bezprzewodowe 2. Monitorowanie sieci - polecenia

GS2TelCOMM. Rozszerzenie do TelCOMM 2.0. Opracował: Michał Siatkowski Zatwierdził: IMIĘ I NAZWISKO

Oprogramowanie systemu B2B zakup licencji na oprogramowanie umożliwiające zarządzanie informacjami o produktach:

PROCEDURY LINK4 INSTRUKCJA PŁATNOŚCI KARTĄ za polisy komunikacyjne

Wybrane działy Informatyki Stosowanej

SprzedaŜ z wykorzystaniem kart e-pruf w programie Infofarm Apteka+

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Instrukcja użytkownika. Aplikacja Smart Paczka DPD

Specyfikacja techniczna. mprofi Interfejs API

Klient poczty elektronicznej - Thunderbird

Modelowanie przypadków użycia. Jarosław Kuchta Projektowanie Aplikacji Internetowych

ZPKSoft WDoradca. 1. Wstęp 2. Architektura 3. Instalacja 4. Konfiguracja 5. Jak to działa 6. Licencja

InPost dla PrestaShop. kompatybliny z wersjami: 1.5, 1.6. Instrukcja obsługi

J2EE Project TEMATY PROJEKTÓW PRZEMYSŁAW SOŁTAN. (0.2 build )

Budowa aplikacji w technologii. Enterprise JavaBeans. Maciej Zakrzewicz PLOUG

ZADANIE.10 Cisco.&.Juniper DHCP (Router, Firewall)

Aplikacja Sieciowa wątki po stronie klienta

Sieci komputerowe. Wstęp

Dotacje na innowacje - Inwestujemy w Waszą przyszłość ZAPYTANIE OFERTOWE

PODSTAWOWA KONFIGURACJA LINKSYS WRT300N

Prototype (prototyp) Cel: Przykład: Określenie rodzaju tworzonych obiektów poprzez wskazanie ich prototypu. Nowe instancje tworzymy kopiując prototyp.

Akademia Klienta CitiDirect. Zamówienie gotówki przez CitiDirect. LLipiec Do użytku wewnętrznego posiadacza rachunku

Wykład 2: Budowanie sieci lokalnych. A. Kisiel, Budowanie sieci lokalnych

REGULAMIN SKLEPU INTERNETOWEGO EDUGALERIA.PL DLA KLIENTA DETALICZNEGO

SIMON SAYS ARCHITECTURE! Usługi zdalne. Technologie, techniki i praktyki implementacji

PBS. Wykład Zabezpieczenie przełączników i dostępu do sieci LAN

Usługa TimerService

Programowanie w języku Java. Wykład 13: Java Platform, Enterprise Edition (Java EE)

SMART GRATIS DO ŁATWEJ KONFIGURACJI SYSTEMU. Zostań Mistrzem Konfiguracji automatyki Smart dzięki aplikacji SMART Control i routerowi TP-Link!

Architektura aplikacji

PROCEDURY LINK4 INSTRUKCJA PŁATNOŚCI KARTĄ oraz BLIK za polisy komunikacyjne

Spis treści. Dzień 1. I Wprowadzenie (wersja 0906) II Dostęp do danych bieżących specyfikacja OPC Data Access (wersja 0906) Kurs OPC S7

DHL CAS ORACLE Wymagania oraz instalacja

Windows W celu dostępu do i konfiguracji firewall idź do Panelu sterowania -> System i zabezpieczenia -> Zapora systemu Windows.

Wykład VI. Administrowanie szkolną siecią komputerową. dr Artur Bartoszewski

Komunikator internetowy w C#

JBPM [JUG] Tomasz Gratkowski [GRATKOWSKI SOFTWARE]

Dokumentacja interfejsu HTTPD. Platforma BSMS.PL Instrukcja podłączenia po przez http

Wykład 5: Najważniejsze usługi sieciowe: DNS, SSH, HTTP, . A. Kisiel,Protokoły DNS, SSH, HTTP,

Architektura mikroserwisów na platformie Spring IO

Opis Przedmiotu Zamówienia

JBoss: MetaMatrix, Mobicents, Seam, Rools, ESB

Podręcznik użytkownika AgentOptimed24

Budowa aplikacji ASP.NET współpracującej z bazą dany do obsługi przesyłania wiadomości

Projektowanie obiektowe Wzorce projektowe. Gang of Four Strukturalne wzorce projektowe (Wzorce interfejsów)

JAX-RS czyli REST w Javie. Adam Kędziora

Programowanie współbieżne i rozproszone

Transkrypt:

Java Developers Day Implementacja ESB przy użyciu Mule Michał Majcher michal.majcher@altkom.pl Łukasz Krawczyk lukasz.krawczyk@altkom.pl slide 1 Tematy ESB Mule Obsługa zamówień DEMO Opis problemu Przepływ komunikatów Implementacja w Mule Komponenty Transport Obsługa wyjątków slide 2 1

ESB wprowadzenie Co to jest? Dlaczego i do czego tego potrzebujemy? Co z SOA? Co to jest JBI? slide 3 Mule Projekt opensource rozpoczęty w 2003 10+ deweloperów stale go rozwijających (Mule 2.0) Używany przez duże firmy takie jak HP, Sony, Citibank Dostępne komercyjne wsparcie slide 4 2

Mule architektura, podstawowe komponenty slide 5 Obsługa zamówień DEMO 3

Obsługa zamówień założenia Aplikacja wspiera przetwarzanie request/response, klient zamawiając towar od razu dowiaduje się o możliwości jego zrealizowania Możliwość przetwarzania dużej ilości zamówień, łatwa skalowalność Komponenty komunikują się między sobą poprzez JMSa Pobieramy dane z zewnętrznych systemów używając do tego różnych protokołów takich jak JMS, SOAP, HTTP, RMI/IIOP slide 7 Obsługa zamówień, diagram JMS Reply-To slide 8 4

Komponenty opis Klient aplikacja webowa/batch OrderService InventoryGateway Inventory CRMGateway CRM CreditCardCompanyGateway Credit Card Company ShippingService Firmy kurierskie Aplikacja umożliwiająca prezentująca klientowi listy produktów i umożliwiająca składanie na nie zamówień. Obiera składane zamówienia, rozpoczyna przetwarzania, zwraca wyniki klientowi. Sprawdza dostępność oraz pobiera dodatkowe informacje o produkcie. Zewnętrzna aplikacja obsługująca magazyn. Pobiera dodatkowe informacje o kliencie składającym zamówienie. Zewnętrzna aplikacja zawierająca bazę klientów. Autoryzuje transakcję Zewnętrzny system umożliwiający autoryzację transakcji Wybiera sposób dostarczenia towaru. Zewnętrzny system umożliwiający sprawdzenia kosztu i czasu dostarczenie towaru slide 9 Przepływ komunikatów 1. Klient składa zamówienia wybierając identyfikator i ilość towaru. 2. Zaczynamy przetwarzanie zamówienia tworzymy komunikat z odebranymi informacjami, dodając dodatkowo identyfikator klienta. 3. Wysyłamy komunikat do magazynu. 4. Pobieramy szczegółowe informacje o produkcie (cenę, nazwę i typ produktu) i sprawdzamy jego dostępność, odebrane informacje doklejamy do komunikatu. 5. Wysyłamy komunikat do CRM. 6. Na podstawie identyfikatora klienta pobieramy dodatkowe informacje o kliencie takie jak jego adres, numer karty kredytowej i przysługujący mu rabat. Odebrane informacje ponownie doklejamy do komunikatu 7. Wysyłamy komunikat do firmy obsługującej karty kredytowe. 8. Znając numer karty kredytowej i kwotę na którą klient złożył zamówienie prosimy o autoryzacje transakcji. 9. Przesyłamy komunikat aby wybrać sposób dostarczenia przesyłki. 10. Na podstawie typu produktu wybieramy możliwe sposoby dostarczenia i odpytujemy firmy kurierski o datę dostarczenia i koszt takiej usługi 11. Odpowiedzi zawierające datę i koszt dostarczenia towaru przesyłamy do OrderService. 12. Przesłanie i zaprezentowanie wyników klientowi. slide 10 5

Obsługa zamówienia Implementacja w Mule Komunikat OrderRequest to podstawowy obiekt wymieniany pomiędzy wszystkimi komponentami w celu realizacji zamówienia. W tym przykładzie jest to zwykły JavaBean normalnie powinien to być XML. public class OrderRequest implements Serializable { /** ilość */ private int amount; /** dane klienta */ private CustomerData; /** dane zamawianego produktu */ private ProductData; /** różne oferty dostarczenia */ private List shipoffers; } slide 12 6

OrderService Odbiera identyfikator klienta, produktu oraz jego ilość następnie tworzy obiekt OrderRequest i wysyła go do skonfigurowanej kolejki rozpoczynając realizację zamówienia. Zbiera również wyniki przetwarzania i prezentuje je klientowi. Konfiguracja <mule-descriptor name= OrderService" implementation= pl.altkom.order.orderservice"> <inbound-router> <endpoint address= jetty:rest://localhost:8080/orderservice transformers="restrequesttoorderrequest"/> <endpoint address="vm://order.service.request"/> </inbound-router> <outbound-router> <router classname="org.mule.routing.outbound.outboundpassthroughrouter"> <endpoint address=" jms://esb.order.inventory "/> </router> </outbound-router> <response-router timeout="1000000"> <endpoint address="jms://esb.order.confirm"/> <router classname= pl.altkom.esb.routers.orderresponseaggregator"/> </response-router> </mule-descriptor> slide 13 Inventory gateway Sprawdza czy istnieje zamawiany produkt w podanej ilości oraz pobiera dodatkowe informacje o towarze. Wynik ProductData zawierający identyfikator, nazwę, rodzaj i cenę produktu dołącza do OrderRequest i przesyła dalej. Konfiguracja <mule-descriptor name= InventoryGateway" implementation= org.mule.components.simple.bridgecomponent."> <inbound-router> <endpoint address= jms://esb.order.inventory"/> </inbound-router> <outbound-router> <router classname="org.mule.routing.outbound.outboundpassthroughrouter"> <endpoint remotesync="true" address=" vm://order.inventory"/> <endpoint address= jms://esb.order.crm /> </router> </outbound-router> </mule-descriptor> slide 14 7

CRM gateway Na podstawie odebranego identyfikatora pobiera z bazy klientów informacje o nim. Interesują nas adres, numer karty kredytowej i wysokość rabatu. Wynikiem jest obiekt CustomerData który doklejamy do zamówienia i przesyłamy do dalszego przetwarzania Konfiguracja <mule-descriptor name= CrmGateway" implementation="org.mule.components.builder.reflectionmessagebuilder"> <inbound-router> <endpoint address="jms://esb.order.crm"/> </inbound-router> <outbound-router> <router classname="org.mule.routing.outbound.filteringoutboundrouter"> <endpoint remotesync="true transformers= OrderRequestToCustomerDataArgs responsetransformers= CustomerDataXmlToCustomerData address="ejb://localhost:1099/local/crm?method=getcustomerdata"/> <endpoint address="jms://esb.order.ccc"/> </router> </outbound-router> </mule-descriptor> slide 15 Credit Card Company gateway Mając już kwotę zamówienia i numer karty kredytowej wysyłamy prośbę o autoryzację transakcji. Konfiguracja <mule-descriptor name= CCAGateway" implementation="org.mule.components.simple.bridgecomponent"> <inbound-router> <endpoint address= jms://esb.order.ccc"/> </inbound-router> <outbound-router> <router classname="org.mule.routing.outbound.outboundpassthroughrouter"> <endpoint remotesync="true" address="axis:http://localhost:10080/mule"/> <endpoint address= jms://esb.order.ship"/> </router> </outbound-router> </mule-descriptor> slide 16 8

ShippingService W zależności do rodzaju produktu wybieramy możliwe sposoby dostarczenia.następnie ustalamy listę firm do których wyślemy zapytanie o termin dostarczenia i cenę takiej usługi. Wyniki poszczególnych zapytań trafią bezpośrednio do OrderService w celu przetworzenia i zaprezentowania klientowi. Konfiguracja <mule-descriptor name= ShippingService" implementation= pl.altkom.order.shippingservice"> <inbound-router> <endpoint address= jms://esb.order.ship"/> </inbound-router> <outbound-router> <router classname="org.mule.routing.outbound.staticrecipientlist"> <reply-to address= jms://esb.order.confirm"/> </router> </outbound-router> </mule-descriptor> slide 17 Obsługa błedów Obsługa wyjątków poprzez definiowanie strategii na konektorach bądź komponentach różne typy wyjątków możemy obsługiwać w inny sposób możemy zmieniać routing komunikatów Obsługa błędów połączeń kontrolujemy jak podłączamy się do zasobów w elastyczny sposób możemy definiować ponowne podłączanie powiadomienia przy nieudanych połączeniach możemy zmienić routing komunikatu na podstawie nieudanych połączeń slide 18 9

Dalsze informacje Mule http://www.muleumo.org EIP Book (Enterprise Integration Patterns) http://www.eaipatterns.com ESB http://searchwebservices.techtarget.com /general/1,295582,sid26_gci1085711,00. html SEDA http://www.eecs.harvard.edut/~mdw/pa pers/mdw-phdthesis.pdf slide 19 Pytania 10

Dziękujemy za uwagę Michał Majcher michal.majcher@altkom.pl Łukasz Krawczyk lukasz.krawczyk@altkom.p l 11