RSS

Category Archives: XPages

myWebGate Building Process – Dojo und Templates

Das Benutzerverzeichnis ist ein Kernteil des myWebGate Framworks. Um dem Benutzer ein besonderes Erlebnis bei der Bedienung zu bieten, ist das Benutzerverzeichnis als “OnePage” Applikation designet. D.h. wir präsentieren alle Inhalte dynamisch. Die Daten werden via REST API direkt vom Server gelesen und dann on the Fly gerendert.

JSON 2 HTML Renderer gibts wie Sand am Meer. Unser Ehrgeiz war aber, dass wir das Problem mittels DOJO lösen (naja auch einige Lizenzfragen sind dann einfach geklärt). Leider ist es mit DOJO so, wie mit manchem genialen Projekt. Irgendwie hat der Dokumentator frei gehabt. Erschwerend kommt dazu, dass im Gebrauch mit XPages noch ein paar Dinge zu beachten sind.

Also zuerst das Kleingedruckte (oder wie krieg ich so ein Design hin, wie es Rechts zu sehen ist).

  1. Wir haben das HTML Template als PAGE erfasst und dort den Contentype auf HTML gesetzt.
  2. Das HTML Template darf nur 1 Root Element haben, sonst hat DOJO ein Problem
  3. Das neue DOJO Modul muss mittels
    <xp:dojoModulePath url=”biz.webgate.mywebgate.person”
    prefix=”mywebgate.Person”>
            </xp:dojoModulePath>
    eingebunden werden.

Tja und dann ist alles ziemlich simpel. Wir erstellen eine Javascript Client -Library, die wir biz.webgate.mywebgate.person.js nenne und schreiben dort folgenden Code rein:

Mittels dojo.provide definieren wir, was dieses File liefert, dojo.require definiert was wir alles brauchen, hier ist dojox.dtl._Templated die Rendering Enginge, die auf django basiert. Im dojo.declare geschieht die Magie. Mittel der cache Anweisung lesen wir das HTML File ein und peron:null erweitert unser Widget um ein neues Objekt.

In der Funktion openPersonTab() fügen wir dann die Person ein. Dabei greifen wir auf ein Spezielles TAB Objekt zu, dass uns das dynamische generieren der Tabs erlaubt. Die Variable xhrArgs definiert den Zugriff auf unser REST Service und lädt von dort das Personen Objekt. Der effektive Aufruf geschicht dann mit dojo.xhrGet(…), aber im Objekt haben wir auch die Verarbeitung des Resultats definiert. load wird dann aufgerufen, wenn wir erfolgreich die Daten abgegriffen haben. Innerhalb dieser Funktion initalisieren wir ein neues Widget und geben die data (das ist das Person Objekt vom Rest Service) direkt an das Widget weiter. dojox.dtl._Template redert dann das Template. Und durch placeAt() hängen wir das Renderresulat an das richtige Ort.

Blicken wir noch in das HTML Template:

Der Zugriff erfolgt über die {{person.____ }} Anweisungen. Wie man aus dem Code erkennen kann sind sowohl IF abfragen, wie auch for Schleifen möglich. Der Sprachumfang von DJANGO wird hier detailiert beschrieben.

Der REST Service liefert übrigens folgenden Code zurück:

Dieses Konstrukt lässt es nun zu, dass wir ohne Rendering Aufgabe für den Server die verschiedensten Personen öffnen:

Der vollständige Code wird im Juni auf openNTF veröffentlicht und ist unter der Apache Lizenz verfügbar.

 

N-Tier Struktur mit IBM Domino

In der modernen Software Architektur ist das Schichtenmodell (N-Tier) Standard und weit verbreitet. Die Vorteile liegen auf der Hand, da die Trennung von Präsentation, Logik und Datenhaltung auch eine horizontale Entwicklung begünstigt.
Die traditionelle Lotus Notes / Domino Entwicklung hat die Trennung von Präsentation, Logik und Datenhaltung bis jetzt nicht gefördert. Durch das Fast-Prototyping wurden sogar bewusst die Schichten übersprungen und die vertikale Entwicklung, sowie knappe Budgets haben eine saubere Trennung der Schichten stark behindert. Die logische Konsequenz war, dass Domino den Ruf bekam, nicht modern zu sein, keine N-Tier Struktur zu unterstützen. Automatisch wurde somit Domino von Architekten, die N-Tier als Muss-Anforderung definierten, gestrichen. Und dies zu Unrecht. Ich habe während meiner Programmiererzeit schon viele Anwendungen gesehen, die keine N-Tier Struktur besassen, aber auf Plattformen liefen, die als N-Tier Plattformen galten. Genau so habe ich einige Domino Anwendungen gesehen, die das N-Tier Architektur Prinzip passgenau umgesetzt hatten.
Mit dem neuen Relese 8.5.3 geht aber IBM konsequent den Schritt weiter, um diesen Missstand zu bekämpfen. XPages impliziert eigentlich eine N-Tier Struktur. Es ist jetzt nicht nur möglich Applikationen nach den N-Tier Architektur Prinzipien auf zu bauen, nein es ist sogar gewünscht.

