Oplage 15.000 | 3e jaargang | nummer 2 | 2008
Abonneer nu gratis www.weloveit.nl/abonneren
orl d? ch ter zijd e
POWERED BY 5HART
Ga jij Op Or mee en acl naa zie e r: a W
Magazine voor en door Oracle & Java gebruikers en ontwikkelaars
www.weloveit.nl
inhoud
Qualogy Tooling voor het implementeren en beheren van Oracle e-Business Suite!
Nieuws - Backbase - Oracle Identity Management Software - Oracle Clusterware - Oracle koopt testsoftware - GX WebManager
10-13
Rulegen The never ending story of business rules.
7-9
23-27 ITcommercie De toekomst van CRM.
20-21 In the spotlight Business Intelligence
37
1 62 53 4
Column Pieter Rambags Datawarehouses kostbaar?
5
Charta software Terug naar SQL krassen.
28-31
Column Maarten Schneider Hoe vaak feest jij als ontwikkelaar?
36 Capgemini Tien dingen die je altijd wilde weten over Java, maar niet durfde te vragen.
14-19 Caesar Groep Designer2APEX: sneller migreren.
32-35
VOORWOORD Innovatie terug: let’s Rock ‘n Roll! De huidige IT markt is nu niet zo sexy als zeg 50 jaar geleden. Voor velen onder ons is deze periode als herinnering slechts op te halen door naar oude Amerikaanse sleeën te kijken of in een verdwaalde jukebox een onvervalst Rock ’n Roll nummer op te zetten. De cover van deze We Love IT is niet voor niets gekozen: een auto met een staartstuk alsof het een straaljager is. Over durf en buiten de vertrouwde paden treden gesproken! Natuurlijk heeft er sindsdien een aantal baanbrekende ontwikkelingen de revue gepasseerd. Maar Elvis Presley en consorten zijn reeds lang niet meer geëvenaard, laat staan verbeterd. Het kan een kwestie van smaak zijn, maar deze metafoor is moeiteloos te kopiëren naar de Nederlandse IT markt. Anno 2008 is er namelijk weinig spannends aan de hand.
In deze editie van We Love IT daarom een aantal artikelen die minstens een lichte vibe bij lezers moet veroorzaken. Allereerst is daar Toon Koppelaars van RuleGen die een opzwepend verhaal neerzet waarmee menig Oracle specialist direct naar de Wurlitzer zal doen stappen. Zijn artikel geeft u inzicht in “The never ending story of business rules”. Immers, elk informatiesysteem kent dit fenomeen.
Tools, merken, technieken. In de 21e eeuw zijn populaire namen uit de fifties en sixties haast een gewoonte. Als codenaam voor Java release Java SE 6 (weinig opwindend trouwens!) is de zestigerjaren gedreven naam Mustang gekozen. Deze auto was en is nog steeds het beeld van de snelle en stoere open wagen die ineens voor iedereen bereikbaar werd. De mascotte van Java heet Duke (Hertog). De toekomst lag voor het grijpen in de fifties! Dit zag je terug in merknamen. Niet voor niets stond de lancering van de eerste Amerikaanse kunstmaan bekend als explorer. Ontdek wat mogelijk is; machtig!
De jive met Java? Doen! Ken alle stapen, en lees hier meer over in het stuk van Marc Hartogs van Capgemini. Hij behandelt het, en staat stil bij tenminste tien kenmerken die je perse wilt weten over Java. One, two three o’clock, four o’clock Rock!
Het gevoel te pakken gekregen? Doe ‘us more Rock-'n-roll! Pieter Rambags van Nippur Jive’d u in zijn column naar voren. Hij legt u als geen ander uit waarom een simpel rapportje nou toch zo lang op zich laten wachten? Leon de Werker heeft een tool voor het implementeren en beheren van de Oracle e-Business Suite. De tool is intuïtief en is opgebouwd rondom de terminologie die Oracle e-Business Suite eigen is. Kijk, daar zou 'The Fons' van Happy Days (wie kent hem nog?) blij mee zijn!
Caesar heerst in deze uitgave over APEX. ITcommercie interviewde Anthony Lye van Oracle inzake de toekomst van CRM. Het software bedrijf Charta Software gaat Back to the Base (was de bas niet HET instrument bij veel Rock ’n Roll bandjes?) door SQL in Java te integreren. Maarten Schneider viert feest! Mijn tip: gebruik deze metafoor en wees innovatief en net zo baanbrekend met ontwikkelingen als in de vijftiger jaren.
The fifties are back again, and We love IT!
Tom van Luijk
[email protected]
A R T I K E L GC AOM L UI N MG N
'Een goed datawarehouse bestaat uit een aantal lagen die zich dienen te conformeren aan specifieke spelregels'
PIETER RAMBAGS
Datawarehouses kostbaar?
Nog steeds verbaas ik mij erover dat vele IT consultancy bedrijven vandaag de dag maanden- en soms jarenlang kunnen werken aan datawarehouse oplossingen voor hun klanten. Met het handje, wel te verstaan! Ja, we kennen allemaal keurig de Kimballiaanse en Inmoniaanse visies op dit mooie vakgebied. Maar daar blijft het dan wel zo’n beetje bij waar het vernieuwing betreft. En de klant maar wachten. Hoe kan zo’n simpel rapportje nou toch zo lang op zich laten wachten? En waarom kost dat rapportje zoveel geld? Een goed datawarehouse bestaat uit een aantal lagen die zich dienen te conformeren aan specifieke spelregels. In deze column voert het te ver om dat nader uit te werken, ook daar weten we als dienstverleners het nodige over te melden, getuige de discussies die we regelmatig met elkaar voeren. Wat maakt het aanleggen van zo’n datawarehouse dan zo kostbaar? Het antwoord daarop is vrij simpel. Dat wordt veroorzaakt, doordat allerlei organisatiespecifieke zaken in het datawarehouse worden gemodelleerd waardoor ieder datawarehouse als het ware klantspecifiek is, maatwerk. Té klantspecifiek, want naast een ontwerp- en implementatie probleem wordt dan ook en passant nog een beheersprobleem geïntroduceerd. De IT consultancy bedrijven willen verder. Op naar de volgende uitdagende klus. De klant moet op zoek naar iemand die het beheer van het maatwerk datawarehouse voor zijn of haar rekening neemt. En dat is niet eenvoudig. Zeker niet gezien de schaarste op de markt van goed BI personeel. Dat betekent dus dat we onze klanten moeten helpen niet met maatwerk software, maar met datawarehouse management systemen. Applicaties die implementatie en beheer van het datawarehouse regelen, waardoor het ook voor minder technisch onderlegde mensen mogelijk wordt voortschrijdend inzicht en nieuwe klantwensen te implementeren snel en dus efficiënt. Nu zijn er al geruime tijd van dit soort systemen op de markt. Echter al deze systemen worden door de leveranciers dermate fors geprijsd dat ze alleen weggelegd lijken te zijn voor de happy few. De grote multinationale ondernemingen die dit soort
bedragen wel kunnen neertellen voor hun enterprise datawarehouse omgevingen. Het is dan ook goed te weten dat er mensen zijn die nadenken over generieke datawarehouse architectuurconcepten en bijbehorende datamodellen. Een voorbeeld hiervan is Data Vault, van Dan Linstedt. Dit concept is dermate generiek dat het de moeite loont daar een toolkit omheen te ontwerpen die de generatie van de verschillende datawarehouse lagen met bijbehorende process instructies voor zijn rekening neemt. Verder mag gezegd worden dat Data Vault een aantal tekortkomingen van genoemde visies tracht op te lossen. Het mag gezien worden als een hybride benadering, welke genormaliseerd modelleren en dimensionaal modelleren combineert. Dit maakt het ontwerp snel implementeerbaar, enorm schaalbaar, eenvoudig uitbreidbaar en dus uitermate geschikt voor zich wijzigende klantwensen. Een nadeel echter van Data Vault is wel dat de onderliggende datamodellen snel erg groot kunnen worden en het model niet echt ‘herkenbaar’ is door het consequentie gebruik van slechts 3 typen tabellen, te weten de hub-, link- en satelliettabellen. Maar goed. Dat dient opgevangen te worden door een en ander te automatiseren. Ergo: er een datawarehouse management systeem van te maken. Een aantal klanten heeft hier al goede ervaringen mee opgedaan. Het betreft dan met name een tweetal banken, een hypotheekverstrekker, een zorginstelling en een leverancier van consumenten badkamer artikelen. Inmiddels is ook duidelijk geworden dat de belastingdienst een datawarehouse op dit concept zal baseren. De toekomst zal leren of het enthousiasme van deze organisaties aanstekelijk werkt en Nederland dit concept zal omarmen. Drs. Pieter Rambags, managing partner van (www.)nippur(.nl)
5 9
!# # !
! &#"$#!"# !
#
!%! ! !
!!!"$ #
!!"!# !
#! !
NIEUWS
BACKBASE
Enterprise Ajax 4.2 met 'Keuze' aan Ontwikkelaars Verhoogt de productiviteit door keuze van technologie en methodologie voor Ajax ontwikkeling The Ajax CompanyTM, introduceert Enterprise Ajax 4.2, een nieuwe versie van het toonaangevende Ajax framework. Deze nieuwe introductie geeft softwareontwikkelaars meer keuze dan welk ander Ajax framework dan ook. Die vrijheid in keuze leidt tot ongeëvenaarde productiviteit, omdat Ajax-ontwikkelaars hun eigen voorkeuren voor technologie en methodologie kunnen kiezen. In tegenstelling tot de meeste andere Ajax-oplossingen ondersteunt het nieuwe Enterprise Ajax framework meerdere ontwikkelingstechnologieën en -methodologieën: ontwikkelaars kunnen kiezen tussen uitgebreide en lichtgewicht Ajax-functionaliteit, tussen CSS en XPath, tussen JavaScript en tag-based ontwikkeling, tussen JSON en XML, tussen eigen widgets en widgets van derden en tussen online- en offline-RIA’s. Naast de introductie van deze keuze van methodologie, kent deze versie nog een aantal andere verbeteringen, waaronder:
ORACLE
Identity Management Software verbetert beveiliging Oracle Identity Management Software verbetert beveiliging over verschillende besturingssystemen Oracle introduceert Oracle Authentication Services for Operating Systems. Deze nieuwe functionaliteit van Oracle Identity Management centraliseert gebruikersbeheer en de authenticatie binnen Linux- en Unix-omgevingen. Daarmee wordt ook het beveiliging- en compliancy-beleid tussen beide systemen verbeterd.
s .IEUWE HIÔRARCHISCHE DATA BINDING s .IEUWE $ATA 3ERVICES MODULE /NDERSTEUNING VOOR HET transparant inzetten van Ajax s .IEUWE EN VERBETERDE WIDGETS s 6ERBETERDE PRESTATIES Een meer gedetailleerde lijst van de eigenschappen van Enterprise Ajax 4.2 is te vinden op: bdn.backbase.com/4.2/ client/whatsnew. Bron: Franssen Communicatie
ORACLE
Clusterware gratis voor klanten Oracle Unbreakable Linux Support Oracle Clusterware is nu gratis beschikbaar voor alle klanten met een support-contract voor Oracle Unbreakable Linux. Voor klanten met een basic of premier support-contract is de software gratis te downloaden. Ook worden er geen extra kosten in rekening gebracht voor technische ondersteuning. Oracle Clusterware is portable cluster software waarmee individuele servers gegroepeerd worden en samenwerken als een enkele server. De oplossing is onderdeel van Oracle Real Application Clusters en kan losstaand ingezet worden. Het garandeert de bescherming van applicaties van Oracle en derden. Daarnaast zorgt Oracle Clusterware voor hoge beschikbaarheid van applicaties en databases die beheerd worden in een cluster-omgeving, waaronder Oracle Single Instance Databases, Oracle Application Servers, Oracle Enterprise Manager components, databases van derde partijen en andere applicaties. Bron: WhizPR
Met Oracle Authentication Services for Operation Systems is het niet langer nodig om gebruiksrechten en toegangverlening zowel op de Linux- als de Unix-server te beheren. IT-managers kunnen informatie uit beide besturingssystemen centraliseren, terwijl gebruikers maar een keer hoeven in te loggen voor toegang tot alle applicaties via beide servers (single sign-on). Bron: WhizPR
Vo o r d a ge l i j k s n i e u w s s u r f n a a r : w w w. we l o v e i t . n l . A l l e o n t w i k k e l i n ge n o p e e n r i j !
7
NIEUWS
GX
GX WebManager platform als gratis Community Edition GX richt zich als eerste leverancier van webcontentmanagement op open Java ontwikkeling NGX WebManager is nu gratis beschikbaar als Community Edition. GX is de eerste leverancier van webcontentmanagement in de Java-wereld met een strategie die gericht is op open development. Met de lancering van GX WebManager Community Edition krijgen ontwikkelaars kosteloos de beschikking over het volledige webcontentmanagement-platform en een software development kit. Martijn van Berkum, CTO van GX: “GX WebManager Community Edition maakt het gemakkelijk ons product functioneel uit te breiden met behulp van populaire technologieën en ontwikkeltools. Java-ontwikkelaars halen persoonlijk voordeel uit het werken met deze software omdat ze te maken krijgen met een zeer innovatieve combinatie van frameworks, open standaarden en nieuwe technologie binnen de context van een platform voor webcontentmanagement.” GX WebManager is gebaseerd op een J2EE-architectuur en maakt gebruik van open technologieën zoals Spring, JCR (JSR-170) and OSGi. Het is speciaal ontwikkeld om sneller te kunnen inspelen op de voortdurend veranderende eisen die aan het online kanaal worden gesteld door ontwikkelingen op het gebied van IT, marketing en e-business. Organisaties die optimaal willen profiteren van alle mogelijkheden die het internet biedt, moeten snel in kunnen spelen op nieuwe trends. GX ziet in dat deze doelstellingen alleen haalbaar zijn met behulp van een wereldwijde, open community van getalenteerde Java-ontwikkelaars.
ORACLE
koopt testsoftware van Empirix Testsoftware voor webapplicaties aanvulling op Oracle Enterprise Manager Oracle heeft de e-TEST suite overgenomen van Empirix, leverancier van oplossingen voor het testen en monitoren van spraak- en webapplicaties. Empirix' e-TEST suite helpt klanten hoogwaardige (web-)applicaties sneller in te zetten, en tegen lagere kosten. De e-TEST suite wordt onderdeel van Oracle Enterprise Manager en Oracle Real Application Testing. De combinatie zorgt voor één complete omgeving voor het testen van zowel standaard- als maatwerkapplicaties.
GX WebManager Community Edition wordt ondersteund door een wereldwijd netwerk van ontwikkelaars via het GX DeveloperWeb. Deze website biedt documentatie, software downloads, forums, issue tracking, een wiki, weblogs en andere waardevolle informatie. Nieuwe componenten voor GX WebManager zijn ‘runtime’ toe te voegen aan bestaande systemen en kunnen gedeeld worden met de community via een online marktplaats.
"Testen wordt steeds belangrijker in de race naar snellere en goedkopere inzet van kwalitatief hoogwaardiger applicaties. Klanten zijn op zoek naar geautomatiseerde oplossingen om kostbare performanceproblemen te omzeilen, downtime te verminderen en handmatig testen te vermijden”, aldus Leng Leng Tan, Oracle Vice President, Applications and Systems Management. "De combinatie van Empirix' e-TEST suite met Oracle Enterprise Manager zorgt voor een best-of-breed systems management portfolio, die de gehele applicatiecyclus omvat, van ontwikkeling en testen tot en met productie en beheer.”
Bron: GX
Bron: WhizPR
Vo o r d a g e l i j k s n i e u w s s u r f n a a r : w w w. we l o v e i t . n l . A l l e o n t w i k k e l i n g e n o p e e n r i j !
9
10
WE LOVE IT
Mei 2008
QUALOGY APPLICATIONS
Tooling voor het implementeren en beheren van Oracle e-Business Suite! Door Ir. L.W. de Werker
Een Oracle e-Business Suite systeem bevat vele parameters, opties en keuzelijsten die moeten worden gevuld voordat het systeem werkt zoals de gebruikers het zouden willen. Tijdens de implementatie zullen vele discussies worden gevoerd tussen implementatiespecialisten en gebruikers over de te kiezen werkmethodes. Uiteindelijk zullen de gemaakte keuzes moeten worden vertaald in te kiezen opties in Oracle e-Business Suite. Iedere implementatiespecialist weet dat er diverse schermen zijn waar die opties moeten worden vastgelegd. Zo heb je alleen al voor de module Accounts Receivable meer dan 40 schermen waarin je opties moeten kiezen, bijvoorbeeld voor betaaltermijnen, transactietypes, goedkeuringslimieten, bankgegevens, belastinggegevens en systeemopties. Zie afbeelding 1 voor een voorbeeld van een van de vele inrichtingsschermen.
Inrichtingsgegevens documenteren Een ervaren inrichtingsspecialist weet zijn weg wel te vinden in al deze schermen. Bovendien heeft
een dergelijke specialist houvast aan de implementatiehandboeken waarin stap voor stap staat beschreven hoe je de inrichting zou moeten doen om tot een werkend systeem te komen. Een heel belangrijk onderdeel van een e-Business Suite implementatie is het schriftelijk vastleggen van alle gemaakte keuzes. Tijdens de implementatie wordt er dan ook altijd veel aandacht besteed aan het documenteren van de inrichting. Op het moment van oplevering van het ingerichte systeem zal de documentatie in de meeste gevallen een redelijk nauwkeurige afspiegeling zijn van de werkelijke inrichting zoals die is terug te vinden in het opgeleverde systeem.
In de praktijk zie je gebeuren dat in de maanden en jaren na de oplevering een steeds grotere discrepantie ontstaat tussen de inrichtingskeuzes die terug te vinden zijn in de documentatie en de werkelijke inrichting zoals die aanwezig is in de productieomgeving. Hiervoor zijn diverse redenen aan te wijzen. Het exact bijhouden in de documentatie van de aanpassingen die zijn gedaan in het productiesysteem, is een secure taak die een bijna onmenselijke zelfdiscipline vereist. Daarbij komt dat iemand zich makkelijk vergist en niet alle wijzigingen in de productieomgeving op alle plekken in de documentatie aanpast. Een andere reden is dat mensen een
ORACLE E-BUSINESS SUITE TOOLING
Afbeelding 1
wel graag inzichtelijk willen hebben hoe (onderdelen van) de inrichting er uitzien.
Wijzigingen bestuderen
foutje kunnen maken. Er zijn veel inrichtingskeuzes en een typefout in het systeem of in de documentatie is makkelijk gemaakt. Qualogy Applications heeft drie jaar geleden een product in de Nederlandse markt gezet dat kan helpen om de documentatie van een Oracle e-Business Suite omgeving op eenvoudige wijze actueel te houden. Dit product heet ConfigSnapshot en is ontwikkeld door een Brits bedrijf genaamd CompelSysoa. ConfigSnapshot biedt de functionaliteit om inrichtingsgegevens uit een omgeving te extraheren zonder dat de Oracle e-Business Suite applicatie zelf hoeft te worden gestart. Deze tool maakt het mogelijk om per module met een druk op de knop de inrichtingsgegevens uit de e-Business Suite op te halen. In afbeelding 2 bevindt zich een voorbeeld van enkele regels van een extractie uit de module Oracle Accounts Payable die met ConfigSnapshot is gemaakt. Alle actuele inrichtingsgegevens staan in een eenvoudig toegankelijk overzicht bij elkaar. Waar een beheerder gewoonlijk door diverse inrichtingsschermen moet gaan om te achterhalen hoe de inrichting er precies uitziet, kan hij door gebruik te maken van ConfigSnapshot dergelijke gegevens snel inzichtelijk hebben. Bovendien is een organisatie in staat om inrichtingsgegevens te ontsluiten naar gebruikers en afdelingen die normaal geen toegang hebben tot de inrichtings-schermen van de Oracle e-Business Suite, terwijl deze gebruikers
Een gebruiker of beheerder van een Oracle e-Business Suite systeem wordt helaas regelmatig geconfronteerd met bugfixes en patches die moeten worden geïnstalleerd op een e-Business Suite omgeving. Na het draaien van de patch worden de getroffen componenten getest en als alles goed lijkt te gaan wordt de patch op de productieomgeving gedraaid. Er ontstaat dan soms een situatie waarin een niet getest onderdeel van de applicatie niet meer functioneert zoals voor het draaien van de patch. Op zo een moment start dan een analyse die onder grote druk moet worden uitgevoerd, aangezien een ongewenste situatie op een productieomgeving zo snel als mogelijk moet worden verholpen. Het is echter soms zoeken naar een speld in een hooiberg, waarbij de beheerder voor lange tijd uiterst geconcentreerd te werk moet gaan, aangezien een kleine wijziging makkelijk over het hoofd wordt gezien.
ConfigSnapshot biedt de mogelijkheid om de inrichting van de omgeving voor en na het draaien van de patch met elkaar te vergelijken. Zo krijgt men in één overzicht te zien wat alle wijzigingen in de inrichting zijn geweest die door de patch zijn doorgevoerd. Met zo een overzicht kan de beheerder gericht zoeken naar de oorzaak van de verstoring en dat scheelt veel uitzoekwerk. Afbeelding 3
Het is tevens mogelijk om slechts een onderdeel van de inrichtingsgegevens op te halen zodat nog meer gericht kan worden gezocht. Zie ook afbeelding 3. Zo kunnen die onderdelen van de inrichting naar voren worden gehaald, die betrekking hebben op wijziging vanaf een bepaalde datum of wijzigingen uitgevoerd door een bepaalde gebruiker. Voor bedrijven die rekening dienen te houden met de Amerikaanse Sarbanes Oxley regelgeving is dit bijna een vereiste.
Omgevingen vergelijken Afbeelding 2
Tijdens het implementeren van Oracle e-Business Suite is een van de uitdagingen het synchroon houden van de diverse omgevingen die tijdens de implementatie worden gebruikt, zoals ontwikkelomgeving, gebruikers acceptatieomgeving en toekomstige productieomgeving. In veel gevallen blijft het inrichten van een omgeving een manuele taak, waarbij fouten kunnen worden gemaakt. Door ConfigSnapshot kunnen verschillen tussen omgevingen snel inzichtelijk worden gemaakt, waarna eventuele (type)fouten kunnen worden hersteld. ConfigSnapshot maakt het mogelijk om e-Business Suite omgevingen met >
11
" $$ $(&'(%%$" !"%&"$()' ))%)/')51'%'##' 0+()%%#) $!"'+%%')2*$/')51'%'##'0+2/013#$ $%$ '+'$#)-+"+'&'%'##')" %!$!*$ $#"$+%%')%&"$( )' ).+%%'!$$(($#" !$)$% )%&"$()' ),%')("%)$#)$!"((!""3#$)'$$-%) %&)#" +%%''$ 3#$$)$!$() '+%%'$ %&"$ (")( (%,(%" -%$'%%$-%$)$$$#" ! '$"$&'!) !'+'$$!$$$ &'%'##')"'%%'+$$$$$+$*)$
$$'0+ %*%&)" ('+$((' $')$
&&
"! #
$% "
ORACLE E-BUSINESS SUITE TOOLING
13
Qualogy Applications
Qualogy Applications Vervolg
verschillende versies (b.v. versie 11.5.10.2 en versie 12.04) met elkaar te vergelijken. Zo kunnen omgevingen voor en na migratie naast elkaar worden gezet, zodat meteen helder is waar de verschillen zitten. ConfigSnapshot biedt ondersteuning voor de volgende versies van Oracle e-Business Suite: 11.0x, 11.5.x en 12.x.
Gebruikerservaringen In Nederland zijn er diverse bedrijven die ConfigSnapshot hebben aangeschaft. Een van die bedrijven is @Home. De heer ing. S. Veldhuis van de afdeling Technical Operations Enterprise Management, vertelt over zijn ervaringen: s h7E GEBRUIKEN HET TOOL OM OP eenvoudige wijze onze set-up documentatie actueel te houden. De set-up documentatie wordt door ons geëxtraheerd en op een centrale plek online gezet, zodat bevoegde personen de documentatie kunnen inzien.” s h)N EEN VAN ONZE BELANGRIJKSTE processen maken we gebruik van Dunning sets. Op de inhoud van de Dunning letters vinden regelmatig aanpassingen plaats. Wij gebruiken ConfigSnapshot om de actuele teksten uit de e-Business Suite te halen. Vervolgens stellen wij deze beschikbaar aan de gebruikersorganisatie zodat zij kunnen aangeven welke onderdelen moeten worden aangepast. Deze wijzigingen passen wij toe op de productieomgeving, waarna we terugkoppelen naar de gebruikers organisatie wat door ons is aangepast in de productieomgeving. Waar we normaal een dag nodig hadden om zo’n verandering goed door te voeren, zijn we nu in 1 uur klaar.” s h%EN TIJD GELEDEN HEBBEN WE EEN rebranding doorgevoerd van Essent Kabelcom naar @Home. We hebben
met ConfigSnapshot een uitdraai gemaakt van alle (maatwerk) Alerts, waarna we een complete lijst hadden van alle aan te passen emailadressen in Oracle e-Business Suite. Na het doorvoeren van de verandering hebben we deze lijst nogmaals gedraaid om te zien of we niet per ongeluk een e-mail adres vergeten hadden.”
s h7E GEBRUIKEN #ONlG3NAPSHOT om overzichten uit te draaien van Gebruikers en hun Autorisaties. Wat wij gewoonlijk met de hand en enkele scripts deden, wordt nu automatisch voor ons gedaan.”
Beperkingen en potentiële verbeteringen ConfigSnapshot is niet zaligmakend. Je kunt er je set-up mee documenteren en analyseren. Er zijn een paar tekortkomingen die de moeite van het vermelden waard zijn. Zo kun je geen set-up inladen in een schone omgeving. Hier wordt vaak om gevraagd, en het zal iedereen duidelijk zijn waarom. Het inladen van een set-up is echter niet mogelijk. ConfigSnapshot is een cliënt/ server tool, dat wil zeggen dat je de software op iedere PC afzonderlijk moet installeren. Er zijn wel plannen voor een Java versie van het product maar dit zal nog wel even op zich laten wachten. Tevens is het niet mogelijk om extracties van de set-up in te plannen zodat je ze ’s nachts kunt laten draaien om ze vervolgens de volgende dag te gebruiken. Dit is soms handig aan gezien bepaalde extracties best veel tijd vergen in grote productieomgevingen. Gelukkig is de tool niet belastend voor de PC of de server en kun je het gewoon op de achtergrond zijn werk laten doen, terwijl je zelf verder gaat met andere werkzaamheden.
Voordelen op een rij Er zijn diverse redenen voor organisaties om met een tool als ConfigSnapshot aan de slag te gaan. Deze redenen zijn onder andere:
s 'ROTERE "ETROUWBAARHEID ConfigSnapshot maakt de inrichtingsdocumentatie betrouwbaar. De inrichtingsgegevens kunnen immers direct uit de database worden gelezen, zodat de inrichtingsdocumentatie altijd één-op-één loopt met de situatie in de productieomgeving. s 3NELLERE !NALYSES ConfigSnapshot geeft snel inzicht in de inrichting van e-Business Suite omgevingen. Inrichtingsgegevens van 2 omgevingen staan in twee overzichtelijke kolommen naast elkaar. ConfigSnapshot biedt zelfs de mogelijkheid om alleen de verschillen tussen omgevingen naar voren te halen, waardoor de oorzaak van een probleem in één keer inzichtelijk kan worden gemaakt. s ,AGERE IMPLEMENTATIEKOSTEN Een belangrijk onderdeel van de implementatie, namelijk het vastleggen van de inrichting door middel van documentatie, zal met veel minder inspanning gepaard gaan. Nadat de implementatie is afgerond kan de inrichtingsdocumentatie eenvoudigweg worden gegenereerd.
s ,AGERE BEHEERKOSTEN Problemen in de productieomgeving zijn sneller te achterhalen, doordat de inrichtingsgegevens snel boven tafel te halen zijn. Een applicatiebeheerder kan zodoende meer issues afhandelen op een dag. Tevens zijn verschillen tussen omgevingen snel inzichtelijk te maken, waardoor eventuele vergissingen sneller te verhelpen zijn. Bovendien is ConfigSnapshot eenvoudig in gebruik. De tool is intuïtief en is opgebouwd rondom de terminologie die Oracle e-Business Suite eigen is. )R ,7 DE 7ERKER 1UALOGY Applications B.V.
[email protected] www.qualogy.com
14
WE LOVE IT
Mei 2008
CAPGEMINI/JAVA
Java zit vol prachtige technieken, maar het is lastig om ze allemaal paraat te hebben. Waarschijnlijk heeft elke Java-programmeur, hoe ervaren ook, wel onderwerpen die hij of zij niet helemaal scherp op het netvlies heeft. Dat is jammer, omdat krachtige oplossingen daarom soms onterecht vermeden worden, of verkeerd toegepast worden. Dit artikel wil het inzicht in tien onderwerpen vergroten, opdat elke ontwikkelaar er zonder reserves mee aan de slag kan. Aan de hand van compacte, volledige voorbeelden en hun uitvoer worden deze onderwerpen uitgelegd, waarbij de nadruk wordt gelegd op de betekenis van bepaalde begrippen. De voorbeelden zijn getest op Java 6.
Tien dingen die je altijd wilde weten over Java, maar niet durfde te vragen. Door Marc Marc aarrc Hartogs H Harto arto Listing: Overriding
1
Uitvoer: Schuldig. Schuldig. 100 EURO boete. Schuldig. Hoger beroep: Vrijspraak. Geen 100 EURO boete. Iedereen gebruikt wel overriding en overloading, maar hoe zit het nu precies met instance variabelen, zichtbaarheid en exceptions? En is een classhiërarchie altijd wel zo’n logische afbeelding van de werkelijkheid? Een Raadsheer is een bijzondere vorm van Rechter, namelijk een rechter bij een Gerechtshof of Hoge Raad. Zo’n rechter kan een uitspraak doen in hoger beroep. In het voorbeeld is Raadsheer een subclass van Rechter, en er zijn twee variabelen, beide van type Rechter: r1 en r2. De eerste krijgt een object van class Rechter, de tweede van class Raadsheer. Aan de uitvoer kan je zien dat over-
riding alleen werkt op methodes. Bij instance variabelen werkt overriding niet (vonnis) maar overerving wel (straf). En je ziet dat een methode wel weer een variabele gebruikt die bij zijn eigen class hoort als die er is (vonnis). De compiler controleert op de zichtbaarheid van een methode (public,
private etc.) en of de exceptions die een methode gooit allemaal afgehandeld worden. De compiler kijkt daarvoor naar het type van de variabele, en kan niet zien dat deze tijdens runtime verwijst naar een subclass object. Toch moet er de zekerheid zijn dat de subclass ook voldoet. De overriding methodes van de subclass mogen daarom niet een beperktere zichtbaarheid hebben, en mogen niet meer exceptions gooien. To override betekent terzijde schuiven, opheffen, en dat houdt bijvoorbeeld in dat de ene uitspraak een andere vervangt en ongeldig maakt, zoals ook in het voorbeeld. Bij overloading daarentegen wordt niets ongeldig gemaakt, er wordt slechts een naam dubbel gebruikt. Je kan het lezen als method name overloading. Dit voorbeeld illustreert ook dat een class-hiërarchie (superclass staat boven subclass) omgekeerd kan zijn aan de hiërarchie in de werkelijkheid: een subclass is een verbijzondering,
JAVA
waardoor het een “hogere” variant van de superclass is, met grotere verantwoordelijkheid. Zo zou een superintendant een subclass van een intendant zijn...
Listing Protected: library/Pro, myapp/Sub, myapp/App
2
Uitvoer: In Pro, method()... in helper(). In Sub, myMethod()... in helper(). Het ging net al even over zichtbaarheid. Een bijzonder geval is protected. Waar dient deze nou eigenlijk voor? Een van de meest logische toepassingen van protected is: voor gegevens of hulpmethoden die je binnen een eigen class gebruikt, maar waarvan je verwacht dat een subclass in een andere package die ook zou willen gebruiken. In het voorbeeld heeft een library class een helper() methode die wel door een subclass aangeroepen kan worden, maar niet direct via een instantie van die subclass zichtbaar is. Hetzelfde geldt voor de constante PI.
Listing: Threads
3
Uitvoer: Count 1 10 Count 1 9 Count 1 8 Count 2 10 Count 2 9 Count 2 8 Yield 1 10 Yield 2 10 Yield 3 10 Yield 1 9 Yield 2 9 Yield 3 9 Yield 1 8 Yield 2 8 Yield 3 8 Count 3 10 Count 3 9 Count 3 8
Threads worden vaak ervaren als moeilijk te begrijpen. De reden is waarschijnlijk dat er een kleine gedachtensprong nodig is: de code van
een applicatie wordt niet “zomaar” uitgevoerd, het zijn allemaal opdrachten aan een thread. Een thread rijgt zich een weg door de code, en voert de instructies uit die hij onderweg tegenkomt, zoals het creëren van een nieuw object, of het aanroepen van een methode op dat object. Letterlijk betekent thread onder andere: verloop, volgorde, levenslijn (the thread of life), verhaallijn (thread of a story). Een thread is ook daadwerkelijk een instantie van Thread: een object dat opdrachten moet gaan uitvoeren.
Onderaan in het voorbeeld staat de opdracht Thread.yield(). Dit is een opdracht aan de thread om andere threads de ruimte te geven (to yield = voorrang verlenen, plaats maken.) Dit geeft geen garanties maar maakt hun kans wel groter. Merk op dat er geen expliciete verwijzing naar de huidige thread is. Thread geeft slechts aan dat de verdere instructies voor yield te vinden zijn in de class Thread. De verwijzing naar de huidige thread is impliciet. Dat kan ook, omdat die thread hoe dan ook degene is die alle opdrachten uitvoert. Met de opdracht y3.join()worden twee threads aan elkaar gekoppeld. Dit zorgt ervoor dat de thread waarin main() draait pas verder gaat als thread y3 klaar is, hij wordt als het ware achter y3 vastgemaakt. Wederom is de verwijzing naar de huidige thread, die van main(), impliciet. Daardoor lijkt het alsof de opdracht join() alleen y3 betreft, maar dat is dus niet zo. Je zou het kunnen lezen als y3.join(thisthread).
Listing: Synchronization
4
De eerste opdracht is om zichzelf te starten: start(). Vervolgens moet hij wachten of hij de volgende opdracht kan gaan uitvoeren, de methode run(). Het kan namelijk zijn dat er ook andere threads zijn, en er kan er normaal gesproken maar één tegelijk bezig zijn.
Uitvoer zonder wait - notify (starten met Java Synchronization): aftrap: p 1 winst: p 2 aftrap: p 2 winst: p 1 aftrap: p 2 winst: p 1 aftrap: p 1 winst: p 1 aftrap: p 1 winst: p 2 aftrap: p 2 winst: p 2 aftrap: p 2 winst: p 1 >>
15
dating.nl Hallo, Ik ben Kim, consulente van JavaDating.nl. Zoek jij een match? Ik zal mijn best doen de juiste partner voor jou te vinden. Ik ben bereikbaar op 06- 22429522 en via www.javadating.nl. Hopelijk tot ziens! Kim
Leergierige Framework ontwikkelaar zoekt nieuwe manier om zijn kennis te vergroten. Wicket is mijn passie Interesse gewekt? RR-25 ----------------------------------------------------Manager zkt asap sr. Java specialist. Ambitieus en leergierig geen bezwaar. Graag zsm beschikbaar. Omg.Utr. ----------------------------------------------------Aangeboden: Java Specialist biedt specialistische java kennis aan. Ik geeft een kennissessie in de Acedemy. Schrijf je zsm in www. innoveerjijmee.nl ----------------------------------------------------Java Ontwikkelaar zoekt flexibile jee specialist. Kennis van SQL geen gezwaar. Omgeving Amsterdam. Reageer onder nummer SA-30 ----------------------------------------------------Teab Java cookbooks. Handige werkjes waarmee je een jumpstart in nieuwe java technologie kunt maken. Kijk op www.J-Technologies.nl ----------------------------------------------------Java projectleider zkt asap ter aanvulling van zijn team java specialisten. Eisen: java ervaring, teamplayer. Voorwaarden notk. -----------------------------------------------------
Middleware specialist zoekt igst en zgoh kenniscollegea. Ambitieus, vakidioot, gedreven en getalenteerd. Voorwaarden notk ----------------------------------------------------Lotgenotencontact: Java verslaafde zoekt lotgenoten. Zoek jij ook aansluiting en wordt je niet begrepen. Laten wij bij elkaar kruipen en onze ervaringen delen. ----------------------------------------------------G e v o n d e n december 2007, leuke java club met ambitie en drive die het verschil willen beteken. ----------------------------------------------------Ook uitgekeken op je rel. zoek jij ook die java spanning. Stuur me een brief. Wie weet misschien klikt het en kunnen we samen een nieuwe start maken. ----------------------------------------------------Gedreven manager zoekt engineer met liefde voor ons vak. Kinderen geen bezwaar. Ben altijd opzoek naar innoverende projecten Ik neem je graag mee op mijn reizen! Reageer onder nummer PN-36 ----------------------------------------------------
Tka zgan Rup op Maat, Een praktische handleiding voor ITProjecten, ISBN 9012114136 Euro 15,-- www.rupopmaat.nl ---------------------------------------------------Gez. Java specialist voor uitdagende relatie. ----------------------------------------------------Architectuur problemen wij hebben de oplossing. www.J-Technologies.nl ----------------------------------------------------Javaanse zkt asap maatje om koffie te drinken. Kom jij bij mij op de koffie? onder nummer SA-83 ----------------------------------------------------Debuterende javaan zoekt maatje om grote projecten mee te draaien. Voorkeur voor kennis van Spring is een must! Zet jij samen met mij grote bedrijven in beweging? Reageer onder nummer JW-26 ----------------------------------------------------Ook uitgekeken op je rel. zoek jij ook die java spanning. Stuur me een brief. Wie weet misschien klikt het en kunnen we samen een nieuwe start maken. ----------------------------------------------------Open source fanaat zoekt Open source fanaat! Zullen we alles delen? Reactie op MB-36 ----------------------------------------------------Java projectleider zkt asap ter aanvulling van zijn team java specialisten.
Eisen: java ervaring, teamplayer. Voorwaarden notk. ----------------------------------------------------Middleware specialist zoekt igst en zgoh kenniscollegea. Ambitieus, vakidioot, gedreven en getalenteerd. Voorwaarden notk ----------------------------------------------------Lotgenotencontact: Java verslaafde zoekt lotgenoten. Zoek jij ook aansluiting en wordt je niet begrepen. Laten wij bij elkaar kruipen en onze ervaringen delen. ----------------------------------------------------Gevonden december 2007, leuke java club met ambitie en drive die het verschil willen beteken. ----------------------------------------------------Innoverende manager wil
professional om het onbekende op te zoeken. Goede mix van werk en privé is noodzakelijk. Omgeving Utrecht. Ik heb zelf een vis als huisdier, kom je ons gezelschap houden? Reageer op nummer JC-40 ----------------------------------------------------
Adverteren op javadating.nl? Kijk op javadating.nl voor de voorwaarden.
JAVA
Capgemini | Java Vervolg
Uitvoer met wait - notify (starten met Java Synchronization j): aftrap: p 1 winst: p 2 aftrap: p 1 winst: p 2 aftrap: p 1 winst: p 1 aftrap: p 2 winst: p 1 aftrap: p 2 winst: p 1 aftrap: p 2 winst: p 1 Bij threads speelt nog een ander lastig begrip een rol: synchronization. Synchronisatie heeft in het dagelijks leven te maken met het op elkaar afstemmen, coördineren van twee of meer (deel)systemen. Vooral in het Nederlands heeft synchronisatie echter sterk de betekenis van “gelijk laten lopen”, zoals bij horloges en synchroonzwemmen, en dat is nu juist wat bij synchronization niet aan de orde is. In de computerwereld heeft synchronization wel te maken met het coördineren van twee of meer deelsystemen (zoals threads of processen) maar het is niet gericht op het gelijk laten lopen van die deelsystemen. Synchronized in Java betekent dan ook niet “gelijk lopend met” maar slechts “gecoördineerd met” andere threads. Alle code zonder de markering synchronized wordt niet gecoördineerd. Dat wil zeggen dat die code op elk moment door willekeurig elke thread mag worden uitgevoerd. Code met markering synchronized wordt wel gecoördineerd: zolang een thread met deze code voor een bepaalde instantie bezig is, mag een andere thread deze code niet uitvoeren voor dezelfde instantie. In het spel van het voorbeeld willen we dat steeds de winst gaat naar de thread (speler) die als eerste 100.000 bereikt. We willen uitsluiten dat de andere thread er snel tussenkomt. De hele methode incAndCheck() is synchronized. (Achter de schermen wordt dit geregeld door op de betreffende
instantie van Game een vlag te zetten die aangeeft dat een thread er mee bezig is. Dit heet een lock.) Bovenop deze vorm van coördinatie van threads, waarbij de threads wel last van elkaar kunnen hebben, maar elkaar verder negeren, kunnen threads ook met elkaar communiceren, met behulp van wait(), notify() en notifyAll().
In het voorbeeld zeggen we met g.wait() dat de speler (thread) die zojuist gewonnen heeft aan de wachtrij van het spel (g) moet worden toegevoegd. Het betekent ook dat alleen de andere thread iets kan doen. Zodra die weer een aftrap gedaan heeft, komt hij in de code van Game het statement notify() tegen, wat er voor zorgt dat de thread in de wachtrij een bericht krijgt dat hij weer mee mag spelen. Bij de uitvoer met wait-notify kan je zien dat na winst van de één de ander de aftrap doet, bij de eerste uitvoer is dat niet zo. Hier komen we de impliciete verwijzing naar de huidige thread ook weer tegen, want g.wait() betekent eigenlijk iets als g.getWaitingList().add(thisthread). (Deze methoden horen bij Object, en niet bij Thread. Dat heeft ermee te maken dat ze gebruik maken van het lock-mechanisme op een instantie zelf.)
Listing: Serialize Uivoer: voor: newTopStat, newTopMember, newTopTrans iniSubStat, newSubMember, newSubTrans na: newTopStat, iniTopMember, iniTopTrans newSubStat, newSubMember, null
5
Member variabelen kunnen na serialisatie in verschillende toestanden verkeren, die niet allen even voor de hand liggend zijn. Dit voorbeeld zet ze op een rijtje. Vlak voor het deserializen staat vr.subStat = "newSubStat". Afgezien van de misleidende, en af te raden, notatiewijze is deze toekenning bewust na het serializen gezet, om te laten zien dat static variabelen zich niets aantrekken van serialisatie: ze hebben altijd de waarde die als laatste is toegekend. De class Top is niet serializable dus worden zijn variabelen niet meegenomen, zelfs niet als een subclass wel serializable is. Bij het deserializen krijgen zijn non-static variabelen hun initiële waarde, of er nu transient voor staat of niet. De transient variabele van Sub tenslotte wordt ook niet meegenomen, en resulteert in een null bij het deserializen. Er is hier dus slechts één variabele die meegenomen wordt bij het serializen: subMember.
Listing: RegexFind
6
Uitvoer: a => a_a_a_a__a a.a => aba_ada___ a.?a => aba_ada___ .?+a => _bacada_ra a.? => abacadab_a b. => _ba____br_ [a-c] => abaca_ab_a b.c => _bac______ .* => abacadabra Soms wordt ten onrechte geaarzeld om reguliere expressies in te zetten. De reden kan zijn dat de manier waarop Sun ze in Java heeft ingebouwd wel efficiënt maar niet heel doorzichtig is. De oorsprong van reguliere expressies >
17
18
WE LOVE IT
Mei 2008
Capgemini | Java Vervolg
(regular expressions) ligt bij de wiskundige taalmodellen, in het bijzonder die van reguliere talen. Elke reguliere expressie definieert een verzameling mogelijke strings. Vandaar dat ze ook goed gebruikt kunnen worden om de voorwaarden vast te leggen waar een string aan moet voldoen, en om strings die aan bepaalde voorwaarden voldoen terug te vinden in een groter geheel. Ze vormen daarmee een krachtig instrument in computertoepassingen, bijvoorbeeld voor invoercontrole en zoekopdrachten.
Wat Sun heeft gedaan volgt netjes het OO-principe van het scheiden van verantwoordelijkheden, maar daardoor moet je wel een paar stappen zetten. De eerste stap is het creëren van een Pattern, een gecompileerde regular expression. Ze hadden dit met een constructor kunnen doen, maar daarmee hadden ze de aanroepende code gedwongen om altijd new() te gebruiken. Met de gekozen oplossing (een factory method) staat het de Pattern class vrij om zelf te bepalen hoe hij aan een Pattern komt, bijvoorbeeld via caching. Het compileren van een regular expression kan namelijk een relatief zware taak zijn. Dat is ook een reden waarom het maken van een Pattern apart gezet is in deze compile-methode: het geeft de programmeur de mogelijkheid om een Pattern eenmaal te compileren, en vervolgens te hergebruiken. Vervolgens wordt aan de Pattern
gevraagd om een Matcher te maken. Dat is niet heel intuïtief. Je zou eerder iets verwachten als Matcher. createMatcher(Pattern p, String s). Kennelijk kan een pattern een Matcher maken en een referentie naar zichzelf daarin meegeven. De matcher is verantwoordelijk voor alles dat met het matchen te maken heeft: hij gebruikt de pattern om elke volgende match te vinden, hij houdt bij waar hij gebleven was, en hij houdt de laatste match en diens positie vast. Op die manier kan het voorbeeldprogramma precies laten zien waar in de string “abacadabra” de door de gebruiker ingevoerde expressie gevonden wordt.
public static final Seizoen Seizoen.ZOMER public static final Seizoen Seizoen.HERFST public static final Seizoen Seizoen.WINTER public static Seizoen Seizoen.standaard private static final Seizoen[] Seizoen.$VALUES public static Seizoen Seizoen. valueOf(Java.lang.String) public static Seizoen[] Seizoen.values() LENTE ZOMER HERFST WINTER standaard: LENTE Zelfde instantie
7
Listing: RegexMatch Uitvoer bij aanroep met “Aap noot mies”: Aap ja noot nee mies ja Voor een eenmalige controle van een string met een regular expression kan een eenvoudige weg worden bewandeld: str.matches(controleRegEx); Maar in de meeste gevallen zullen we alle invoer van gebruikers willen controleren tegen een bepaalde expressie. Daartoe maken we weer een pattern aan en een matcher. We kunnen de matcher hergebruiken met de methode reset().
Het voorbeeld toont ook een bijkomend voordeel van het apart aanmaken van een pattern: je kan er nog bepaalde eigenschappen aan meegeven. Dit resulteert hier in een controle of de invoer begint met a t/m m, ongeacht hoofdletter.
De Enum is eigenlijk een class, maar een beetje een vreemde. En lang niet elke programmeur heeft gespeeld met reflection om classes te bestuderen. Een goede reden om beide eens te combineren. In de uitvoer van het voorbeeld kan je zien dat een Enum een final class is, met een speciaal kenmerk dat via isEnum() opgevraagd kan worden. Verder is duidelijk dat de waarden van een Enum instanties van diezelfde Enum zijn. Je kunt zo’n instantie toekennen aan een variabele, in dit geval standaard, en je kan hem opvragen via valueOf(). Deze wijzen allemaal naar dezelfde instantie.
Listing: ReflectEnum
8
Uitvoer: final class Seizoen (Enum) public static final Seizoen Seizoen.LENTE
9
Listing: GenericsWarning Compileren met: Javac GenericsWarning. Java -Xlint:unchecked
JAVA
Uitvoer: GenericsWarning.Java:5: warning: [unchecked] unchecked call to add(int,E) as a member of the raw type Java.util.List list.add(0, val); ^ 1 warning
Een mooie, maar enigszins gecompliceerde toevoeging aan Java 5 is generics. De reden om deze te introduceren was het verbeteren van de collections, zoals ArrayList, Hashmap etc. In collections kunnen objecten worden opgeslagen ongeacht hun type. Dit heeft onder andere tot gevolg dat de compiler geen type checking kan toepassen: het controleren of er correct met types wordt omgegaan. Wat we eigenlijk zouden willen is collections waarbij type checking wel toegepast kan worden, maar die tegelijk voor alle mogelijke types gebruikt kunnen worden. Want het zou erg onhandig zijn om voor elk mogelijk type weer een aparte collection te definiëren. De oplossing van generics is dat er voor elke collection een generieke definitie is die altijd van toepassing is op die collection, ongeacht het type objecten dat hij beheert, maar dat het type later wel nog gespecificeerd kan worden. Eigenlijk waren collections altijd al generiek, je kon immers elk type toepassen. Alleen het feit dat ze generiek zijn, wordt vanaf Java 5 expliciet aangegeven met een nieuwe notatie, zoals <E>, wat betekent: van een nog specifiek te maken type. Een deel van de generieke definitie van ArrayList zou dan zijn: public class ArrayList<E> { void add(int index, E element) Dit geeft aan dat als er een ArrayList aangemaakt wordt, en hij
wordt specifiek gemaakt door voor E een bepaald type in te vullen, dat dan alleen dat type toegevoegd mag worden met de methode add. Om code van voor Java 5 te kunnen compileren met een compiler van versie 5 of hoger, kunnen collections ook nog steeds zonder generics-notatie gebruikt worden, dus zonder een type te specificeren. In dat geval wordt een collection raw genoemd. En bij een methode die een element toevoegt zal de compiler dan waarschuwen dat hij niet kan checken of het correcte type toegevoegd wordt, terwijl je daar als programmeur mogelijk wel van uit gaat. Dat is precies wat bovenstaande warning aangeeft. Als je zeker weet dat je de warning kan negeren, kan je een annotation toevoegen: @SuppressWarnings("unchecked")
moeten geïmplementeerd worden, opdat deze correct als sleutel gebruikt kan worden. Als één van beide namelijk zou ontbreken zou in plaats daarvan de standaardimplementatie van Object gebruikt worden, en die is gebaseerd op een uniek id van de instantie. Daardoor zou showEmpl() nooit een element terug kunnen vinden. Verder wordt voor hashCode() de value door tien gedeeld om minder verschillende hashcodes te krijgen. Om precies te zijn: 1 op elke 10 werknemers. Dat is mogelijk nog niet optimaal maar al wel efficiënter. Bij equals() van Empl wordt de naam genegeerd en wordt gelijkheid gedefinieerd als het overeenkomen van landcode en socialeverzekeringsnummer (zoals BSN). In hashCode() worden dezelfde velden gebruikt, maar dan op een wat efficiëntere manier.
Listing: EqualHashCode
10
Uitvoer: Janssen al bekend
Nu we toch met collections bezig zijn: ze vormen ook een veel voorkomende reden om de methoden equals() en hashCode() te implementeren, terwijl deze voor sommigen een no-go area zijn. Weliswaar definiëren deze methoden de gelijkheid van objecten, veel belangrijker is dat ze nodig zijn voor het terugvinden van objecten in een collection, en dat is weer nodig voor handelingen als toevoegen of raadplegen. Beoordelen of een object voorkomt kan op grond van het object zelf, of in het geval van bijvoorbeeld HashMap of Hashtable via een sleutel. In beide gevallen is het nodig dat objecten efficiënt en correct vergeleken kunnen worden, en van beide is een voorbeeld in de listing te zien. Het efficiënt terugvinden zowel op basis van sleutel als van objecten zelf is gebaseerd op twee stappen: eerst worden de hashcodes vergeleken, en pas als deze gelijk zijn worden de objecten zelf vergeleken. Daarom moeten de methodes aan bepaalde regels voldoen: objecten met gelijke hashcode hoeven zelf nog niet gelijk te zijn, maar als objecten gelijk zijn, dan moet de hashcode perse ook gelijk zijn. De equals() en hashCode() van EmplNr
Afsluiting Als bovenstaande voorbeelden bijdragen aan het begrijpen en correct toepassen van essentiële Java-technieken is een belangrijk doel van dit artikel al bereikt. Helemaal mooi zou het zijn als dit ook een aanleiding zou vormen om zelf met de code verder te experimenteren. Want voor de onderzoekende geest werpt elk antwoord zelf ook weer vragen op!
19
20
WE LOVE IT
MEI 2008
Anthony Lye, Senior Vice President CRM bij Oracle: 'De applicatiemarkt zien wij als zeer belangrijke groeimarkt naast de middleware- en databasemarkt.'
INTERVIEW
Oracle: 'Multi-tenancy biedt geen voordelen voor klanten maar voor de softwareleverancier'
ITcommercie had onlangs een interview met Anthony Lye, Senior Vice President CRM bij Oracle over de toekomst van CRM en de rol van Oracle daarin. Tijdens het gesprek ging Lye verder in op de informatie die eind vorig jaar op Oracle Open World werd gegeven. Tijdens dat evenement liet Oracle weten vooral bezig te zijn met het integreren van verschillende oplossingen die Oracle in de loop van de tijd heeft ontwikkeld en heeft verkregen door overnames. Ook werd er een tipje van de sluier opgelicht over de nieuwe Sales Force Automation (SFA) Fusion applicaties van Oracle.
Op de vraag of al die aandacht naar integreren niet ten koste gaat van de focus op visie en nieuwe producten zoals bijvoorbeeld Fusion CRM, antwoord Lye: ‘De ontwikkelingen van Fusion staan helemaal los van de ontwikkelingen aan Siebel of bijvoorbeeld AIA (Application Integration Architecture). Dat is een compleet zelfstandige ontwikkelorganisatie die zich puur focussen op de nieuwe generatie software die we daar aan het ontwikkelen zijn. Dus nee dat heeft geen effect daarop. Nee we zijn juist druk met het doorontwikkelen van CRM. Momenteel zijn vooral marketeers en servicemedewerkers die profiteren van een CRM-oplossing. Met de komst van Web 2.0 en sociale netwerken denken we dat we juist meer focus kunnen gaan leggen op meer verkoop en minder rapportage. Hoe kijk je aan tegen de on demand ontwikkelingen bij Microsoft en SAP waar niet alleen CRM meer wordt aangeboden maar op korte termijn ook bedrijfsbrede oplossingen. Bijvoorbeeld de Business ByDesign oplossing van SAP? Lye: ‘ Oracle Siebel On Demand is niet per definitie een point-solution.
INTERVIEW - DE TOEKOMST VAN CRM
In combinatie met de AIA-integratie is het onderdeel van een volwaardig goed geïntegreerde bedrijfsbrede oplossing. We komen overigens Microsoft in onze markt ook bijna niet tegen en ik
gaat iedereen onderuit gaat, en als er een upgrade plaatsvindt dat op één vast tijdstip gebeurd. Wij kunnen met onze klanten specifiek iets afspreken.
moeten zijn. Op Oracle Open World van afgelopen jaar was hier al enige verbetering in te zien. Wat gaan jullie doen om dit nog verder te verbeteren? Lye: ‘Ik begrijp wat je bedoeld. Oracle
Meer flexibileit en keuze voor klanten verwacht ook niet dat dit zal gebeuren. SAP zal met BusinessByDesign wel even bezig zijn om daar significante resultaten mee te boeken. Wij zullen aan de andere kant ons ook niet echt focussen op de wat kleinere markt waar bedrijven gebruik maken van veel verschillende producten en leveranciers. Wij zullen ons vooral bezig houden met de klanten die we al hebben zodat we die optimaal kunnen bedienen. We zijn overigens afgestapt van het multi-tenancy concept zodat we meer flexibiliteit en keuze van infrastructuur kunnen bieden aan onze klanten. Multi-tenancy biedt geen voordelen voor klanten maar voor de softwareleverancier. Daar komt bij dat als het platform Salesforce.com down
23-27
Hoe ziet de strategie richting het MKB er dan uit? Lye: ‘Traditioneel richten wij ons op de grootste bedrijven. Toch zie je een beweging naar beneden wanneer het gaat naar behoefte aan software- en IT-oplossingen. Uiteraard willen wij daar ook een rol spreken. De markt voor het kleinbedrijf zullen wij ons niet echt op richten. Daar zijn ook al andere goede partijen actief zoals Netsuite waar Larry Ellison (red. CEO van Oracle) overigens ook in investeert. Oracle, dat van origine uit de databasehoek komt, heeft vanuit deze historie vaak een product gedreven boodschap. Voor de applicatiemarkt zou dat meer een business boodschap
28-31
is vanaf het begin inderdaad sterk in de database- en middlewaremarkt. De applicatiemarkt zien wij als zeer belangrijke groeimarkt naast de middleware- en databasemarkt. Er is dan ook een sterke focus hierop, wat onze groeicijfers ook ondersteunen. Het laatste kwartaal hebben we 62 procent groei laten zien. We nemen het dus zeer serieus. Dit (fiscale) jaar komen naast de eerste Fusion CRM appplicaties ook Siebel 8.1 en Siebel On Demand 15 uit waarmee we denken de beste oplossingen in de markt te hebben. We zijn marktleider op zowel on premise als on demand.
32-35
Rulegen
Charta software
Caesar Groep
The never ending story of business rules.
Terug naar SQL krassen.
Designer2APEX: sneller migreren.
21
Staat u voor een belangrijke Oracle migratie? Wilt u de downtime reduceren met 95%? Wilt u geen risico’s en een 100% fallback scenario? Wilt u overstappen naar een ander hardware platform?
Het antwoord: Shareplex van Quest Meer weten? Download de whitepaper op www.quest.com/migratie. Of neem contact met ons op via telefoonnummer 020 - 510 67 00.
ALLE ANTWOORDEN:
BUSINESS RULES
In de praktijk zien we dat business rules vaak één-op-één te vertalen zijn naar een beperkingsregel in het onderliggende database design van een informatiesysteem.
Bij elk informatiesysteem komen we het fenomeen business rules tegen. De term wordt vaak in de mond genomen zonder dat deze helder gedefinieerd wordt. Wat is nou precies een business rule? Er is geen algemeen geaccepteerde definitie voor dit concept. Er is echter wel een ander, zeer helder gedefinieerd (en ook algemeen geaccepteerd) concept, wat erg in de buurt komt van wat men bedoelt met de term business rules. Dit betreft het concept van data integriteit constraints.
RULEGEN
The never ending story of
business rules Door Toon Koppelaars
Data integriteit constraints Data integriteits constraints zijn beperkingsregels op de data die we toestaan in de database. Het zijn dus regels die beschrijven welke vulling we wel en welke we niet toestaan in de tabellen van ons database design. In de praktijk zien we dat business rules vaak één-op-één te vertalen zijn naar een beperkingsregel in het onderliggende database design van een informatiesysteem. De business rules die niet als constraint beschouwd kunnen worden, blijken vaak rules te zijn (beperkingen, condities, automatische akties, etc.) met betrekking tot de functies en bedrijfsprocessen die het informatiesysteem ondersteunt. Het is belangrijk om duidelijk onderscheid te maken tussen de data integriteit constraints, en deze overige rules (laten we ze voor het gemak process rules noemen). De constraints hebben met de data te maken. De process rules hebben met de business logic van het informatiesysteem te maken. Ten tijde van implementeren blijken process rules en constraints twee wezenlijk verschillende zaken te zijn. - Code om process rules af te dwingen wordt min of meer altijd automatisch op één plek geïmplementeerd. Namelijk in het betreffende process waarop die (process) rule van toepassing is. - Code om constraints te controleren dient echter in principe in elk process geïmplementeerd te worden wat transacties genereert op de bij de constraint betrokken tabelstructuren. Dit betreft doorgaans meerdere processen.
23
24
WE LOVE IT
Mei 2008
The never ending story of business rules Vervolg
Met andere woorden als je niet oppast, worden constraints zeer slecht onderhoudbaar, omdat je code om die constraints af te dwingen op meerdere plekken in je informatiesysteem hebt geïmplementeerd. Het traceren van alle plekken waar code is geschreven om een gegeven constraint te implementeren, is doorgaans in dure en zeer foutgevoelige effort. Een voor de hand liggende manier om dit dreigend onderhoudsprobleem van constraints te voorkomen, is om alle constraint implementerende code éénmalig en liefst zo dicht mogelijk bij de data te implementeren. Een SQL DBMS biedt ons hiertoe twee opties: declaratieve constraints en tabel triggers.
- Database constraints beperken combinaties van tabellen binnen de database. Bijvoorbeeld: de som van de salarissen binnen één afdeling mag het afdelingsbudget niet overschrijden. NB: er is nog een vijfde klasse van constraints, de transitie constraints. Deze laten we in dit artikel verder buiten beschouwing. De ANSI SQL standaard levert ons declaratieve check constraints, primary en unique key constraints, en foreign key constraints. Deze zijn ook allemaal beschikbaar in de SQL implementatie van de gangbare RDBMS-en, waaronder die van Oracle. Deze SQL constraints stellen ons in staat om een groot deel van de data integriteit constraints declaratief te implementeren. Doorgaans doe je dit ten tijde van het aanmaken van de tabelstructuren in je database design. We zullen nu één en ander toelichten met een welbekende EMP-DEPT database design.
Implementeren van constraints Bij de implementatie van data integriteit constraints is het raadzaam om een classificatie van constraints te hanteren. Hierdoor ben je in staat om standaarden met betrekking tot het implementeren van constraints, per klasse van constraints te ontwikkelen. De algemeen geaccepteerde classificatie van data integriteit constraints gaat uit van de scope die een constraint in het database design heeft. Deze classificatie blijkt tevens een erg praktische te zijn, omdat de scope van een constraint een sterke correlatie heeft met de benodigde implementatie effort voor die constraint. - Attribuut constraints beperken de waarden van één attribuut (scope = één column value). Bijvoorbeeld: salaris moet in de range van 500 tot 10000 zijn. - Tuple constraints beperken combinaties van attribuut waarden binnen één tuple (row). Bijvoorbeeld: een president verdient altijd meer dan 8000. - Tabel constraints beperken combinaties van tuples binnen één tabel. Bijvoorbeeld: maximaal één manager per afdeling.
Hier is de definitie van een EMP tabel. Embedded zijn de definities van diverse constraints, waaronder enkele die we hierboven bij de classificatie als voorbeeld hebben genoemd. (1)
tabel, en een vaak voorkomende database constraint declaratief te implementeren. Wat in de ANSI SQL standaard ook beschreven wordt, zijn declaratieve assertion constraints. Echter geen enkele DBMS leverancier heeft deze (zinvol) geïmplementeerd. Hieronder is het taal constructie diagram voor assertion constraints. (3)
3 De
component representeert een willekeurige boolean expressie waarin ook subqueries voor mogen komen. Een assertion is een losstaand object, i.e. niet direct gekoppeld aan één of meerdere tabel structuren. De ANSI SQL standaard beschrijft dat het de taak van het DBMS is om alle gedefinieerde assertions te controleren tijdens transacties: alle expressies van opgevoerde assertions dienen ten alle tijde tot TRUE te evalueren. Stelt u zich eens voor dat assertion constraints beschikbaar zouden zijn. Dan zijn we in staat om alle constraints op een declaratieve manier in het DBMS
1 En de definitie van een DEPT tabel met enkele constraints. (2)
te specificeren en hoeven we zelf verder geen enkele regel code te schrijven om
2 Middels een check constraint kunnen we alle attribuut en tuple constraints declaratief implementeren. De primary key en foreign key zijn taal constructies om respectievelijk een vaak voorkomende
deze constraints af te dwingen. Constraints zijn dan zeer goed te onderhouden: we hoeven slechts op één plek, in het DBMS, de assertion aan te passen als de constraint gewijzigd moet worden.
BUSINESS RULES
We kijken even naar een voorbeeld. Stel dat in het nevenstaande EMP-DEPT database design de volgende business rule geïmplementeerd moet worden: Er mag maximaal één manager (i.e. een employee met JOB=’MANAGER”) per afdeling zijn. Deze busines rule kan als volgt met een assertion constraint gespecificeerd worden. (4) Hier is nog een voorbeeld. De som van de salarissen van de employees in een afdeling moet onder het afdelingsbudget (SALBUDGET) liggen. (5) Het is bijzonder jammer dat declaratieve assertions niet beschikbaar zijn. Ik ben er volledig van overtuigd dat U ze zou gebruiken, net zoals U nu ook check, key en foreign key constraints gebruikt. Ze lossen immers het beheersprobleem rondom constraints voor eens en altijd op. Maar dat niet alleen. Assertion support zou ook aanzienlijke besparingen opleveren bij het bouwen van informatiesystemen, en ze geven U gegarandeerde data integriteit. Met name dit laatste aspect is bijzonder moeilijk bereikbaar als je zelf complexe procedurele code moet gaan schrijven om constraints af te dwingen. Laten we eens onderzoeken hoe we zelf middels tabel triggers constraints zouden kunnen afdwingen. We willen een efficiënte implementatie. Dat wil zeggen we willen tijdens een transactie een constraint alleen controleren als deze transactie ook dusdanig is dat de constraint potentieel geschonden zou
kunnen worden. Bijvoorbeeld in het geval van de “maximaal één manager per afdeling” is het alleen zinvol om te controleren wanneer: - de EMP tabel bij de transactie betrokken is, en wel - als in EMP een manager ge-insert wordt, of - als in EMP een employee tot manager gepromoveerd wordt, of - als in EMP een manager naar een andere afdeling verhuist.
Bij alle andere type transacties op EMP is het overbodig om deze constraint te controleren. Verder observeren we dat we deze constraint per afdeling kunnen controleren. Dus als in afdeling 10 een manager ge-insert wordt, hoeven we alleen maar afdeling 10 te controleren. Alle afdelingen controleren zou in dat geval zeer inefficiënt zijn. Dus idealiter willen we in een after statement trigger op de EMP tabel de volgende constraint validerende query runnen. (6)
6 Hierbij is :p_deptno een bind variabele met als waarde de te controleren afdeling. Als de query een resultaat teruggeeft, dan forceren we een roll-back van de transaction middels een raise_application_error. 4
5
In het geval van de “som van salaris per afdeling moet onder het afdelingsbudget liggen” constraint is het alleen zinvol om te controleren wanneer: - de EMP tabel, of de DEPT tabel bij de transactie betrokken zijn, en wel,
25
%$$*&'+$ %*,'"!$$($'$%'+'( $$ $) *()'()""$%#) +$%$--''+'$%$)$&'!) !')'))%&() !$$( !' ) ' %%! %#) ) $( %$- (&" *&' %&"$$ ""$ "') ,) ) +'$'($$*,''"+'( )(&') +") %+$$!*$ &'(%%$" ! "%&"$$"!()')$%$''!$$,'%&&!!$$ *'(*('%$ $!' (*&&%')+$%$-')("&(!" '%#$*$+%%'$')($)!(&'!
" #'$)*&'$+$ ()$!$$(""$ ) %%!""+%"" '"%&"$()' )$
"! #
$% "
BUSINESS RULES
The never ending story of business rules Vervolg - als in EMP een nieuwe employee toegevoegd wordt, of - als in EMP het salaris van een bestaande employee verhoogd wordt, of - als in EMP een employee naar een andere afdeling verhuist, of - als in DEPT het salarisbudget van de afdeling verlaagd wordt. In transacties die niet aan één van bovenstaande kenmerken voldoen, hoeft deze constraint niet gecontroleerd te worden. De controle zelf zou middels volgende query kunnen plaatsvinden (:p_deptno representeert de te controleren afdeling). (7)
8 We gaan nu alleen de validatie query uitvoeren als bovenstaande query een resultaat oplevert. Door de betreffende deptno waarde te selecteren, zijn we in staat om deze als bind-value door te geven aan de validatie query. Op soortgelijke wijze schrijven we een query op updated_rows die aangeeft wanneer we de constraints in geval van een update-statement moeten controleren: (9)
- We hebben code in triggers gebouwd (complex, mutating table probleem). - We hebben code gegenereerd met een framework als CDM*RuleFrame. - We hebben trucs met materialized views + check constraints bedacht. - We hebben code in de JEE/Java laag geïmplementeerd (ADF-BC). - We hebben code in mid-tier oriented ‘rules engines’ gespecificeerd (bijv. Oracle Business Rules). - We dreigen nu weer code in Apex pages te gaan bouwen en dupliceren. - En we kunnen nu code genereren met een tweede generatie database framework als RuleGen.
9
7 Het eerder genoemde “wanneer is controle zinvol” kan ook middels queries gespecificeerd worden, door de rows die zojuist ge-insert, ge-update, of gedelete zijn, te inspecteren. Deze zojuist ge-DML-de rows, worden in de literatuur het transitie-effect van een DML statement genoemd. Zo is er een transitieeffect voor een insert-statement genaamd inserted_rows, voor een update-statement updated_rows, en voor een deletestatement deleted_rows. Als deze transitieeffecten benaderbaar zouden zijn vanuit after statement triggers, bijvoorbeeld als temporary tables, dan kan op een elegante manier bewaakt worden dat de constraint validerende queries alleen afgaan als dat zinvol is. Laten we het eerste voorbeeld gebruiken om dit toe te lichten. Het was alleen zinvol om de “maximaal één manager per afdeling” constraint te controleren als er een nieuwe manager ge-insert wordt. Dit kunnen we specificeren door een query op inserted_rows te schrijven die nagaat of dat het geval is. (8)
Bovenstaande query detecteert de update statements die ofwel iemand tot manager promoveren, ofwel een manager naar een andere afdeling verhuizen. In beide gevallen willen we de constraint voor de new_deptno afdeling gaan controleren. Natuurlijk moeten we nog de nodige PL/SQL eromheen coderen om te zorgen dat de queries afgaan, de bind-value wordt doorgegeven, en indien nodig de raise_application_error wordt uitgevoerd. Het is natuurlijk nog mooier als we deze code helemaal laten genereren middels het RuleGen framework (zie www.rulegen.com).
Hoe U ook besluit code voor data integriteit constraints te gaan implementeren belangrijk is en blijft, om het op één plek te doen. Doet U dat niet dan is één van de meest belangrijke aspecten van uw database onbeheersbaar geworden. Met name constraint controlerende code leent zich uitstekend om grotendeels gegenereerd te worden. Data integriteits constraints zullen altijd een integraal onderdeel van de informatiesystemen vormen die we nu en in de toekomst ontwikkelen. Pas als DBMS leveranciers ons een efficiënte implementatie van assertion constraints gaan bieden, zal dat waarschijnlijk het laatste hoofdstuk van de neverending story rondom constraints gaan worden. Dan zal de belofte van Codd’s relationele data model eindelijk ingevuld zijn.
The neverending story De afgelopen decennia hebben we overal code geïmplementeerd om data integriteit constraints te controleren. - We hebben code in forms gebouwd en vaak gedupliceerd. - We hebben code in centrale stored procedures gebouwd.
Toon Koppelaars is managing partner van RuleGen BV. U kunt hem bereiken via [email protected].
27
28
WE LOVE IT
Mei 2008
Naast het ontwikkelen van wiskundige applicaties ontwikkelt Charta Software methoden om het programmeren zelf te verbeteren
Charta Software
Terug naar SQL krassen Efficiënter databasegebruik door innovatieve code Tekst en foto’s: Frans M. Kanters
TERUG NAAR SQL KRASSEN
De hedendaagse softwareontwikkeling drijft op relationele databases en objectgeoriënteerde programmeertalen. Twee relatief verschillende werelden die niet zonder elkaar kunnen, maar ook voor lastige vraagstukken zorgen. Charta Software heeft het spreekwoordelijke ei van Columbus ontwikkeld waardoor beide werelden beter kunnen samenwerken. De kern van de boodschap is een eerherstel voor de taal SQL. In een ambiance die ondernemerschap pur sang ademt, is het historische Groot Handelsgebouw in Rotterdam toneel voor het interview met de twee grondleggers van Charta Software Karsten Uil en Peter-Jan Roes. De bedrijfsnaam is gedeeltelijk ontleend aan het Engelse woord charts, dat staat voor landkaarten, maar ook voor het in kaart brengen van gegevens. De bedrijfsnaam is niet voor niets gekozen. Naast het ontwikkelen van wiskundige applicaties ontwikkelt Charta Software methoden om het programmeren zelf te verbeteren, waarbij het ontrafelen en in kaart brengen van logische structuren van de code belangrijk is.
Objectgeoriënteerde talen en relationele databases Het nog steeds groeiend gebruik van relationele databases in combinatie met objectgeoriënteerde programmeertalen zoals Java, Delphi en tegenwoordig ook PHP heeft zo zijn achtergronden. Relationele gegevensverzamelingen zijn sterk in het gestructureerd opslaan van gegevens, en het vervolgens weer terugvragen daarvan door middel van queries. Objectgeoriënteerd programmeren is populair omdat het de pro grammeur in staat stelt om met behulp van polymorfisme (principe dat een object verschillende vormen en gedaantes kan aannemen) het gedrag van applicaties te beschrijven. Resultaat zijn programma’s die beter functioneren in een continu veranderende omgeving. De combinatie van beide denkbeelden bezorgt menig softwareontwikkelaar een inmiddels klassiek probleem. Beide omgevingen hebben namelijk een volstrekt andere benadering voor het benaderen van informatie. In programmeursland staat dit probleem bekend als object-
relational impedance mismatch. Ofwel de problemen die ontstaan op zowel conceptueel als technisch vlak als een relationeel database systeem wordt gebruikt in combinatie met een applicatie die is ontwikkeld met objectgeoriënteerde denkbeelden.
Krachtige taal Het hart van veel applicaties is het databaseontwerp en de wijze dat de gegevens benaderd worden. Over het databaseontwerp wordt, als het goed is, goed nagedacht en vervolgens is voor relationele databases de natuurlijke taal om de database te bevragen en er commando's op uit te voeren SQL (“Structured Query Language”). Deze krachtige taal stelt de programmeur in staat om elke gewenste opvraag van gegevens uit een gegevensverzameling goed te formuleren en efficiënt te realiseren. SQL biedt een aantal handvatten voor de ontwikkeling van data intensieve applicaties. Denk aan het tegelijkertijd halen van informatie uit meerdere tabellen, het hergebruiken van een SQL query in weer andere queries en het efficiënte resultaat dat een query oplevert: er kan namelijk exact worden aangegeven welke informatie nodig is. Ook biedt SQL geavanceerde aggregatie van informatie en sorteerfuncties en kan met een enkel commando een forse set aan rijen worden aangepast of ingevoegd. Tot slot werkt SQL declaratief. Dit wil zeggen dat de programmeur heel specifiek aangeeft wat er moet gebeuren en niet hoe het moet gebeuren. De database weet vervolgens zelf - mits voldoende goed afgestemd - hoe het resultaat zo efficiënt mogelijk kan worden bereikt. Dit is slechts een bloemlezing van de pluspunten van SQL. Het generen van de juiste SQL code is één van de problemen die door object relational impedance mismatch wordt veroorzaakt.
SQL strings In programmeertalen worden SQL commando’s samengesteld door het aan elkaar plakken van stukjes tekst (string constanten). Hiermee wordt de programmeertaal gefopt. De voor de programmeertaal betekenisloze tekst geeft in werkelijkheid SQL commando’s
weer die een belangrijk deel van de applicatie vormen. De programmeertaal is echter onbekend met de syntaxregels van die commando’s. Het gevolg is dat de samengestelde SQL pas runtime (wanneer de applicatie draait) kan worden getest en fouten kunnen worden opgespoord. Een voorbeeld is het vergeten van een spatie of het in een routine aanspreken van kolomnamen die helemaal niet bestaan. Dit kost extra test- en programmeertijd en kan ervoor zorgen dat het uiteindelijke ontwikkelingstraject van een nieuwe applicatie aanzienlijk duurder uitpakt. Hierdoor is het samenstellen van de queries een erg risicovol deel van de softwareontwikkeling geworden.
Object relational mapping Een oplossing aangedragen door de markt voor de eerder genoemde object relational impedance mismatch en het gebruiken van het aan elkaar plakken van string constanten is object relational mapping (ORM). ORM is de techniek waarbij objectgeoriënteerde objecten en classes worden geprojecteerd – in jargon mapped – op relationele databasetabellen. De IT industrie kent inmiddels een aantal ORM frameworks, zoals Hibernate, TopLink en OpenJPA. De bij een groot publiek bekende iTunes muziekwinkel draait trouwens volledig onder één van deze ORM toepassingen.
Nadelen ORM frameworks Een goed geïmplementeerd ORM framework lost het beschreven probleem van de letterlijke strings op. De ontwikkelaar denkt en programmeert alleen in de objectgeoriënteerde wereld het het framework vertaalt zoekacties en aanpassingen naar nette SQL queries. Toch is deze oplossing verre van ideaal. De programmeur wordt namelijk afgeschermd van de database. Dit terwijl de databasestructuur het gestelde hart is van de applicatie en veel logica (business logic) voor de eindgebruikers bevat. Daarnaast wordt er aan voorbij gegaan dat de natuurlijke manier om de relationele database te benaderen SQL is. Hierdoor wordt niet de volledige kracht van SQL gebruikt en kan er niet optimaal gebruik worden gemaakt van de database. Dit laatste wordt opgelost in ORM systemen door een vorm van >
29
TERUG NAAR SQL KRASSEN
terug naar SQL krassen Vervolg
“letterlijke” SQL toe te staan. Tot slot is het de vraag of projecteren van een class op een tabel theoretisch gezien zuiver is.
Ander geluid De volledige dynamische aard van SQL laat zich lastig vatten in een objectgeoriënteerde programmeertaal. Dit probleem blijft als alleen gebruik gemaakt wordt van de beschreven vertaalslag (ORM) tussen classes en tabellen. Kortom, de moderne programmeertalen bieden onvoldoende ondersteuning voor een optimale inzet van SQL in een relationele databaseomgeving. De hieronder gepresenteerde oplossing voor het geschetste vraagstuk is een manier waarmee SQL teruggebracht kan worden naar de programmeertaal.
steert namelijk de programmeur bij het samenstellen van de SQL commando’s. Een ander belangrijk voordeel is dat databaseveranderingen eenvoudiger gerealiseerd kunnen worden. Waar traditioneel een database structuurwijziging vele mandagen programmeer- en testwerk oplevert, zorgt de gestelde structuur ervoor dat de meeste problemen al door de programmeertaal opgespoord worden. Het voorbeeld in de tabel hiernaast laat zien hoe de aanpak in elkaar steekt. Het bovenste kader geeft de code weer zoals traditioneel gebruikelijk is. Recht toe recht aan Java met daarin een aantal strings. Het kader daaronder laat de nieuwe aanpak zien.
BIJ HET BEVRAGEN VAN DE DATABASE s #ODE COMPLETION EN ANDERE TOOLS VOOR 31, s #OMPILER CONTROLEERT 31, SYNTAX EN het bestaan van tabellen en kolommen.
Toekomst Een toekomstvoorspelling is lastig. Duidelijk is wel dat de kritiek vanuit de softwaremarkt op de ingeslagen ORM weg luider wordt. Om relationele databases goed te gebruiken zal SQL moeten terugkeren als vast element binnen objectgeoriënteerde programmeertalen. Hierdoor lijkt de rol van ORM frameworks eindig. Een stap verder is dat SQL in zijn natuurlijke vorm (set echte key-
Integratie bouwstenen SQL in JAVA Het idee is dat alle elementaire bouwstenen van SQL worden nagemaakt als bouwstenen in de objectgeoriënteerde programmeertaal van keus. Uitgaande van bijvoorbeeld Java betekent dit dat de SQL bouwstenen als Java classes, objecten en functies worden gemodelleerd. Elke bouwsteen heeft het vermogen om zijn eigen stuk corresponderend SQL code te genereren. Door meerdere Java bouwstenen te combineren ontstaat de uiteindelijke SQL waarmee de database kan worden bevraagd. Deze benadering voorkomt dat een programmeur moet gaan werken met string constanten waarmee de SQL commando’s in Java geïntegreerd worden. Dit lost het probleem op zoals eerder beschreven van de letterlijke strings, waarvan Java zelf feitelijk niets van begrijpt. Daarnaast zorgt het gebruik van in Java gemodelleerde bouwstenen ervoor dat de ontwikkelomgeving kan gaan assisteren in het samenstellen van SQL commando's door middel van code completion of het in een vroeg stadium aangeven van fouten (compile time in plaats van run time). De compiler assi-
De oplossing van Charta Software ten opzichte van de ORM systemen heeft als duidelijk voordeel dat optimaal gecommuniceerd wordt met de database en de programmeur vanuit de programmeertaal weer bezig kan zijn met de logica van de database. Tot slot kan de methode ook gebruikt worden om de door frameworks gebruikte SQL (bijvoorbeeld HQL) kwalitatief te verbeteren. Deze aanpak is direct toepasbaar in de meeste objectgeoriënteerde programmeertalen. Het biedt hiermee een tegengeluid in de markt van softwarebouwers. Voor alle duidelijkheid: de aanpak kan prima functioneren naast de bekende ORM oplossingen. De vraag is of deze ORM oplossingen überhaupt nodig zijn. De voordelen van de Charta aanpak voor u op een rij: s 'EEN STRING CONSTANTEN TOCH 31, s 6OLLEDIGE KRACHT VAN 31, BESCHIKBAAR
words) zal worden opgenomen binnen de objectgeoriënteerde programmeertalen. Vooralsnog is dit een ideaalbeeld en zullen bedrijven als Charta Software de ingeslagen kruistocht moeten voortzetten. Want wie wil er nu niet foutlozer en sneller applicaties kunnen ontwikkelen en toch efficiënt en natuurlijk de database kunnen aanspreken en benaderen? De Charta aanpak lijkt het krassen in SQL nieuwe leven in te blazen. Geïnteresseerd? Op de website van Charta Software zijn voorbeelden gegeven voor een aantal programmeertalen. http://www.chartasoftware.com/
31
32
WE LOVE IT
Mei 2008
Overstappen naar web-enabled User Interface applicaties heeft absoluut zijn voordelen. Zo kunnen gebruikers op afstand bij de voor hen noodzakelijke data komen.
CAESAR GROEP
Designer2APEX: sneller migreren Door Douwe Pieter van den Bos
APEX
Om Oracle Forms en Reports applicaties te migreren naar Oracle Application Express presenteert de Caesar Groep Designer2APEX. Sinds jaar en dag maken we gebruik van Oracle Designer voor onze applicaties op de Oracle database. De Forms- en Reportsapplicaties die wij hiermee creëren doen al die tijd trouw hun werk, maar tijden veranderen. Met Oracle Application Express, kortweg APEX, is het mogelijk om vanuit de Oracle database, web-based User Interfaces te maken. Groot voordeel hiervan is dat er van de bestaande ontwikkeltalen gebruik gemaakt kan worden. Daarnaast resulteert het ontwikkelen in APEX in snelle, gebruiksvriendelijke en stabiele gebruikersschermen.
Redenen om te migreren Steeds vaker komen we bij onze opdrachtgevers tegen dat er gekozen wordt om met andere User Interface technologieën aan de slag te gaan. De geruchtenmachine over het uitfaseren van Oracle Designer, Forms en Reports door Oracle wordt steeds luider. Zelf heeft Oracle in hun ‘Statement of Directory’ aangegeven dat Oracle Designer versie 10gR2 tot 2012 ondersteund zal worden. Niet alleen deze ‘end-of-life’ van Oracle is één van de redenen om te migreren. Vanuit het bedrijfsleven komen voortdurend geluiden dat de ICTomgevingen andere wensen en eisen moeten kunnen vervullen. Wij praten hier onder andere over integratie tussen verschillende systemen, een overzichtelijke en gebruiksvriendelijke User Interface en het verlagen van de kosten om applicaties in de lucht te houden. Ook is het de laatste jaren een trend om eindgebruikers meer informatie te verschaffen, de lijn tussen
applicaties voor intern en extern gebruik is aan het vervagen. Daarnaast willen steeds meer bedrijven groei mogelijk creëren door bijvoorbeeld onafhankelijk van de werkplek te zijn. Eindgebruikers van maatwerkapplicaties willen ook steeds meer. Er wordt, logischerwijs, gevraagd om applicaties die intuïtief zijn. Gebruikers willen niet langer F7 indrukken om een zoekvraag in te kunnen voeren, ze willen iets wat ze al kennen: webpagina’s met een logische opbouw. Tegenwoordig komen deze wensen ook vanuit het bedrijfsleven. Gezien het toenemende personeelsverloop, willen we vanuit de business er ook voor zorgen dat nieuwe gebruikers van onze kritische bedrijfsapplicaties snel en productief aan de slag kunnen. Op dit moment is het operationeel houden van Oracle Applicaties een kostbare activiteit. Dit komt niet alleen door de kosten voor de Applicatie Servers die nodig zijn, maar ook door de onderhouds- en beheerskosten. Door het doorsturen van de eigenlijke applicatie vanaf de server naar de werkplek van de gebruiker, komt er veel druk te staan op de Applicatie Server; bij een uitdijende gebruikersorganisatie stijgen de kosten hiervoor dan ook navenant. Met modernere webtechnologieën is het mogelijk om de ‘Total Cost of Ownership’ aanzienlijk te verlagen.
Web-enabled user interface Overstappen naar web-enabled User Interface applicaties heeft absoluut zijn voordelen. Zo kunnen gebruikers op afstand bij de voor hen noodzakelijke data komen, nieuwe zakelijke uitdagingen worden mogelijk en de gebruikersinterface kan steeds beter aangepast worden op de wensen vanuit bijvoorbeeld de marketingoptiek. Daarnaast ben je als organisatie een
stuk flexibeler op architectuurniveau dan met Oracle Forms en Reports applicaties. Uiteraard brengt dit ook zijn nadelen met zich mee. De performance van applicaties is een ander aspect waar in de nabije toekomst constructief naar gekeken moet worden. Het aantal functionaliteiten in de doorgaande applicaties neemt exponentieel toe, hiertoe moet ook de ondersteunende architectuur geschikt zijn. De applicatieserver van Oracle is weliswaar zeer geschikt voor deze klus, maar niet bepaald een goedkope oplossing. Doordat we de servers steeds verder onder stress zetten, komt ook de performance in het geding. Naast het toenemende aantal functionaliteiten hebben we ook te maken met steeds grotere aantallen data. Hiermee moet ook in de architectuur rekening meer gehouden worden. Hoe dichter de applicatie bij de data staat, hoe sneller deze zal zijn. Als laatste hebben wij ook nog rekening te houden met een in aantal toenemende gebruikersgroep. Door schaalbaarheid van de applicaties te garanderen kunnen we verder in de toekomst kijken. Het opschalen van de applicaties is een van de grootste uitdagingen die we in de automatisering de komende jaren tegemoet kunnen zien.
Migratie naar Oracle Application Express De Designer2APEX projecten van de Caesar Groep zijn een uitgebreide combinatie van bewezen effectieve projectmethodieken en een uitgebreide, speciaal ontwikkelde toolkit. De migratie-applicatie is ontwikkeld door de Taskforce APEX van de Caesar Groep. Het zenuwcentrum op Oracle Application Express gebied in >
33
De ontbrekende schakel... ...wij hebben ’m! Un a cl e l e v e r t d e o n t b r e k e n d e s ch a k e l Unacl e i s dé speci al i st op het gebi ed van U ni x en Oracl e. Wi j bi eden expe rti s e i n de vo rm van detacheri ng en consul tancy, maar ook prakti sche di ensten al s re m ote be h eer, i nstal l ati e en confi gurati e en 7 x 24 uur standby di enstverl eni ng. O nze speci al i sten zi j n de basi s van ons succes. Zi j geven onze kl anten to e ge v oe gde Al onze speci al i sten zi j n gecerti fi ceerd en hebben j arenl ange ervari ng. Ee n ga ra nti e vo or kwal i tei t!
Vaca t u r e s Unacl e heeft pl aats voor ni euwe col l ega’s! We zi j n op zoek naar: N Oracl e- speci al i sten N Uni x- speci al i sten N Li nux- speci al i sten
So ll i ci teer di rect vi a de websi te (www.unacl e.nl ) of bel 030 6020660.
www.unacle.nl
PSAA@>JK R E O Q A H A ? K I I Q J E ? = P E A XXXUXFFEOM
waarde. D e sel ecti e van onze medewerkers gebeurt dan ook ui terst zorgvul di g.
APEX
Caesar Groep Vervolg Nederland. Door de slimme combinatie van methodiek en applicatie is het mogelijk om op een snelle en constructieve manier Application Express applicaties te genereren vanuit Oracle Designer. Met onze Designer2APEX aanpak kunt u uw Forms en Reports applicaties, die zijn gegenereerd vanuit Oracle Designer, overzetten naar een Application Express interface die aan de eisen van vandaag voldoet. Tijdens deze Designer2APEX projecten zetten wij allereerst een basis applicatie in Oracle Application Express neer. Dit doen wij altijd aan de hand van de gegeven definities zoals die in de Oracle Designer repository staan. Gedurende deze eerste migratieslag wordt de voor uw applicatie unieke vorm en logische opbouw neergezet in de nieuwe omgeving. De Designer2APEX toolkit doet tijdens de migratie uitgebreid verslag van de verschillende te migreren onderdelen. Hierdoor is de gehele migratie zeer betrouwbaar: we zijn immers altijd op de hoogte van onderdelen die nog extra aandacht vereisen. In de nieuwe omgeving, APEX, is het mogelijk om de volledige grafische weergave aan te passen aan de wensen van uw organisatie. Tevens wordt ervoor gezorgd dat de inrichting van de nieuwe omgeving klaar is voor de toekomst. Door onze ruime ervaring in Oracle ontwikkeling kennen wij de obstakels en zijn we hier op voorbereid.
40% sneller Door onze unieke Designer2APEX aanpak verloopt de migratie van Designer gegenereerde Forms en Reports applicaties tot 40% sneller dan een handmatige overzetting. Niet alleen de tijdswinst die dit oplevert is bijzonder; ook de bijkomende kosten worden flink gedrukt. Daarnaast is het overzetten naar een APEX gebruikersinterface met behulp
van de Designer2APEX aanpak zeer betrouwbaar. Omdat we gebruik maken van de Designer2APEX toolkit, garanderen wij dat alle functionaliteiten, waar u in de loop der jaren aan heeft gewerkt, beschikbaar zijn in uw nieuwe omgeving.
Condities Vanzelfsprekend kunnen wij niet alle Forms en Reports applicaties geautomatiseerd migreren naar Application Express met de Designer2APEX aanpak. Om de projecten tot een succes te brengen moeten de bron- en doelsystemen wel aan enkele eigenschappen voldoen. Het is voor ons mogelijk om applicaties te migreren met behulp van Designer2APEX vanuit Designer versie 6i en hoger. Daarnaast moeten we de beschikking hebben over een Oracle database versie 91, release 2 of hoger om de doelomgeving in te richten. Het is helaas niet mogelijk om met de Designer2APEX toolkit zogenaamde ‘Post Generation Code’ te migreren. Dit betreft code die na het genereren vanuit Oracle Designer is toegevoegd aan Oracle Forms en Reports applicaties. Ondanks dat we deze code niet geautomatiseerd migreren merken we deze wel op, hierdoor is het mogelijk om deze mee te nemen in het gehele migratie traject. Om er zeker van te zijn dat uw omgeving en applicaties aan de gestelde voorwaarden voldoen, verrichten wij - voordat we aan de slag gaan - een scan van uw systemen. Na deze Pre Check Scan tonen wij aan welke handelingen verricht moeten worden, welke onderdelen geschikt zijn voor geautomatiseerde migratie en welke zaken hierna nog opgepakt moeten worden. Aan de hand van deze informatie ontvangt u een concrete projectplanning en offerte.
Conclusie Zoals we besproken hebben zijn er genoeg redenen om uw applicaties te migreren:
Douwe Pieter van den Bos: ' Met Oracle Application Express, kortweg APEX, is het mogelijk om vanuit de Oracle database, webbased User Interfaces te maken'
- De levensduur van uw applicaties - Het blijven voldoen aan toekomstige bedrijfseisen - User interfaces toepassen op de gebruikerswensen van vandaag - Het verlagen van de operationele kosten van uw applicaties - Volledig gebruik maken van de voordelen van het web - Een hogere performance halen met uw bedrijfskritische applicaties - En: de toekomstige schaalbaarheid van uw applicaties vergroten Door gebruik te maken van de Designer2APEX project-aanpak van de Caesar Groep is het mogelijk om de migratie snel en betrouwbaar uit te voeren met het oog op morgen en de Oracle database. Concluderend: door migratie van uw Oracle Formsen Reportsapplicaties naar Oracle Application Express maakt u uw maatwerksoftware weer klaar voor de toekomst. Douwe Pieter van den Bos is Technology Manager van het expertisecentrum Oracle van de Caesar Groep. In deze hoedanigheid is hij verantwoordelijk voor het technologische beleid op Oracle-gebied.
35
36
WE LOVE IT
MEI 2008
MAARTEN SCHNEIDER
Promotie kan geen kwaad! Hoe vaak feest jij als ontwikkelaar?
Technische mensen, zoals de meeste ontwikkelaars zijn, willen graag technische hoogstandjes leveren waar zij zelf trots op kunnen zijn, maar zich zelf op de borst slaan of die trots met anderen delen is hen vreemd.
We hebben net allerlei feestdagen achter de rug, zoals Pasen, Hemelvaartsdag, Pinksteren en natuurlijk Koninginnedag, maar die bedoel ik niet. In gesprekken met ontwikkelaars en hun managers hoor ik vaak dat er mooie projecten zijn opgeleverd. Soms op tijd, maar soms ook iets te laat of iets boven budget. Als ik dan vraag of er bij de oplevering feest is gevierd, bijvoorbeeld met speeches, gebak of bitterballen met drank dan kijkt men mij bijna altijd wazig aan. De standaard reactie is dan: we zijn blij dat we het af hebben, dat het geaccepteerd is en in productie genomen is. Met de hakken over de sloot en met veel kunst en vliegwerk is het ons weer gelukt. Laten we het project snel vergeten, geen tijd verliezen en onze aandacht richten op het volgende project dat al weer onder druk staat en bij wijze van spreken gisteren af had moeten zijn. Ik zie dat als een gemiste kans om je zelf en de ontwikkelgroep te promoten binnen de organisatie. IT zit te vaak in het verdomhoekje met een beeldvorming van: het kost te veel en doet te weinig voor ons. Een ding is zeker, alleen jij en de ontwikkelgroep kan zich zelf uit dat verdomhoekje halen, de business units zullen dat niet zo gauw doen. Dus eigen promotie kan geen kwaad. En omdat nog steeds geldt: liefde gaat door de maag, doen gebak en/of bitterballen het altijd goed.
Als marketingman denk ik dat er veel meer budget naar vernieuwende IT projecten kan komen als ontwikkelaars wat meer hun eigen werk “verkopen” aan de rest van de organisatie. Het woord “verkopen” heeft voor de technische ontwikkelaar vaak een vervelende klank. “Verkopen” wil ik niet, ik wil technisch bezig zijn. Een basis verkoop- en presentatietraining zou een goede investering zijn voor de meeste ontwikkelaars om hun zachte kant verder te ontwikkelen. De ontwikkelaar van 2008 is iemand waarvan de business unit vindt dat hij toegevoegde waarde levert. De business unit is klant en de klant is koning. De ontwikkelaar dient derhalve zich zelf en zijn projecten te verkopen aan de business unit. Als de business unit denkt dat zij net zo goed af zijn met een ontwikkelaar op afstand in India dan heb jij als ontwikkelaar een probleem. Daarom vind ik dat elk ontwikkelproject gevierd mag, of eigenlijk gevierd moet worden. Elke maand is er toch wel iets te vieren bij jullie? Je ziet steeds meer ontwikkelafdelingen een eigen communicatie opzetten naar de business units, bijvoorbeeld door een maandelijks e-nieuws update of soms een geprinte versie. Dit is ook een prima manier om je klant op de hoogte te houden van de ontwikkelingen en tussen de regels door te vertellen hoe goed je voor hen bezig bent. Ik wens je in de rest van 2008 vele feestmomenten met de business unit waarvoor je werkt. Dan wordt softwareontwikkeling niet alleen leuk om te doen, maar nog eens echt een feest. Maarten Schneider [email protected] www.agilebusinesssuite.com
COMPUTERBOEK IN THE SPOTLIGHT
IN THE SPOTLIGHT
Business Intelligence Korte beschrijving: Steeds meer organisaties komen in aanraking met business intelligence en de daarvoor benodigde data warehousetechnologie. Het boek ‘Business Intelligence’ laat zien hoe business intelligence organisaties kan helpen in het ontsluiten van informatie die niet in de gewone operationele informatiesystemen voorhanden is. Te denken valt aan het gebruiken van deze informatie voor het verklaren van allerlei verschijnselen en voor het ontwikkelen van voorspellende modellen. Daarnaast geeft business intelligence de mogelijkheid om allerlei rapportages te maken waarvoor gegevens uit verschillende informatiesystemen nodig zijn.
Business Intelligence Ondertitel: De eenduidige informatieomgeving en de gevolgen voor de organisatie Auteurs: Peter van Til & Ton van Rooij Uitgever: Academic Service | Jaar: 2008 | Bindwijze: Gebonden | Blz: 244 | Prijs: ` 39,95
Business Intelligence 9789012125758 Door Annelies Bakelaar Business Intelligence’ van Peter van Til en Ton de Rooij gaat over ‘wie wat bewaart, die heeft wat’ en over ‘de juiste informatie op de juiste plaats op het juiste moment’. ‘Business Intelligence’ geeft een overzicht van wat nodig is om business intelligence binnen een organisatie toe te passen. In dit boek geven de auteurs hun visie op een eenduidige informatieomgeving. Deze omgeving strekt zich uit van bronsysteem tot het informatierapport. Het boek is geschreven voor diegenen die nog niet uitgebreid met het vakgebied hebben kennisgemaakt. Kort gezegd een algemeen en inleidend boek vol theorie dat de kern van het onderwerp behandelt. In ‘Business Intelligence’ geven Peter van Til en Ton de Rooij een uitgebreid overzicht van de componenten die noodzakelijk zijn om business intelligence toe te passen in organisaties. Business intelligence helpt organisaties in het ontsluiten van informatie die niet in de operationele systemen voorhanden is. Daarnaast geeft business intelligence de mogelijkheid om diverse rapportages te maken waarvoor gegevens uit diverse informatiesystemen nodig zijn. Business Intelligence zorgt ervoor dat ‘de juiste informatie op de juiste plaats op het juiste moment en in de juiste vorm is.’ Het boek is geschikt voor zelfstudie, klassikaal onderwijs, maar zeker ook als naslagwerk. Het is geschreven voor diegenen
Rapportages kunnen daarbij voor het management bedoeld zijn, maar veel belangrijker nog zijn rapportages die geschikt zijn om te gebruiken bij het alledaagse werk, zoals scorecarding van klanten waardoor de business snel gerichte beslissingen kan nemen.
die nog niet uitgebreid met het vakgebied hebben kennisgemaakt. ‘Business Intelligence’ bestaat uit twee delen. Het eerste deel gaat in op de architectuur en de componenten van data warehousing en business intelligence. De omgeving waarin data warehousing en business intelligence wordt geplaatst wordt ‘een eenduidige informatieomgeving (EIO)’ genoemd. Een EIO zorgt ervoor dat de business intelligence-vraagstukken kunnen worden opgelost. Hiervoor wordt gebruik gemaakt van gegevens uit diverse bronnen, die worden opgeslagen in een geïntegreerde omgeving om ze van daaruit weer ter beschikking te stellen aan de gebruiker. In het tweede deel van dit boek wordt aandacht besteed aan de organisatorische effecten bij het toepassen van business intelligence. De centrale vraag in dit deel is: wat is het voordeel voor de business? Bij de organisatie horen zaken als implementatie, onderhoud en testen, want garbage in betekent garbage out! Ontwikkelingen die de revue passeren zijn onder andere corporate performance management, business activity monitoring, service oriented architecture. Het onderwerp Business Intelligence beschrijven zonder verduidelijking, kan uitmonden in droge kost; dit boek zorgt voor wat smeermiddel door gebruik te maken van voorbeelden ter verduidelijking. Deze voorbeelden zijn allen gerelateerd aan het bedrijf FuzzyToys (wereldwijd opererende speelgoedfabrikant). Ondanks het werken met voorbeelden, blijft dit boek naar mijn idee een ‘kleurloos’ boek vol theorie en weinig praktijk. Dit degelijke (studie)boek vraagt wat mij betreft om een meer uitnodigende lay-out, meer praktijkcases & tips en trucs zodat de laagdrempeligheid toeneemt.
37
WE LOVE IT
Mei 2008
VOLGEND NUMMER
Colofon
38
We Love IT: Hét magazine voor en door Oracle & Java gebruikers –en ontwikkelaars Oplage 15.000 exemplaren
JHeadstart made in holland
Redactie NIPPUR – Pieter Rambags, Qualogy - Leon de Werker, Capgemini - Marc Hartogs, ITCommercie, RuleGen Toon Koppelaars, Charta Software – Frans M. Kanters, Caesar Groep B.V. Douwe Pieter van den Bos, Unisys – Maarten Schneider, Computerboek.nl – Fred Cremers & Annelies Bakelaar, We Love IT – Tom van Luijk. Contact We Love IT Tom van Luijk Arnhemsestraatweg 33 6881 ND Velp 026 – 36 37 800 www.weloveit.nl [email protected] Vormgeving & PrePress Van der Velden Mediaproducties b.v. Brinkeweg 33 7108 AJ Winterswijk 0543 - 476 476 [email protected]
Publicatie van bovenstaand artikel is onder voorbehoud.
Uw artikel in We Love IT?
Abonneren?
We Love IT ontvangt graag uw Oracle artikelen. Bijvoorbeeld op het gebied van Oracle Applications, Oracle Databases, Enterprise management, Fusion Middleware, Java/ J2EE, Business Intelligence.
We Love IT is het magazine van en voor Oracle & Java-J2EE gebruikers en ontwikkelaars. Niet het blad maar de markt bepaalt de inhoud en iedereen wordt in de gelegenheid gesteld zijn of haar mening te geven. Wanneer u vanaf nu niets meer wilt missen kunt u zich nu ook gratis abonneren op We Love IT. Ga naar: www.weloveit.nl/abonneren
Voorbeelden zijn: Column, Evenement verslag, Implementatie project, Interview, Innoverende cases, Klantcase, Onderzoeksresultaten, Uw visie. Voor meer informatie over We Love IT ga naar: www.weloveit.nl.
Adverteren? We Love IT bereikt (minimaal 15.000) Oracle, Java/J2EE en Business Intelligence specialisten -gericht en zonder wasteop basis van Controled Circulation in Nederland. Ga naar: www.weloveit.nl.
Drukkerij Senefelder Misset Mercuriusstraat 35 7000 AB Doetinchem www.senefelder.nl
Adverteerders Index 5HART-IT 5HART DBA.nl Getronics ICT Match ITCommercie Ordina Qualoqy Quest Software Truston Unacle We Love IT
Voor een GRATIS Abonnement surf naar WWW.WELOVEIT.NL of bel +31 (0) 26 - 36 37 800
Met bijna 25 jaar ervaring heeft
'''"('"3&')$+"$()')$%$($
5HART-IT een uiterst sterke
%&"$($())**),%' %&")%)'"3&')-*""$ +'+%"$(
marktpositie op het gebied
!"'()%#$%#-"()$%$)#(*)$&'% )$6+$$"4($
van Databases, Programmeren,
%$),'&)%)#&"7#$))6%&)&!!$$," "+'$0+(&"('$
Business Intelligence en IT
%!$"&) )%")'!$
architectuur. Het overgrote deel van de Nederlandse
%$( !' ) '$ &'# &'#' $ (*$' '(+%%','$
bedrijven waar Oracle wordt
%+$$ ,'!$ , +%%'!*' $) %+' $ "$ '() $ $' !"$)$
toegepast heeft al kennis
,%'$%#&$(' '$()' &$,) 88$$,!+'
gemaakt met de kwaliteit
,")- $+%%' +%%'" !$'$'!$+$$, $#" !
van 5HART-IT.
'"$' !#' &'+8"+$%%!
Onze dynamische Oracle experts worden op detacheringbasis bij deze bedrijven ingezet.
&'
"! #
$% "
Ga jij mee?
Ga jij mee? Wij vinden het belangrijk te investeren in de ontwikkeling van ons bedrijf en onze medewerkers. Om die reden nemen wij meerdere keren per jaar deel aan grote evenementen op ons vakgebied, zowel in het binnen- als buitenland. Een goed voorbeeld is ons jaarlijks bezoek aan Oracle OpenWorld. Heb jij zin in een uitdagende functie bij een professioneel ICT bedrijf met aansprekende klanten en informele werksfeer? Staat zelfontplooiing bij jou hoog in het vaandel? Kom bij ons werken! Ga naar www.jaikgamee.nl voor meer informatie. Ook als je niet bij ons komt werken, kun je alsnog mee naar Oracle OpenWorld. Onder alle aanmeldingen verloten wij 1 deelname aan Oracle OpenWorld (hotel en ticket). Ga naar www.jaikgamee.nl voor deelname en voorwaarden.
Duwboot 6-8 | 3991 CD Houten | T +31 (0)30 600 19 00 | F +31 (0)30 600 19 01 | www.truston.com