Documentatie Distributed Services Enterprise Service Bus Pleun Willemsen en Walter Ebbers 19 april 2012 v1.0 1
Inhoudsopgave 1 Inleiding 4 1.1 Opdracht................................ 4 2 Analyse 5 3 Ontwikkelomgeving 6 3.1 Client.................................. 7 4 Enterprise Service Bus 8 5 Groothandel A - Computerwinkel 8 6 Groothandel B - McDonalds 9 7 Testcases 10 8 Gebruikershandleiding 11 8.1 Handleiding............................... 11 9 Persoonlijke bevindingen 13 9.1 Bevindingen Pleun Willemsen..................... 13 9.2 Bevindingen Walter Ebbers...................... 13 10 Bronnen 14 2
Revisie geschiedenis Datum Versie Omschrijving Auteur 19-04-2012 0.1 template gemaakt Pleun Willemsen 19-04-2012 0.2 Opdracht en Ontwikkelomgeving Pleun Willemsen 19-04-2012 0.3 Handleiding Walter Ebbers Begrippen Begrip ESB JMS JPA Uitleg: Enterprise Service Bus Java Message Service Java Peristence Api 3
1 Inleiding Dit document is bedoelt ter verslaglegging van de opdracht ESB van Distributed Services. In het verslag staan zaken als analyse, de client uitleg, de ESB uitleg met de bijbehorende flows en onze persoonlijke bevindingen. Dit document is bedoelt ter verslaglegging van de opdracht ESB van Distributed Services. 1.1 Opdracht Voor het inmiddels welbekende [S]Aktiehuis moet de verwerking van bestellingen worden opgepakt. Figuur 3 geeft dit schematisch weer. De bestelservice heb je al gemaakt bij de opdracht Remote Services en / of Enterprise Applications. Wat er nu moet gebeuren, is dat de bestelservice de bestelling in een message queue zet. Een content-based router beslist dan op basis van de inhoud van de bestelling, of deze moet worden doorgegeven aan groothandel A of groothandel B. Beide groothandels bieden hiervoor een webservice aan. Na ontvangst van de bestelling stuurt de betreffende groothandel een bevestiging. Dit gebeurt door een bericht op een tweede messagequeue van de [S]Aktiehuis ESB zetten. De berichten van deze messagequeue moeten uiteindelijk worden omgezet naar een leesbaar bestand (platte tekst; geen XML) op het filesysteem van de server van [S]Aktiehuis. 4
2 Analyse In de opdrachtomschrijving staat in grote lijnen beschreven hoe de applicatie er uit moet komen te zien. Onze analyse is dan ook gebaseerd op de opdrachtomschrijving. We hebben gekozen voor een MuleSoft Enterprise Service Bus v3.2 omdat dit werd aangeraden door de docent en er leek veel voorbeeld materiaal beschikbaar te zijn hadden we onderzocht. We zijn er ons van bewust dat deze versie nog wel in ontwikkeling is. (Zie Persoonlijke Bevindingen ) 5
3 Ontwikkelomgeving Onze beide groothandels zijn twee EJB containers die draaien op een Opensource Community GlasshfishServer v3.1.2 en hebben verbinding met een Microsoft SQL Server 2008 R2 x64. De Enterprise Service Bus draait op een MuleServer Community v3.2.1. De client is een console application geschreven in java. De ESB wordt ontwikkeld in MuleStudio v1.0.0. 6
3.1 Client De client is een java standalone console applicatie. Omdat de client niet ons hoofddoel is hebben we een map met producten gemaakt die overeenkomen met de producten uit de database. Denk aan productsoort, productid enz. De gebruiker kan een productid invoeren en dat wordt doorgestuurd naar de ESB (zie Gebruikershandleiding). De communicatie tussen client en ESB verloopt middels JMS. De client zet een bericht op de queue waar de ESB op luistert. 7
4 Enterprise Service Bus Voor de binnenkomende bestellingen op de ESB maken we gebruik van de volgende flow: Het bericht dat binnenkomt vanuit de client is een bestelling. In deze bestelling staan een aantal waarden. 1 van de waarden is de productsoort. Via deze productsoort word de bestelling doorgestuurd na de juiste groothandel. Voor deze groothandels zijn er ook een aantal flows en die zijn te zien in de onderstaande secties. 5 Groothandel A - Computerwinkel Via JMS wordt de bestelling doorgestuurd naar de message driven queue van de groothandel. Via de onmessage in de groothandel wordt de bestelling opgeslagen in de database. Als dit gebeurd is wordt er op een nieuwe queue een bevestiging gezet. Deze bevestiging wordt in mule opgevangen en weggeschreven naar de hardeschijf op de server. Alleen producten met productsoort Hardware worden bij deze groothandel afgeleverd. 8
6 Groothandel B - McDonalds Via JMS wordt de bestelling doorgestuurd naar de message driven queue van de groothandel. Via de onmessage in de groothandel wordt de bestelling opgeslagen in de database. Als dit gebeurd is wordt er op een nieuwe queue een bevestiging gezet. Deze bevestiging wordt in mule opgevangen en weggeschreven naar de hardeschijf op de server. Alleen producten met productsoort McDonalds worden bij deze groothandel afgeleverd. 9
7 Testcases Doordat we tijdens de ontwikkeling al tegen een aantal problemen aanliepen en deze wisten op te lossen hebben we de software al getest. Door dat de client ook werkt op de ESB is er aan te tonen dat de software goed met elkaar samenwerkt. 10
8 Gebruikershandleiding Om als gebruiker producten te kunnen bestellen word er aanbevolen het onderstaande door te lezen. 8.1 Handleiding Als de client is opgestart verschijnt het volgende scherm. Er wordt weergegeven welke producten aanwezig zijn en door middel van het invoeren van het productid kan men een product bestellen. Na het invoeren van een productid dient er op enter gedrukt te worden. een succesvolle bestelling verschijnt het onderstaande: Bij 11
Indien het opgegeven product niet bestaat wordt dit weergegeven zoals te zien is in het onderstaande scherm. Als men de applicatie wilt sluiten hoeft er alleen exit ingevoerd te worden en de applicatie wordt afgesloten met een melding zoals hieronder te zien is. 12
9 Persoonlijke bevindingen 9.1 Bevindingen Pleun Willemsen 9.2 Bevindingen Walter Ebbers Na het dilemma met JPA was er hoop op dat ESB beter zou gaan. In een aantal opzichten was dit ook het geval. In het begin was het gebruik van een queue in Mule best wel lastig. Maar na veel te focussen op de demo s werd dit uiteindelijk beter. Wat een groot nadeel was is dat we onze.net webservice niet aan de praat kregen. Hierdoor hebben we gebruik gemaakt van 2 instanties van onze EJB server uit de vorige opdracht. Verder was het gebruik van een choice een groot drama in het begin. Je moet goed weten hoe de expressions werken met de bijbehorende values. Nadat dit werkte was het heel makkelijk. 13
10 Bronnen MuleSoft.com - Ontwikkelaars van de MuleStudio Hoorcolleges Distributed Services 14