Aber wie erreichen wir das? Hier einige Ideen dazu:

1. Verstehen, was Präsentation, Businesslogik und Datenhaltung bedeutet
2. Horizontale Entwicklung fördern
3. Definierte Schnittstellen zum Datenaustausch zwischen den Ebenen nutzen (zb. Präsentation zu Logik via JSON/REST, Logik zu NSF Store via NotesAPI)

Und vor allem darüber sprechen (und zwar mit dem neuen Vocabular)

 
Leave a comment

Posted by on February 18, 2012 in Domino, Java, XPages

 

Tags: , ,

IBM Domino ist in der Neuzeit angekommen

An einem Kurs für Fachvorgesetzte von Auszubildenden habe ich folgenden Satz aufgeschnappt und mir verinnerlicht: “Ihr müsst Euren Absolventen keine Prüfungsaufgabe in Form von ‘vergleiche Programmiersprache A mit B und bewerte welche besser ist’ stellen. Das Resultat ist von Anfang an klar”. Gespannt hatte ich auf die Antwort gewartet. Nach einer dramatischen Pause, dann die Erlösung: “Es ist immer die Sprache, die der Absolvent am Besten beherrscht”.
Eigentlich einleuchtend, und trotzdem absolut signifikant für die folgenden Ausführungen. Mir ist bewusst, dass ich vielen Lotus Notes Jüngern der alten Garde jetzt ziemlich Kopfschmerzen bereite, aber ich habe gelernt, dass der Blick in den Spiegel dann notwendig ist, wenn es nicht gut läuft.
Blicken wir ganz kurz in den Spiegel. Der Markt im Lotus Notes Sektor ist abnehmend. Neue, junge Entwickler zu finden, ist extrem schwierig und viele Verkaufsargumente für Lotus Notes Projekte sind hinfällig. Und wo liegt das Problem? “Schlechtes IBM Marketing” höre ich immer wieder, oder “Feature X, Funktion Y wurde nicht realisiert”. Nein das Problem ist leider 30cm vom Spiegel entfernt. Wir haben verpasst, dass die einmalige Sonderstellung von Lotus Notes / Domino von der Zukunft überholt wurde. Wir hatten über DesignPattern, MVC und 3 Tier Strukturen gelacht. Uns über Datenbankanbindungen amüsiert, Versionsabhängikeiten bewitzelt und uns hinter der Einmaligkeit von Lotus Notes versteckt, wenn es um neuartige Programmierung ging.
Und damit ist ein grosse Graben entstanden. Welche Programmiersprache ist die Beste? Die die ich gerade am Besten kann. An den Universitäten und Berufsschulen wurde JAVA, PHP und Integrationen mit mySQL unterrichtet. Junge Menschen lernten von der Basis her objektorientiert Programmieren, Businesslogik vom PresentationLayer zu trennen und das Thema Datenhaltung war in den Händen der RDBMS Fanatiker. Anstelle sich dieser Realität zu stellen, und das gute an den Denkstrukturen zu adaptieren, haben wir es als “Nicht Relevant” abgetan…. bis jetzt!

Aber der Domino Server ist in der Neuzeit angekommen. Vermutungen, die ich hatte, wurden an der Lotussphere bestätigt. Liebe Freunde, der Domino Server ist ein toller JAVA Application Server geworden, ohne die Schwerfälligkeit von Datenbankanbindung, komplexer Administration und unhandlichem Deployment. Nein, einfach ein RockSolid Server, der ein OSGi Layer hat, mit XPages ein auf JSF basierendes Presentation Framework, die Businesslogik kann in der Applikation direkt als JAVA Klassen abgelegt werden und dazu noch der beste dokumentorientierte Store, den man sich vorstellen kann.

Wenn wir jetzt noch das Vocabular der Neuzeit lernen und unseren Kunden selbstsicher die neuartige Architektur, sowie die Zukunftssicherheit des gesamten Framework erklären können, wird diese Plattform wieder hochattraktiv für junge, motivierte und innovative Entwickler. Und welcher Server ist der beste Server? Natürlich der Server, den ich am besten kenne.

Und eigentlich müsste das der Domino Server sein:
– Userverwaltung, Rollen und Rechtekonzept: DONE und bis auf Datenlayerimplementiert
– Anbindung an Storage: DONE (inkl. genialer Suchenginge)
– 3 Tier Struktur: Presentationlayer: XPages, BusinessLogik: JAVA, Storage: NSF
– Graphischer Desigern: Vorhanden.

