Follow Us on Twitter

Oracle ESB, ontwikkelen met JDeveloper Studio

September 2006 – Afgelopen maand heeft Oracle de eerste public developer preview van hun nieuwe product Oracle Enterprise Service Bus beschikbaar gesteld. In een vorig Whitebook hebben we een sneak peak gegeven van wat Oracle ESB inhoud. In de komende maanden gaan we vier Whitebooks wijden aan dit nieuwe product en de mogelijkheden. Deze maand beginnen we met een beschrijving van het ontwikkelen van een testcase met behulp van JDeveloper Studio. In het volgende Whitebook gaan we verder in op het deployen en beheren van deze testcase met behulp van de JDeveloper en de web console.

Daarna volgen nog whitebooks over een tweetal aanvullende onderwerpen, namelijk het migreren van Oracle InterConnect naar Oracle ESB en het succesvol inzetten van Oracle ESB op een project.

Testcase

In dit Whitebook wordt de volgende testcase uitgewerkt.


Figuur 1, testcase scenario

Auto’s komen binnen bij auto-importeur Grote Auto BV. Zodra er een nieuwe auto binnenkomt worden de gegevens van de auto in een computersysteem ingeboekt en worden deze (in XML formaat) overgestuurd naar geïnteresseerde auto bedrijven. In deze testcase is dit autobedrijf “Het Pientere Pookje”. “Het Pientere Pookje” is in ons voorbeeld alleen geïnteresseerd in het automerk Volkswagen.

De gegevens van nieuwe auto’s van “Grote auto BV” die zijn ingevoerd in het voorraadsysteem worden klaargezet in XML formaat in een map op een lokale machine. Zodra deze bestanden in de map zijn geplaatst worden ze opgepikt door Oracle ESB, omgezet naar het formaat van “Het Pientere Pookje” en daar afgeleverd in een Oracle database. Deze gegevens worden weer gebruikt door het bestellingsysteem van “Het Pientere Pookje”.

Hieronder ziet u de XML formaten waarmee “Grote auto BV” en “Het Pientere Pookje” werken.


Figuur 2a, XML voorbeeldbericht "Grote auto B.V."


Figuur 2b, XML voorbeeldbericht "Het Pientere Pookje"

JDeveloper

Nadat een leeg ESB project is aangemaakt ziet het scherm uit als in figuur 3. Links is duidelijk te zien hoe het project is ingedeeld. Rechts is de “Component Palette” te zien waar alle ESB componenten staan vermeld. Op dit moment zijn in het Component Palette alle beschikbare adapters te zien. In JDeveloper wordt er veel gebruik gemaakt van wizards. In dit Whitebook zullen we alleen die wizard schermen tonen die interessante informatie bevatten. Daarnaast wordt ook niet verder ingegaan op het aanmaken van de diverse connections voor deze testcase. Deze zijn pas nodig bij het deployen (publiceren) van de testcase en daar besteden we in het volgende whitebook aandacht aan.


Figuur 3, JDeveloper ESB plug-in

Grote auto BV

Als eerste moeten in JDeveloper de benodigde XML schema bestanden worden gekoppeld aan het project. Het importeren van XSD’s gebeurd met de import button. Nadat de XSD’s bekend zijn kan de file adapter aangemaakt worden. Grote auto BV werkt met XML bestanden die op het filesysteem worden geplaatst. Selecteer de “File Adapter” rechts uit de “Component Palette” en sleep deze naar het hoofdscherm.


Figuur 4, aanmaken file adapter

Met het icoontje meteen naast het invulveld “WSDL File:” wordt de File Adapter Service verder geconfigureerd. Bij het configureren van de adapter wordt onder andere opgegeven:

  • waar de bestanden staan;
  • wat het formaat van de bestanden is;
  • hoe vaak er gekeken moet worden of er nieuwe bestanden zijn geplaatst;
  • op welke plek de verwerkte bestanden eventueel moeten worden gearchiveerd.

Na het voltooien ziet het scherm er als volgt uit:


Figuur 5, groteAutoBV_FileAdapter

Het Pientere Pookje

Autobedrijf “Het pientere pookje” slaat alleen binnenkomende VW berichten op in een tabel in de database. Verderop in dit whitebook wordt een filter toegevoegd, dat er voor zorgt dat alleen het gewenste automerk (Volkswagen) wordt doorgelaten. Als eerste wordt de adapter voor de database van “Het pientere pookje” gerealiseerd. Sleep de database adapter op het werkblad. De wizard wordt geopend. Een van de interessantste schermen is deze:


