Apache ODE
Juni 2010 - Service Oriented Architecture (SOA) krijgt steeds meer vaste voet aan de grond in softwareprojecten. Steeds meer organisaties zien het nut in van SOA voor de integratie van hun systemen. Daarbij wordt er voor complexe, bedrijfskritische processen vaak voor gekozen om deze vast te leggen met behulp van de Business Process Execution Language (BPEL). Met deze taal kunnen organisaties hun bedrijfsprocessen visualiseren en automatiseren, door applicaties met behulp van webservices met elkaar te verbinden. Dit orkestreren van bedrijfsprocessen vormt de kracht van BPEL.
De met BPEL geautomatiseerde bedrijfsprocessen kunnen processen zijn die een langere periode lopen, waarbij het kunnen terugvinden van gegevens en het kunnen monitoren en managen van procestransacties waardevol is. Het uitvoeren van deze BPEL-processen kan worden gerealiseerd met behulp van een BPEL-engine, waarvan er veel op de markt zijn, zowel commerciële als Open Source versies, zoals Apache ODE.
Apache ODE (Orchestration Director Engine) is interessant om te gebruiken in procesgestuurde softwareontwikkeling. De huidige Apache ODE is een samenvoeging van twee producten: Sybase BPE en Intalio PXE BPEL 2.0. De eerste (proef)versie van Apache ODE, versie 1.0, werd gelanceerd in juli 2007. Vanaf dat moment is het product steeds verder ontwikkeld. Zo bevatte versie 1.3.2 twee belangrijke features (naast veel andere nieuwe features): de ondersteuning van XQuery 1.0 en WS-Security. De laatste stabiele versie van ODE is versie 1.3.4 die dateert van juni 2010. Deze bevat vooral performanceverbeteringen en bugfixes. Er wordt al een lange tijd gewerkt aan versie 2.0 maar die is nog steeds in de bètafase.
In dit artikel bespreken we de huidige status van Apache ODE, de sterke en zwakke punten, wat we in de toekomst van Apache ODE kunnen verwachten en waarom voor Apache ODE gekozen zou kunnen worden. Kortom, vormt Apache ODE al dan niet een goede keus voor het implementeren van BPEL-processen?
Wat heeft Apache ODE te bieden?
De belangrijkste doelstelling bij de ontwikkeling van Apache ODE was het maken van een betrouwbaar, compact en insluitbaar component die in staat is de uitvoering van langlopende bedrijfsprocessen te beheren. Deze processen zijn beschreven met behulp van de BPEL-standaarden (OASIS WS-BPEL 2.0, en de BPEL4WS 1.1 specificatie). Ook lag de focus op het ontwikkelen van kleine modules met minimale afhankelijkheden die gezamenlijk een volledig functionele Business Process Management Suite (BPMS) vormen.
Apache ODE is volledig in Java geschreven en kan in twee verschillende omgevingen worden geïnstalleerd:
- als een Web applicatie: door een "Web ARchive" (WAR) bestand te installeren in een JEE Web Container, bijvoorbeeld Apache Tomcat, kan Apache ODE als een simpele Web Service worden aangeroepen met behulp van een SOAP/HTTP request, of:
- als een Java Business Integration (JBI) service in een JBI Container, zoals Apache ServiceMix. Als Apache ODE gebundeld in een ZIP-bestand wordt geïnstalleerd in een JBI-container, kan deze worden aangeroepen door gebruik te maken van een Normalized Message Router (NMR).
Hieronder volgt een kleine greep uit de lijst van functionaliteiten van Apache ODE:
- Het voert BPEL-processen uit, die voldoen aan de OASIS WS-BPEL 2.0-standaard. Tevens is ODE backward compatible met de BPEL4WS 1.1 specificatie.
- Het ondersteunt twee communicatie lagen: de eerste is gebaseerd op Axis2 (Web Services http transport) en de ander op de Java Business Integration (JBI) standaard (met behulp van ServiceMix).
- Het biedt ondersteuning voor HTTP WSDL en RESTful Web Services.
- Het biedt de mogelijkheid om procesvariabelen, extern te binden aan elke willekeurige databasetabel (mogelijk vanaf ODE 1.2 +).
- "High-level" API, waarmee de kern van de ODE-engine met vrijwel elke communicatie laag kan worden geïntegreerd.
- Deployment van processen zonder dat de server opnieuw hoeft te worden opgestart.
- Biedt gedetailleerde analyse en validatie op de opdrachtregel of tijdens deployment
- BPEL processen kunnen "in-container" worden gedebugged, met behulp van de Management API.
- Management API om te controleren welke processen zijn gedeployed, wat de status is van de lopende en voltooide instanties en nog veel meer
Managen van Apache ODE
Apache ODE heeft een volledige management API waarmee BPEL processen kunnen worden bestuurd. Deze management API wordt met behulp van Axis2 als webservice ter beschikking gesteld en is op te splitsen in: ProcessManagement en InstanceManagement. Met de ProcessManagement API kan een lijst van alle aanwezige processen of een gefilterde lijst van processen worden opgevraagd. Een proces kan worden geactiveerd of gedeactiveerd. Gedetailleerde informatie van een proces kan worden verkregen en eigenschappen van een proces kunnen worden aangepast. Met de InstanceManagement API kan informatie worden verkregen van een of meerdere instanties van een proces. Elk van de aanwezige instanties kan worden gepauzeerd, vervolgd, per direct beëindigd of verwijderd.
De management API's zijn aan te roepen met elke web service cliënt. Apache ODE levert echter ook een hulpklasse mee in ode-axis2.jar: ServiceClientUtil om het gebruik van deze API's te vergemakkelijken en binnen een Java toepassing te gebruiken.
Voor het bewaren van managementgegevens slaat ODE de procesgegevens op in een database. Bij een standaard installatie maakt ODE gebruikt van een Derby database, maar het is ook mogelijk een andere database te configureren. Bij de distributie van ODE worden scripts geleverd voor MySQL, Derby en Oracle. Vanwege de performance biedt Apache ODE, in plaats van gebruik te maken van een database, de keuze om processen 'in-memory' te draaien. Hierdoor zal het aantal gegenereerde queries - en daardoor de databasebelasting - drastisch verminderen. Echter het 'in-memory' uitvoeren van processen heeft ook zijn keerzijde. Dit type uitvoering legt namelijk verscheidene restricties op aan het BPEL-proces en wat deze kan doen. Zo kunnen deze processen niet door de management API onderzocht worden en kan de procesdefinitie slechts één activiteit bevatten, namelijk het triggeren van het aanmaken van een nieuwe instantie.
Eclipse BPEL Designer
Het 'Eclipse BPEL project' heeft een plug-in ontwikkeld waarmee, met behulp van een grafische interface, BPEL processen kunnen worden ontwikkeld en gedeployed in Apache ODE. De BPEL designer plug-in kan momenteel alleen nog gebruikt worden samen met Eclipse Ganymede. In een volgend Whitebook zullen we uitgebreid terugkomen op het installeren van de BPEL designer en het maken van een BPEL project met behulp van deze plug-in in Eclipse. Hieronder is een voorbeeld te zien van een BPEL proces zoals deze in Eclipse is gemaakt:

