dinsdag 8 november 2011

Tweede fase refactoring NS expanders

Op de Normalized Systems SVN server, onder de URL https://catcher01.democritus.net/svn/src/trunk, zijn de nieuwe refactored NS expanders beschikbaar.

Er zijn enkel aanpassingen gebeurd aan de implementatie van de NS expansie code zelf, niet aan de uitwendige structuur van het framework, m.a.w. enkel wijzigingen in de tak trunk/expanders.

Wat is veranderd? De expander source code is nu gebaseerd op de StringTemplate java template engine: http://www.stringtemplate.org. Voor elk te genereren bestand (java, xml, xsp, jsp, ...) werd een afzonderlijke template voorzien. Bij elke template hoort 1/1 een java bestand welke de nodige logica bevat.

Wat zijn de voordelen? Naast de gegenereerde code, is de expander source code zelf nu volledig genormaliseerd. De structuur bevat meer granulariteit wat de evolueerbaarheid van de expanders ten goede komt. De verschillende stacks (Cocoon/Struts2 in de web tier, EJB2.1/EJB3 in de business tier) kunnen nu verder consistent en volwaardig worden uitgebouwd.

Wat verandert er voor de gebruiker? De 'build omgeving' is gebaseerd op Maven2, in de folder expanders (bv. D:\NSF\expanders) kan de uitvoerbare code worden aangemaakt met het commando 'mvn install'. Het resultaat komt terecht in expanders/target/Expanders-1.0.0.jar.

Aan de applicatie en component expansie scripts in 'descriptors' dient niets te veranderen. Zij maken gebruik van bat of shell scripts uit expanders/bin, die op hun beurt gebruik maken van jar files in expanders/lib (ST-4.0.2.jar en antlr-3.3-complete.jar) en expanders/target (Expanders-1.0.0.jar).

dinsdag 13 september 2011

NS Framework Roadmap

Op de Normalized Systems SVN server zijn een aantal documenten geplaatst onder de URL https://catcher01.democritus.net/svn/src-beta/docs

Het document NS Framework Roadmap Details bevat een overzicht van de verschillende topics waaraan de komende maanden verder zal ontwikkeld worden door het NS Institute in samenwerking met de NS Alliance.

Het document is onderverdeeld in 4 stukken:
- Expansion tools
- Element features
- Utility libraries
- Business functions

Daarnaast werd ook een update voorzien van de NS Expanders Developers Guide en van de beknopte NS installation manual voor het Windows platform.

woensdag 31 augustus 2011

Eerste fase refactoring NS expanders voltooid

De volgende aanpassingen werden doorgevoerd, hoofdzakelijk aan de externe struktuur van de expanders (niet de source code als dusdanig):

- de naam van de applicatie komt niet meer voor in de verschillende descriptor files
(dit vormde een probleem bij het herbruiken van gemeenschappelijke cd's, dd's, fd's, td's, ...)