Figuur 6, database adapter configuration wizard

Hier wordt aangegeven hoe de database adapter de gegevens moet inserten, updaten, mergen, deleten en/of selecteren. Voor deze testcase voegen we alleen nieuwe records toe in de tabel. “Insert Only” wordt als enige aangevinkt. Daarna volgt de mogelijkheid om te kiezen in welke tabel de gegevens ingevoerd moeten worden. Dit ziet er als volgt uit:


Figuur 7, selecteren van de juiste doel tabel

Routering en transformatie

Beide adapters zijn nog niet aan elkaar gekoppeld. Om beide te koppelen moet een zogenaamde Routing Service worden toegevoegd. Selecteer in de Component Palette ESB Services en sleep een Routing Service naar het werkblad. Wanneer deze is aangemaakt kan de koppeling tussen de file adapter en database adapter worden aangemaakt.

|
Figuur 8, routing service en mapper geselecteerd

Met behulp van de Mapper tool kan een mapping tussen beide XML standaarden worden gemaakt. Dit kan door het aanklikken en slepen van de elementen binnen beide XML structuren.


Figuur 9, grafische representatie XSL mapper

De ESB Designer maakt hiervoor een XSL file aan. Rechts zijn in de Component Palette de diverse XSL- en Xpath-functies zichtbaar. Eventueel kan hier ook een externe tool voor worden gebruikt, bijvoorbeeld XMLSpy of Stylus Studio. Voor de enthousiastelingen kan het uiteraard ook met de unix editor vi.

Data filteren

Als laatste moet er nog een filter worden aangebracht op het automerk. Dit kan gedaan worden in een van beide Routing Services. In dit geval doen we het in de TestESB_RS. In de TestESB_RS kan door middel van het “trechter” icoontje de “Expression Builder” worden geopend.


Figuur 10, filter expression builder

Eindresultaat

Het eindresultaat in JDeveloper ziet er als volgt uit.


Figuur 11, resultaat testcase in JDeveloper

 

Op het scherm is duidelijk de adapter te zien + bijbehorende routing service van “Grote Auto BV”. In de file adapter is de aktie te lezen, “read”. Aan het gele “kruis” is te zien dat er een mapping is ingevoerd. In de testESB_RS is duidelijk te zien dat er een mapping is ingevoerd en dat er een filter mapping is toegevoegd. Dit is te zien aan het gele “trechter” icoon. Als laatste is de database adapter te zien en de bijbehorende aktie “insert”. En de blauwe lijnen tussen de blokken geeft aan dat alle blokken onderling verbonden zijn.

Samenvatting

In deze testcase zijn de belangrijkste gereedschappen van de ESB Designer aan bod gekomen. Er is onder meer gewerkt met adapters, routing services en mapping filters. Uiteraard biedt de ESB Designer veel meer functionaliteit, dit is echter te veel om in één Whitebook te beschrijven. In de toekomstige Whitebooks zullen we hier dieper op ingaan. De ESB Designer is een bijzonder krachtig en gebruiksvriendelijk onderdeel van JDeveloper Studio om een ESB proces mee in te richten uit te breiden en te onderhouden.

In het volgende Whitebook wordt verder ingegaan op het deployen van deze testcase en de mogelijkheden binnen de webbased ESB console. Tevens zal het volledige project inclusief bijbehorende XSD bestanden in het volgende whitebook te downloaden zijn.

Referenties / Links

Over de auteurs
Martin Kleinman is Oracle consultant bij Whitehorses en heeft 7 jaar ervaring in de IT. Hij heeft veel projecten afgerond met Designer/Developer en (web)PL/SQL. Martin heeft zich gespecialiseerd als allround integratie specialist met een focus op data- en applicatie-integratie (EAI/SOA).

Bastiaan Schaap is Oracle/Java consultant, teamleider en Oracle web-, multi-channel en Linux specialist bij Whitehorses. Hij heeft ruim 7 jaar ervaring met de Oracle server- en ontwikkelproducten op alle gangbare platformen, zowel mét als zonder Java. Vanuit een achtergrond als systeemintegrator en programmeur heeft Bastiaan zich ontwikkeld als een allround technisch specialist met een focus op data- en applicatie-integratie (EAI/SOA).

Waardering:
 

Reacties

Nieuwe reactie inzenden

De inhoud van dit veld is privé en zal niet openbaar worden gemaakt.

Meer informatie over formaatmogelijkheden

CAPTCHA
Deze vraag is om te testen of u een persoon bent en om spam te voorkomen
Image CAPTCHA
Enter the characters shown in the image.