Wat kunnen we in de toekomst van Apache ODE verwachten?
De huidige versie: 1.3.4
Onlangs, juni 2010, is Apache ODE versie 1.3.4 verschenen. Deze bevat meer dan 100 bugfixes en verbeteringen. Een belangrijke nieuwe feature is de mogelijkheid van het doen van 'instance replaying'. In de vorige versie van ODE werd een nieuwe versie van een proces pas gebruikt als een nieuwe instantie van dat proces werd aangemaakt. In de nieuwe versie is het echter mogelijk om bestaande proces instanties, die in een bepaalde periode zijn uitgevoerd, te upgraden naar een nieuwe versie van het proces. In het geval een bugfix moet worden geïmplementeerd en uitgevoerd in een proces met meerdere langlopende instanties zal ODE automatisch de nieuw geïmplementeerde routes beoordelen en besluiten wat moet worden uitgevoerd. Een tweede verbetering is de ondersteuning van OSGi. OSGi is een Java framework voor het ontwikkelen en implementeren van modulaire, herbruikbare Java programma's genaamd: OSGi bundels. Deze OSGi bundels standaardiseren het deployen in een OSGi container, zonder een Java Enterprise Edition (JEE) mindset op te leggen en daarmee zijn de nadelen van het gebruik van JEE opgeheven, namelijk: met OSGi worden onderlinge afhankelijkheden van bijvoorbeeld .JAR-bestanden geregeld door de OSGi container, met OSGi kan versiebeheer worden toegepast op de bundels en niet het minste, OSGi biedt lifecycle management! Naast bovengenoemde voordelen kan met een BPEL-proces, gedeployed als een OSGi bundel, de services van dit BPEL-proces voor andere componenten ter beschikking worden gesteld. Daarnaast kan het BPEL-proces zelf worden uitgevoerd, terwijl de OSGi container de benodigde afhankelijkheden voor dit proces managet. Door het Spring framework toe te passen, kunnen OSGI configuratie properties in een BPEL proces worden opgevraagd.
De geplande versie: 1.3.5
Voor versie 1.3.5 staan onder andere de volgende verbeteringen en nieuwe features gepland:
- Ondersteuning voor webgebaseerd BPEL debuggen
- "native" BPMN 2.0 ondersteuning, gebaseerd op JACOB (de virtuele proces machine van ODE), waarbij het mogelijk is een BPMN 2.0 proces model te deployen
- Vermindering en hergebruik van procesgeheugen
- Ondersteuning van text/plain requests ten behoeve van externe REST-services
- Upgrade naar Hibernate 3.3.2.GA
De experimentele release 2.0
Release 2.0 van Apache ODE bevindt zich nu in de tweede bèta en kan voornamelijk worden toegepast voor evaluatie en test doeleinden. Als deze release wordt uitgebracht - er is namelijk nog niets officieel bekendgemaakt - zal duidelijk worden dat in deze release veel aandacht is gegeven aan "reliability capabilities", performance verbeteringen en een betere RESTful-ondersteuning. Deze release is te verkrijgen als artifact via de Maven2 repository.
Andere features die in de roadmap van Apache ODE worden genoemd zijn:
- Implementeren van "WS-BPEL 2.0 Specification Compliance"
- Management queries implementeren met OpenJPA
- Management API's op een RESTful wijze vrijgeven
- Service Component Architecture (SCA) integratie laag implementeren
- Management console
Conclusie
Als je bedrijfsprocessen met behulp van BPEL wil implementeren en een eenvoudige en snelle BPEL-engine volstaat, dan is Apache ODE zeker een goede keuze. Apache ODE ondersteunt de nieuwste versie WS-BPEL 2.0, draait onder elke JEE- of JBI-server en kan zeer eenvoudig worden geïnstalleerd. Omdat Apache ODE Open Source is, valt deze binnen elk budget toe te passen. Voor het ontwikkelen van processen kan gebruik worden gemaakt van Eclipse BPEL designer. Het Eclipse BPEL project heeft zich speciaal gericht op het ontwikkelen van BPEL-processen met Apache ODE als runtime engine. De management van Apache ODE is echter in de huidige vorm nog te beperkt: het bevat nog geen gebruikersinterface. Deze zal zelf ontwikkeld moeten worden door gebruik te maken van de management API die Apache ODE levert. Als je gebruik wilt maken van de management API zal Apache ODE de procesgegevens moeten persisteren in een database. Dit heeft echter wel gevolgen voor de performance.
Referenties
Apache ODE
Apache ODE - BPEL Management API Specification
OASIS
What is JBI?, Apache ServiceMix
Eclipse BPEL project

Reacties
Nieuwe reactie inzenden