- de root folder van de locatie waar de code gegenereerd wordt, is verwijderd als eerste lijn in de verschillende descriptor files
(dit was voordien ook vervelend indien je bv. dd's porteerde van een Linux naar een Windows platform)

- de SVN root folder bevat nu 5 duidelijke onderverdelingen: expanders (de source code van de NS expanders), extensions (de customisaties op de gegenereerde code), externals (bv. DOJO javascript, encryption jars), descriptors (application & component descriptors en expansie meta scripts om applicaties te bouwen) en expansions (de locatie waar de gegenereerde code terecht komt)
(voordien was dit verwarrend, 'expand' leek een EJB component te zijn en de descriptors zaten ergens diep weg in een subfolder van 'expand\etc\test')

- elke applicatie bevat nu een 'set_exp_env_vars' script, waar de variabelen die de expansie sturen, kunnen geconfigureerd worden; o.a. keuze technologie stack, keuze v/d locatie van expanders, extensions, descriptors, expansions, ...
(m.a.w. de sturing kan nu per applicatie en is niet meer afhankelijk van 'system wide' environment variables)

- De expansie scripts werden ontkoppeld in een stuk 'zuivere expansie' en een stuk 'publishing in de applicatie'. Daardoor is het nu mogelijk een voorheen geexpandeerde component te 'publiceren' in een applicatie, zodat niet telkens opnieuw alle dd's van een bepaalde component dienen geherexpandeerd te worden (dit kan een aanzienlijke tijdswinst betekenen tijdens de ontwikkeling)

De vorige versie van de NS expanders source code, de 'alpha' SVN repository, blijft beschikbaar op de volgende URL: https://catcher01.democritus.net/svn/src-alpha/ .
Aangezien de struktuur grondig gewijzigd werd, staat de nieuwe 'refactored' source code op een afzonderlijke 'beta' SVN repository: https://catcher01.democritus.net/svn/src-beta/ .

Er volgt nog een tweede fase in de refactoring; deze is dan hoofdzakelijk gericht op de interne struktuur van de expanders, t.t.z. met het oog op de evolueerbaarheid van de expander source code zelf.

dinsdag 30 augustus 2011

Performantie-problemen Jonas-server (Nice to know)

Wij hebben een aantal weken geworsteld met aanzienlijke performantie-problemen met de opstart van Jonas voor project met aanzienlijk veel Stateless Session Beans. Voor bijvoorbeeld 100, duurde het meer dan 10 minuten vooraleer de applicatie opgestart was.

Dan maar even contact opgenomen met de Jonas-developers, en blijkt dat de oplossing zeer simpel was, maar je moet het weten. Dit was hun antwoord :

You should comment the component located in JONAS_BASE/conf/easybeans-jonas.xml file

Dit zorgde ervoor dat onze applicatie nu in minder dan 1 minuut opstart.

Test Plan


woensdag 29 juni 2011

Nice to know : Fout : java.lang.reflect.UndeclaredThrowableException

Er werd in een bepaalde Agent, een soort van Config-object meegegeven, zodat de Remote hiermee rekening kan houden voor het opzoeken van de juiste records.

Bij het testen kreeg ik een volgende fout :
java.lang.reflect.UndeclaredThrowableException

Achteraf bleek de fout te liggen bij het feit dat ik vergeten was de Config-class serializable te maken.

dinsdag 3 mei 2011

Nieuwe features Provincie van Antwerpen

Volgende features zijn momenteel in onze expanders bijgevoegd :


  • aanduiden welk type veld (hidden, label, read-only, editable) al naargelang de status van het object

  • mogelijkheid tot configuratie welke de next-status(es) zijn van een object (afhankelijk van huidige status & toegangsrechten van aangelogde persoon)

  • concept van parent-child relatie tussen objecten

Bedankt voor de uitnodiging

Na Cobol, Fortran, Basic, Pascal en structured programming ben ik stilgevallen maar als minst technische van allemaal hoop ik af en toe een zinnige bijdrage te kunnen leveren aangaande Normalized Systems. Het wordt immers dringend tijd dat we systemen bouwen volgens de specificaties, binnen het budget, binnen de tijd én ... foutloos.

donderdag 28 april 2011

Error in log tijdens zetten van many-to-many link : ....sms2side__sx

In de log kan men volgende foutboodschap krijgen :
Error setting expression 'arpaCodeDetails.artikelNummerIdsms2side__sx' with value '[Ljava.lang.String;@727e0e'
ognl.NoSuchPropertyException: be.provant.pocmodel.ArpaCodeDetails.artikelNummerIdsms2side__sx

Dit is normaal omdat deze selectie-plugin een eigen additioneel veld bijmaakt. Struts probeert dit ook aan de ognl-stack door te geven, maar deze variabele bestaat niet in de actie.

In de toekomst zullen we proberen om via jquery de submit-button aan te passen zodat dit item niet mee doorgegeven wordt.

Wie is waar mee bezig ...

Dit geeft iedereen die met de ontwikkeling van Normalised systems bezig is de mogelijkheid om aan te geven waar hij mee bezig is.
Veel werkplezier.
Michel Van den Bossche
Provincie Antwerpen