9/30/2010

Do You Want an English Version?

I am currently blogging in german about Liferay, JSF, ICEFaces and so on.

I realized that there were  some guys from the U.S. visiting my page.

So - if you want me to write in english, please leave a comment.

Inter - Portlet Communication mit Liferay, Teil I

IPC (Inter - Portlet Communication) ist wichtig um Beispielsweise mehrere Portlets einer Seite gleichzeitig auf sich verändernde Daten reagieren zu lassen.

Diese Blog - Serie soll nacheinander die einzelnen Möglichkeiten  beleuchten solch eine Kommunikation herzustellen. Teil I wird sich um den Liferay - JavaScript Mechanismus drehen:


Teil I : Liferay JavaScript Event System

Liferay bietet ab Version 5.1 ein eigenes JavaScript - Event - System, um IPC zu ermöglichen.
Die Folgenden 2 Methoden können (out of the box !) sofort genutzt werden, um diese Kommunikation zu ermöglichen:

  • Liferay.trigger(eventName, data) 
  • Liferay.bind(eventName, function, scope)

Hierbei wird ein System, ähnlich dem Observer Pattern genutzt: Zuerst muss sich das empfangende Portlet registrieren (binden), danach kann das sendende Portlet Daten senden (das Event triggern). Dies birgt natürlich das Problem, daß das empfangene Portlet auf jeden Fall vor dem sendenden Portlet sich binden muss. In diesem Fall empfehle ich JQuery, welches bis Liferay 5.x unterstützt wird.

Hier ein Beispiel, welches man einfach so direkt in einem Portlet nutzen kann:





jQuery(document).ready(function(){ 

Liferay.bind('event',
 function(event, data){
  var daten = data.daten;
  //process data ...
  });

});


Fehlt nur noch die sendende Seite (aufzurufen aus dem 2. Portlet):

Liferay.trigger('event', {daten: '1,2,3,4'});


Vorteile dieser Technik:
  • Schnell und unkompliziert aufzusetzen,
  • läuft out-of the box
Nachteile :
  • Wenn man die Daten im Backend braucht, muss man noch entsprechende Komponenten bereitstellen, die die Daten ins Backend bringen, dies erhöht das Coupling
  • Generell sehr starkes Coupling : Backend - Daten im ersten Portlet, Javascript in beiden Portlets und Backend im 2. Portlet müssen übereinstimmen
All das (und noch viel mehr) kann man auch sehr gut hier nachlesen:
http://www.liferay.com/web/guest/community/wiki/-/wiki/1071674/Client-side+Inter-Portlet+Communication

Startschuss ins Blogger - Leben

So ... es ist getan ! Der Blog ist eingerichtet und es kann losgehen!
Ein Blog soll entstehen, der die "best practices", wissenswerte Kniffe und ähnliches zu den Folgenden Themen enthält:
  • Portale
  • Liferay
  • Java Server Faces
  • ICEFaces
  • Bildbearbeitung
  • JavaScript
  • JQuery
  • Java generell
  • etc etc
Grund : Nie mehr Lösungen suche, die man bereits gefunden hat !!! Nie mehr auf der Festplatte versuchen, Word - Dokumente anzulegen die man dann doch vergessen wird. Ein zentrales Repository für all meine Erfahrungen. 

Und natürlich möchte ich mein Wissen in diesen Bereichen mit der Welt teilen - denn schließlich habe ich selbst über Google mehr als ein Projekt gerettet ;)

So ... auf gehts !

Euer Daniel