forms2future in action for saas provider connexys
DESCRIPTION
This article describes the history of the NextGen project at Dutch SaaS provider Connexys (www.connexys.eu). It outlines common challenges for SaaS applications - such as customization and cross-cloud-integration - and describes how these were addressed. The article brushes upon the technology used (Oracle Database, SQL/PLSQL, Oracle ADF (ADF BC, JSF/ADF Faces, JDeveloper, JHeadstart).TRANSCRIPT
Forms2Future presentatie op OBUG 2010:
Castle in the clouds – Building the Connexys
SaaS application with Fusion Middleware
Tijdens de OBUG 2010 conferentie op dinsdag 23 maart jl. in conferentie centrum Papendal was
'Forms2Future' een van thema's, zowel in de presentaties als op de expositie. Dit thema betreft niet
uitsluitend over Forms - het beschrijft in het algemeen een omgeving met klassieke Oracle ontwikkel-
technologie en bijbehorende applicaties, werkmethodes en medewerkers in organisaties die op de
toekomst willen inspelen. De toekomst voor deze organisaties omvat verschillende uitdagingen en
mogelijkheden. Bijvoorbeeld nieuwe wensen van de business - en de eis om een kortere time-to-market
te realiseren voor toekomstige nieuwe wensen, nieuwe gebruikersgroepen en nieuwe kanalen
waarlangs applicatie-functionaliteit moet worden aangeboden. En ook een verdergaande integratie
binnen de organisatie - koppelingen tussen systemen, bruggen tussen technologieën - en tussen de
organisatie en business partners en overheidsinstanties.
De presentatie van Arne van den Ing (architect bij Connexys) en Lucas Jellema (technisch consultant bij
AMIS) ging in op de reis die Connexys heeft gemaakt in het licht van een aantal van deze uitdagingen
van een klassieke Oracle omgeving naar een op de toekomst voorbereide situatie. Deze reis omvat
zowel technologie en applicatie als werkwijze en veel betrokken medewerkers en klanten. De Connexys-
applicatie is een SaaS-applicatie (Software as a Service) die vanuit 'de cloud' door meer dan 150
organisaties wordt gebruikt. Dit stelt specifieke eisen aan de applicatie, ondermeer op het vlak van de
dynamische aanpasbaarheid, het operationele beheer en de integratie (across the cloud). Het lijkt er
overigens op dat veel van de voorzieningen die ten behoeve van het SaaS karakter van de applicatie zijn
ontworpen eigenlijk in iedere applicatie van waarde kunnen zijn.
Figuur: Gepersonificeerd Dashboard voor de Connexys NextGen applicatie
Dit artikel geeft een beeld van de presentatie van Arne en Lucas - achtereenvolgens van de
uitgangssituatie bij Connexys, de keuzes die zijn gemaakt en de overwegingen daarbij, de belangrijkste
elementen in het "NextGen project" en de specifieke voorzieningen die voor 'customization' en 'cross-
cloud service ontsluiting' van SaaS applicaties ontworpen zijn.
Connexys - een paar jaar geleden Aan het begin van het decennium startte Connexys met een browser gebaseerde applicatie die Werving
& Selectie en HRM-processen ondersteunde voor kleinere en vooral grotere organisaties. In een paar
jaar bouwt Connexys een groot marktaandeel op met ruim 100 klanten en superieure functionaliteit.
Figuur: Screenshot van Connexys OldGen - de applicatie van voor 2008
Dan doet de wet van de remmende voorsprong zich gelden: nieuwe partijen in de markt bieden visueel
rijkere, modernere applicaties en verleiden daarmee nieuwe klanten. Andere aandachtspunten voor
Connexys zijn de groeiende kosten van implementaties, de inspanning voor het onderhoud van de vele
klantspecifieke aanpassingen en het te beperkte vermogen snel nieuwe functionaliteit te realiseren.
Het marktaandeel van Connexys groeit niet meer en het bedrijf staat voor een belangrijke keuze: de
bestaande applicatie handhaven, verder uitmelken en een langzame maar zekere teruggang accepteren
of de applicatie en de organisatie moderniseren en het leiderschap in de markt terugpakken en
uitbouwen. Dat laatste scenario vergt actie en een substantiële investering.
De directie van Connexys is niet toe aan de rol van Cash Cow en op termijn een nachtkaarsscenario. Er
wordt besloten tot het NextGen project dat de toekomst zal binnenhalen.
Het NextGen project Het uitgangspunt voor Connexys is een deels met de Oracle Designer WebServer Generator gegeneerde
PL/SQL applicatie - op basis van de Web PL/SQL Toolkit die vanuit de Oracle Database met behulp van
het HTP package en de MOD_PLSQL module voor Apache HTML pagina's oplevert. De applicatie is in de
loop der jaren enorm verrijkt, middels handmatige aanpassingen op de gegenereerde code. Het
fundament van de applicatie wordt gevormd door een solide data model en een laag die bedrijfsregels
en data integriteit afdwingt met triggers en packages. Een dozijn medewerkers werkt aan het ontwerp,
de ontwikkeling en het beheer van de applicatie.
Keuzecriteria voor de technologie die voor NextGen werd geselecteerd waren met name:
functionaliteit - kan de stack de functionele (en vele non-functionele) eisen implementeren
productiviteit - is de ontwikkeling van toekomstige functionaliteit mogelijk binnen tijd en budget
time to market & flexibiliteit - biedt de stack voldoende 'agility'? Kan nieuwe functionaliteit snel
ingepast en bijgebouwd worden
licentiekosten - de directe out-of-pocket kosten voor het inzetten van de stack
haalbaarheid voor team - in hoeverre kan het bestaande team van ontwikkelaars en beheerders
maar ook ontwerpers, testers en andere betrokkenen, de stack adopteren binnen redelijke
termijn en tegen redelijke kosten
Daarnaast was een uitgangspunt dat de bestaande Oracle database ook de nieuwe applicatie zou gaan
bedienen - ondermeer omdat gedurende een overgangsperiode zowel OldGen als NextGen actief
zouden zijn.
Het selectietraject, waarin ondermeer naar Open Source Java en .Net oplossingen werd gekeken,
resulteerde in een keuze voor Oracle's ADF framework. Om grotere productiviteit en een vlakkere
leercurve voor het ontwikkelteam te bewerkstelligen werd JHeadstart ingezet als extra
ontwikkelgereedschap. Ook werd de kracht van de database nadrukkelijk ingezet: bij gelijke geschiktheid
werden operaties met behulp van SQL en PL/SQL gerealiseerd in plaats van ten alle tijde Java in te
zetten.
Figuur: van oude architectuur naar de nieuwe NEXTGEN situatie
Connexys beoogde twee belangrijke doelstellingen met het NextGen project. Allereerst de ontwikkeling
van een applicatie die de leidende marktpositie zou herbevestigen en voor de toekomst zeker stellen.
Direct daaraan gekoppeld en voor het bestendigen van het succes net zo belangrijk de ontwikkeling van
de hele organisatie - van ontwikkelaar tot secretaresse was op een of andere manier bezig met of op zijn
minst bewust van NextGen - en ook de klanten die al in een vroeg stadium werden geïnformeerd over
het project en konden meedenken over de functionaliteit en het uiterlijk van de applicatie. Connexys
zocht een externe partij aan om de reis naar de toekomst te helpen plannen en daarna
achtereenvolgens als gids/reisleider, reisgenoot en uiteindelijk steunpunt te fungeren. Enthousiasme- en
kennisoverdracht leidend tot zelfstandigheid van de eigen medewerkers waren de sleutel voor succes.
Rijke functionaliteit De NextGen applicatie is aantrekkelijk en plezierig intuïtief om mee te werken. Klanten moeten vroeg in
salescycli in een oppervlakkige kennismaking geïnteresseerd raken. En vervolgens bij nadere
beschouwing en toetsing door kandidaat-eindgebruikers maar met name in het dagelijkse gebruik moet
de applicatie functioneel rijk zijn, taak- en procesgericht zodat gebruikers zonder steile leercurve of veel
zoeken doelgericht en productief hun werk kunnen doen. Rijke web-applicaties van verschillende
leveranciers zoals SalesForce.com inspireerden het ontwerp van NextGen.
De basis voor het ontwerp werd gevormd door een user interaction design - een consistente
beschrijving van de meest voorkomende acties en interacties in de applicaties met antwoorden op
vragen als: welke stappen zet een gebruiker, wat zijn de mogelijke keuzes op ieder punt in de applicatie,
welke informatie heeft de gebruiker nodig om een actie te initiëren. Dit ontwerp omvat de structuur van
applicatie-pagina's en de vaste interactie-gebieden - zoals tabs voor modules (1), broodkruimelspoor
voor de flow binnen een module (2), navigatie-historie voor (short-cuts naar) de recent bezochte
kandidaten, vacatures en contactpersonen (3), knoppenbalk voor transactie controle (Opslaan, Opslaan
& Specifieke vervolgactie en Annuleren) en navigatie door gegevensset (4) en het wellicht meest
opmerkelijke onderdeel: de relevante acties (5).
Figuur: de vaste interactie-gebieden in het NextGen interaction ontwerp
De applicatie kent geen globaal menu zoals we dat van oudsher in veel applicaties tegenkomen. In plaats
daarvan wordt in NextGen op iedere pagina in de 'Acties-box' een lijst van acties (hyperlinks) getoond
die op dit moment beschikbaar zijn. Op basis van de huidige pagina, de huidige gebruiker (rechten) en
het huidige record (status) wordt door de applicatie aan een PL/SQL gebaseerde workflow engine
gevraagd welke operaties beschikbaar zijn. Dit dynamische lijstje vormt voor gebruikers een heel
intuïtieve manier om snel de meest voor de hand liggende actie in het kader van een logisch
samenhangende workflow (die door de klanten zelf kan worden ingericht) uit te voeren.
Daarnaast wordt de look & feel - de stijl, kleursamenstelling, icoongebruik - vastgelegd in dit interaction
design.
Kenmerken van SaaS applicaties NextGen is een applicatie die wordt aangeboden via het SaaS model (Software as a Service). Dit model
kent een aantal karakteristieken en uitdagingen waarmee bij het ontwerp en de bouw nadrukkelijk
rekening moet worden gehouden.
Er is sprake van een 'single instance' van een standaard applicatie die door veel gebruikers binnen
meerdere (bij Connexys meer dan 150) klantorganisaties wordt gebruikt. SaaS applicaties draaien
binnen een centrale en centraal beheerde infrastructuur en zijn (nagenoeg) 24/7 beschikaar, zeker bij
internationaal gebruikte applicaties. De applicatie wordt aangeboden via een web browser. Het licentie-
model is gebaseerd op gebruik - zowel hoeveelheid gegevens en transacties (diepte) als de gebruikte
modules en afgenomen functionaliteit (breedte). Service Level Agreement leggen de gegarandeerde
dienstverlening vast - zoals beschikbaarheid en reactie-snelheid van de applicatie.
We bespreken twee specifieke aandachtspunten voor NextGen als gevolg van deze SaaS
karakteristieken:
klanten en eindgebruikers willen een applicatie die naadloos aansluit bij hun werkelijkheid; ze
willen weliswaar een standaardapplicatie uit oogpunt van ondermeer kostenoverwegingen,
beheerefficiency en toekomstzekerheid, maar ook een die voelt als 'eigen', bijvoorbeeld doordat
eigen terminologie wordt gehanteerd (kandidaat dan wel sollicitant dan wel reflectant,
belangstellende, gegadigde), het menu en de workflow naar eigen inzicht kunnen worden
ingericht en doordat validaties, bedrijfsregels, veld-verplichtheid naar eigen inzicht kunnen
worden gedefinieerd.
organisaties werken aan de integratie van hun systemen en applicaties, veelal op basis van
services en soms ook events; SaaS applicaties maken dan wel niet fysiek deel uit van het IT
landschap van de gebruikende organisatie, ze zijn logisch gezien volstrekt vergelijkbaar met de
applicaties die wel on-site beheerd worden -zowel standaard als maatwerk applicaties. De
integratie en service-gebaseerde ontsluiting betreft dus ook de SaaS applicaties.
Dynamische Aanpasbaarheid Voor klanten van de Connexys applicatie is de mogelijkheid om wat in essentie een standaard-applicatie
is - en zelfs een single, shared instance van die applicatie - aan de eigen wensen en omstandigheden aan
te passen een belangrijke eis. NextGen voorziet daarin op een aantal terreinen, zoals workflow-
configuratie, menu-inrichting, boilerplate tekst zoals prompts en error-teksten en flex-velden . Deze
hebben qua technische implementie een overeenkomst: meta-data voor de klant-specifieke
uitbreidingen/aanpassingen is vastgelegd in de database.
Java applicaties gebruiken meestal file-gebaseerde resource bundles waarin de teksten zoals prompt,
hint, titel, menulabel, domeinwaarden en foutboodschap zijn vastgelegd in mogelijk meerdere talen.
Deze teksten kunnen niet eenvoudig worden aangepast en wijzigingen vereisen een herstart van de
applicatie. De NextGen applicatie maakt gebruik van resource bundles die in de database worden
onderhouden, dynamisch kunnen worden aangepast en per klant overschreven kunnen worden.
Hiermee kunnen organisaties iedere schermtekst naar eigen inzicht aanpassen via een speciaal
beheerscherm in de applicatie.
Een andere geavanceerde voorziening in de NextGen applicatie biedt klanten de mogelijkheid om velden
uit te schakelen - onzichtbaar te maken voor gebruikers omdat ze geen relevantie hebben voor de
bedrijfsprocessen van die klant - of toe te voegen. NextGen bevat velden voor de meestvoorkomende
attributen van de business objecten. Veel klanten hebben niet de behoefte aan ál die eigenschappen -
en willen de schermen versimpelen door de overtollige standaard-elementen uit te schakelen - en
sommige klanten hebben behoefte aan aanvullende attributen voor specifieke aspecten in hun eigen
manier van werken. Beide wensen worden door de applicatie ondersteund via voor de
applicatiebeheerder van een klant zelf toegankelijke beheerschermen binnen de applicatie.
Figuur: dynamisch applicatiebeheer - bewerken, verbergen en toevoegen van velden
Het gebruik van JavaServer Faces (ADF Faces) voor de user interface maakt het betrekkelijk eenvoudig
om op dynamische wijze, gestuurd door meta-data in de database, velden weg te laten dan wel toe te
voegen. Vrijwel alle eigenschappen van schermelementen kunnen in JSF met dynamisch geëvalueerde
EL expressies worden gedefinieerd, zoals bijvoorbeeld:
<af:inputText id="NationaliteitKandidaat"
rendered="#{klantContext['kandidaat_nationaliteit'].enabled}" />
Wolk-waardige Integratie Een SaaS applicatie moet kunnen integreren met ondermeer de Enterprise Service Bus van haar
gebruikers - door het aanbieden van een WebService API die dezelfde operaties ondersteunt als de User
Interface en door het consumeren en publiceren van business events. En bijvoorbeeld ook door de
mogelijkheid te bieden aan klanten om services te registreren bij de SaaS applicatie die kunnen worden
aangeroepen voor het uitvoeren van ondersteunende acties zoals het versturen van emails, het
uitvoeren van complexe, klantspecifieke validaties of het in batch uitprinten van rapportages of brieven.
Figuur: SOA across the cloud - integratie tussen de SaaS applicatie en de klant-omgeving
De figuur laat zien hoe de SaaS klant verschillende diensten kan 'injecteren' in de SaaS applicatie om te
bijvoorbeeld te verzekeren dat haar eigen email en fax voorzieningen worden benut voor de
communicatie met kandidaten en zakelijke partners. Daarnaast publiceren de SaaS applicaties business
events - zoals nieuwe kandidaat is vastgelegd of kandidaat heeft een aanbieding geaccepteerd, die door
de systemen van de klant kunnen worden opgepikt. Daartoe kunnen listeners (web services)
geregistreerd worden bij de SaaS applicatie die zullen worden aangeroepen als het event zich voordoet.
Andersom kan ook de SaaS applicatie listeners bevatten voor events die door de klant gemeld kunnen
worden - bijvoorbeeld onmiddellijke vacature stop.
Andere faciliteiten zijn meer op de integratie van user interfaces gericht. Gebruikers van de NextGen
applicatie maken ook gebruik van andere applicaties. Idealiter kan een gebruiker van de ene applicatie
rechtstreeks navigeren naar de andere: deeplink navigatie die de gebruiker naar de juiste context
brengt van relevant scherm en het juiste record. Zulke navigatie zou ook uit workflow-systemen en
todo-takenlijstjes van de SaaS klanten kunnen plaatsvinden.
Ook front-end integratie, bijvoorbeeld door integratie van de SaaS applicatie in het intranet (portaal)
van de SaaS afnemen is veelal gewenst. Daartoe kan de SaaS leverancier overwegen onderdelen van de
applicatie als Portlets aan te bieden die op deze manier geabsorbeerd en visueel geïntegreerd kunnen
worden.
Conclusies Connexys heeft haar doelen gerealiseerd: het marktaandeel stijgt weer. Het klantverloop is gestopt, een
hoog percentage van sales-cycli wordt gewonnen en eerdere weggelopen klanten komen zelfs weer
terug. De klanttevredenheid is gestegen tot ruim boven de scherp gestelde doelen en de
implementatietrajecten duren kort: het up & running krijgen van nieuwe klanten vergt slechts een paar
dagen, zelfs als er klantspecifieke aanpassingen moeten worden gerealiseerd. Het ontwikkel- en
beheerteam is inmiddels volledig zelfstandig bezig met de technologie en de analisten en implementatie
consultants maken gretig gebruik van alle mogelijkheden die de nieuwe technologie en applicatie-
voorzieningen hen bieden om nieuwe functionaliteit te specificeren.
De reis is niet een eenvoudige geweest - een kleine twee jaar tussen eerste gedachtevorming en
overzetten van de laatste klanten, een forse investering, een aantal teleurstellingen gaandeweg het
traject - maar blijkt nu wel de moeite waard geweest. Overigens beschouwt Connexys de huidige siuatie
zeker niet als eindpunt maar als tussenstation in een voortdurende reis op weg naar een mooiere
toekomst.
Meer informatie over Connexys, het NextGen project en de samenwerking met AMIS kan je navragen bij
[email protected] en vinden via http://www.connexys.eu. De presentatie op OBUG die de aanleiding
vormt voor dit artikel kan je terugzien op: http://www.slideshare.net/lucasjellema.