Die Liste der Killerfeatures könnte ich noch erweitern (zb. offene Standards), aber passen wir das Vocabular an und sprechen wir die Sprache der Informatikmassen.

 
Leave a comment

Posted by on February 12, 2012 in Domino, Java, XPages

 

Persönliche Lotussphere Nachlese

Ja sie ist vorbei die LS 2012. Meine erste Lotussphere, die ich erleben durfte. Von meinen Arbeitskollegen wurde ich auf das Erlebnis vorbereitet und es wurde von den guten alten Tagen gesprochen. Immer wieder wurde ich von meinem Chef während der Lotussphere mittels “Achtung du bist jetzt Brainwashed” auf den Umstand der riesigen Begeisterung aufmerksam gemacht. Darum ist es wohl auch gut, dass jetzt über eine Woche vergangen ist, wir zu dritt durch Florida gereist sind, und wir Abstand gewinnen konnten, bis ich jetzt meine persönliche Nachlese schreibe.
Und trotzdem fällt meine Nachlese sehr positiv aus. Positiv in dem Sinne, dass IBM die Transformation von Lotus Notes und Domino sehr aktiv vorantreibt. Aber betrachten wir einmal das Big Picture. Während von 10 Jahren die Lotussphere der Ort für Lotus Notes/Domino Fans war, hat sich die Situation ganz stark verändert. Im Zentrum stand dieses Jahr (wie auch schon in vergangen Jahren) nicht ein Produkt oder ein Brand, sondern eine Denkweise. Vor einem Jahr wurde SocialBusiness als Zukunft proklamiert und dieses Jahr hat sich diese Denkweise etabliert. Laut Ronnie Maffa steht dabei vor allem der Mensch im Zentrum und alle Bemühungen in der Art und Weise wie Software, Social Software funktionieren soll, ist inspiriert von dem Verständnis des Menschen. So war es auch nicht verwunderlich, dass während dem Ausblick auf die Zukunft von IBM Connections der Mensch und nicht die Features des nächsten Releases wichtig waren.
“Wer den Menschen versteht, versteht auch, was wir als nächstes tun werden”, so Maffa.
Aber auf der anderen Seite scheint sich auch eine technische Revolution anzubahnen. Seid 4 Jahren wurde, wenn man den Releasezahlen glaubt von 8.5.0 bis 8.5.3 nur Minorreleases der Domino Plattform produziert. Schaut man aber dem Motor unter die Haube, entdeckt man einen radikalen Umbau. Nicht nur das, mit der Integration des XPages Framworks ist auch massive Veränderung im Bereich der Entwicklungsmethodik entstanden. Neue Releases und Erweiterungen zum XPageframework werden auf der Communityplattform von OpenNTF produziert und getestet. Alles was für die Plattform Lotus Domino wertvoll ist, wird dabei direkt mittels Upgradepack in kurzen Intervallen zum Produkt hinzugefügt und bekommt somit den Support von IBM. Dabei bleiben diese Elemente weiterhin OpenSource, d.h. Verbesserungen können durch die Community gemeldet werden und werden auch integriert.
Es gibt aber noch eine weitere Revolution. Pete Janzen, Produktmanager des Lotus Domino Designer wurde gefragt, was mit den Feature Request der Community die bezüglich den “alten” Lotus Notes Elemente gestellt wurden. Hätten die überhaupt eine Chance, bzw. könnte IBM nicht einmal ein paar Entwickler für das abstellen und nicht nur immer für das XPage Framework. Seine Antwort war sehr diplomatisch, seine Gestik und Mimik aber nicht. Ich versuche es einmal so auszudrücken: Jede Verbesserung, die XPage und dem neuen OSGi Kernel etwas bringen, kommen in den C++ Kernel rein. Das hat Pete Janzen so NICHT GESAGT, aber das habe ich bei verschiedenen Gesprächen und Sessions so rausgehört und interpretiert.
Wenn wir übrigens die Verbesserungen der letzten Releases angucken, dann scheint sich dies zu decken. Wenn wir schon bei OSGi sind, mir scheint, dass es IBM gelungen ist, innerhalb von wenigen Releaszyklen den Domino Server mit einem unheimlich starken Framework zu versehen, dass für die Zukunft wohl keine Fragen mehr offen lässt. Oder sagen wir es doch einfach mal salopp: Der Domino Server ist ein solid-rock-enterprise “JAVA” Server, mit einer mächtigen dokumentorientierte Datenstorage, der eine einfaches Deployment von Applikationen ermöglicht.
Für mich war die Message aus technologischer Sicht ziemlich deutlich: Java und XPages steht über allem!

 
Leave a comment

Posted by on January 29, 2012 in Domino, Java, XPages