Xpert.ivy Code Rezept: PrimeFaces Charts anzeigen

Problem

Sie wollen Charts in Ihren Html User Dialogen anzeigen.

Lösung

PrimeFaces hat out of the box diverse Chart Komponente die einfach in die Html User Dialoge integriert werden können.

In diesem Tutorial zeige ich, wie man Bar-, Line- und MeterGaugeChart konfiguriert und in einem Html User Dialog anzeigt.

Abb. 1: Chart Demo

SVN

Sie können das fertige Projekt per SVN von http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/Forms in den Xpert.ivy Designer importieren.

Code

Charts in PrimeFaces zu erstellen ist relativ einfach. Alles was man braucht ist das richtige ChartModel. Für Bar- und Linechart ist es das CartesianChartModel. Für das MeterGaugeChart das MeterGaugeChartModel.

Hier ein Beispiel wie man das Barchart Konfiguriert.

Code-Snippet 1: Barchart konfigurieren

Das CartesianChartModel an sich hat keine Daten. Die Daten werden durch ChartSeries Objekte konfiguriert. Im Fall von Code-Snippet 1 sind dies 2.

Das Linechart kann fast gleich konfiguriert werden, mit dem Unterschied, dass anstelle der ChartSeries LineChartSeries verwendet werden.

Code-Snippet 2: Linechart konfigurieren

Zu guter Letzt noch ein spezielles Chart: Das MeterGaugeChart. Oder in Deutsch einfach TachometerChart.

Code-Snippet 3: MeterGaugeChart konfigurieren

Im Gegensatz zu den 2 vorherigen Charts benötigt das MeterGaugeChart ein MeterGaugeChartModel. Dieses Model nimmt als Konstruktor-Parameter den Tachostand und die Intervalle, in die der Tacho eingeteilt ist, entgegen.

Die Charts selber in den Html User Dialog einzubetten ist trivial.

Code-Snippet 4: Charts in Html User Dialog einbetten

Jedes Chart bietet diverse Attribute um Aussehen und Verhalten zu steuern. Am besten schauen Sie sich die PrimeFace Demos und die PrimeFaces Dokumentation dazu an.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

PrimeFaces Cookbook ist verfügbar

Das PrimeFaces Cookbook ist nun endlich da! Man kann es auf der Pack Publishing Seite kaufen.

Von der Webseite:

PrimeFaces is the de facto standard in the Java web development. PrimeFaces is a lightweight library with one jar, zero-configuration, and no required dependencies. You just need to download PrimeFaces, add the primefaces-{version}.jar to your classpath and import the namespace to get started. This cookbook provides a head start by covering all the knowledge needed for working with PrimeFaces components in the real world.

"PrimeFaces Cookbook" covers over 100 effective recipes for PrimeFaces 3.x which is a leading component suite to boost JSF applications. The book’s range is wide - from AJAX basics, theming, and input components to advanced usage of datatable, menus, drag & drop, and charts. It also includes creating custom components and PrimeFaces Extensions.

You will start with the basic concepts such as installing PrimeFaces, configuring it, and writing a first simple page. You will learn PrimeFaces' theming concept and common inputs and selects components. After that more advanced components and use cases will be discussed. The topics covered are grouping content with panels, data iteration components, endless menu variations, working with files and images, using drag & drop, creating charts, and maps. The last chapters describe solutions for frequent, advanced scenarios and give answers on how to write custom components based on PrimeFaces and also show the community-driven open source project PrimeFaces Extension in action.

Sobald ich es gelesen habe, werde ich ein kleines Review darüber schreiben.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Berechtigungen in Xpert.ivy


Berechtigungen sind die letzte Verteidigungslinie in Xpert.ivy um unerlaubten Zugriff auf gewisse Systeme und Daten zu verhindern. So ist es z.B. möglich, gewissen Rollen oder Benutzern das lesen von System Properties und Tasks zu verbieten oder zu erlauben. Wenn ein Stück Code nun versucht diese auszulesen und der Benutzer keine Berechtigung hat dies zu tun, so wird die Methode eine Exception werfen.

Code-Snippet 1: Keine Berechtigung

D.h., auch wenn man als Entwickler etwas vergisst, können diese Berechtigungen grösseren Schaden vermeiden, sofern sie richtig konfiguriert sind.

Doch wo und wie vergibt man diese Berechtigungen? Im Designer hat der Developer Benutzer alle Berechtigungen.

Normalerweise will man sich jedoch mit einem eigenen Benutzer einloggen. Wenn es dann zu einer Exception kommt, kann folgendes Code-Snippet ausgeführt werden um Root Berechtigungen zu bekommen.

Code-Snippet 2: Root Berechtigungen im Designer

Dies gibt der Rolle Everybody alle Berechtigungen. Diesen Code braucht man nur einmal nach dem Starten des Designer auszuführen.

Auf dem Server gibt es im Admin Bereich bei den Rollen und Benutzern 2 Knöpfe, mit denen sich diese Berechtigungen einstellen lassen.

Abb. 1: Berechtigungen
Abb. 2: Berechtigungen vergeben
Hier kann man die einzelnen Berechtigungen sehr fein einstellen.

Fazit

Mit den Berechtigungen hat man ein effektives Werkzeug um auf globaler Ebene den Zugriff auf gewisse Systeme, Ressourcen und Daten zu Beschränken.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Rothorn Sprint 12 Review Meeting: Validation & Cleanup

Im Sprint 12 Review Meeting gab es viele tolle Neuerungen. Zu meinen Highlights gehören
  • Bean Validation Annotations für Java Klassen & JSF Converters
  • Quick Outline für Prozesse
  • Toolsupport für IIS Integration

Bean Validation Annotations für Java Klassen & JSF Converters

Mit den Bean Validation Annotations ist es nun möglich Java Klassen mit Validation Annotations zu annotieren. Wenn eine annotierte Java Klasse in einem JSF Html Dialog in einem Formular verwendet wird, so wird dieses automatisch anhand von den Annotations validiert. Es ist keine Konfiguration mehr nötig.

Der Vorteil ist, dass man diese Annotations nur einmal auf der Klasse definiert und nicht für jedes Formular neu von Hand konfigurieren muss. Schauen Sie sich dazu die BeanValidationDemo in den Html Demo Dialogs an.

Zur Zeit werden nur Java Klassen unterstützt. Support für Xpert.ivy Datenklassen ist jedoch geplant.

Des Weiteren können nun auch eigene JSF Converter erstellt und verwendet werden.

Quick Outline für Prozesse

Prozesselemente zu finden war bis jetzt nicht eine Stärke von Xpert.ivy. Mit der Quick Outline für Prozesse kann man nun innerhalb eines Prozesses nach Elementen suchen und diese gleich auswählen. Dabei kann man entweder nach dem Namen oder nach der Prozess Id (PID) suchen.

Dazu drück man einfach CTRL+SHIFT+O und gibt den Suchbegriff ein.

Abb. 1: Quick Outline

Toolsupport für IIS Integration

Will man den IIS als Proxy für Xpert.ivy verwenden, so kann man dies nun automatisch konfigurieren lassen.

Dazu muss man das autoconfig.bat als Administrator starten, welches unter webserver/iis/{architektur} zu finden ist. Das Script konfiguriert nun den IIS automatisch.

Will man zusätzlich SSO einrichten, so startet man nach der IIS Konfiguration autoconfigSSO.bat.

Zum Schluss kann man noch IvyCheckup.exe laufen lassen. Dieses Programm überprüft, ob der IIS richtig konfiguriert wurde und bietet Vorschläge an falls etwas nicht richtig läuft.

Fazit

Es ist wieder ein toller Sprint Release mit vielen Neuerungen und Verbesserungen geworden. Eine Liste mit allen Anpassungen findet man auf dem ivyTeam Blog.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

6 Shortcuts um effektiver mit Xpert.ivy zu entwickeln (inkl. Cheat sheet)

Mit der Maus lassen sich ganz einfach und schnell Prozesse in Xpert.ivy zeichnen. Doch wenn es darum geht in Xpert.ivy zwischen den Prozessen zu wechseln und Code zu schreiben, so scheint die Maus manchmal das falsche Werkzeug zu sein.

Mit den 6 nachfolgenden Tastaturshortcuts wird das entwickeln mit Xpert.ivy um einiges effektiver.

Prozesse, Datenklassen und User Dialoge öffnen

Normalerweise wenn man z.B. einen Prozess öffnen will, so weiss man in etwa wo dieser ist. Man klickt sich durch den Projektbaum bis man ihn gefunden hat und öffnet ihn. Bei einem Workspace mit vielen Projekten kann dies jedoch sehr mühsam werden, da man sich zuerst orientieren muss, wo man im Projektbaum ist.

Abhilfe schafft hier der Shortcut CTRL+SHIFT+R. Drück man diese Tastenkombination, so öffnet sich der Open Resource Dialog.

Abb. 1: Open Resource Dialog
Hier kann man nach dem Prozess oder nach anderen Ressourcen suchen und direkt öffnen.

Klassen im Code Tab importieren

Wenn man Klassen im Code Tab des Script-Steps importieren will, so kann man das grüne "C" Icon drücken. Wem das zu langsam geht, der drückt CTRL+SHIFT+C.

Abb. 2: Klasse importieren

Datentyp für Datenklassen-Attribut auswählen

Wer im Datenklasseneditor schnell den Datentyp eines Datenklassen-Attributs auswählen will, der gibt den Namen des Attributs ein, gefolgt von einem Doppelpunkt und drück ENTER. Es öffnet sich der Type Selection Dialog, wo man dem gewünschten Datentyp suchen und auswählen kann.

Abb. 3: Type Selection Dialog

In Call Sub und Composites springen

Um direkt in einen Call Sub oder Composite zu springen, kann man einfach mit der Maus über den Call Sub oder Composite fahren und J drücken. J steht hier für Jump.

Abb. 4: In Call Sub und Composite springen

Prozesspfeile Biegen und Strecken

Wer viel Zeit damit verbringt Prozesspfeile in die richtige Form zu bringen, dem werden diese beiden Shortcuts gefallen.

Um einen Pfeil zu biegen, kann man mit der Maus über den Pfeil fahren und B drücken. Der Pfeil wird dann ums Eck gebogen. Wenn er wieder gerade sein soll, so kann man ihn mit S wieder Strecken.

Prozesselemente automatisch ausrichten

Um Prozesselemente auf einer Linie automatisch auszurichten, selektiert man zuerst die Elemente die ausgerichtet werden sollen und drück A. Xpert.ivy richtet nun alle selektierten Prozesselemente entweder horizontal oder vertikal auf einer Linie aus.

Fazit

Mit diesen einfachen Shortcuts muss man weniger zur Maus greifen und kann schneller und effizienter Arbeiten.

Ich habe Ihnen ein kleines Cheatsheet mit den Shortcuts erstellt, dass Sie hier herunterladen können.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

3 Tipps um Probleme auf dem Server zu analysieren und zu lösen

Auch wenn es einem nicht gefällt, Probleme treten immer wieder auf. Im Designer lassen sich Probleme relativ leicht Debuggen. Auf dem Server wird dies etwas schwieriger. Meistens hat man nur das Log. Was kann man also tun, um diese Probleme zu beseitigen?

Hier 3 Tipps die sich bei mir bewährt haben.

Workspace mit gleicher Konfiguration wie auf dem Server einrichten

Das einfachste was man machen kann ist einen Designer mit dem exakt gleichem Workspace wie auf dem Server deployt ist einzurichten und den Fehler zu reproduzieren zu versuchen. Und mit exakt meine ich auch exakt. Sonst kann es sein, dass über Abhängigkeiten etwas ein bisschen anders als auf dem Server ist und somit kein Fehler ausgelöst wird.

Falls man trotz gleicher Konfiguration den Fehler nicht reproduzieren kann, können nachfolgende Tipps helfen.

Die richtige Fehlermeldung lesen

Wenn ein Fehler auftritt so kann es durchaus sein, dass dies im Log viele ERROR Einträge generiert. Am besten fängt man mit dem ersten ERROR Eintrag an, da die nachfolgenden Einträge meistens Folgefehler sind.

Sollte man mal nicht sicher sein, welcher der erste ERROR Eintrag ist und man den Fehler wieder provozieren kann, so kann man einfach den Inhalt des Ivy Logs löschen und speichern und den Fehler erneut provozieren. Nun sucht man einfach nach dem ersten ERROR Eintrag und analysiert diesen.

Fehlermeldungen richtig analysieren

Was kann mit dieser Fehlermeldung gemacht werden? Schauen wir uns eine Beispiel an.

Code Snippet. 1: ERROR Eintrag

Das erste was man machen kann ist den Designer zu starten und nach dem Prozesselement zu suchen, welches den Fehler auslöst. Das Prozesselement ist im Log als processElement=13B7A11C2E76352B-f12-bean eingetragen.

Ab Xpert.ivy 4.3 und höher kann man das Prozesselement direkt über Xpert.ivy -> Debug -> Find Process or Element suchen. Dazu gibt man im Textfeld 13B7A11C2E76352B-f12 ein. Das gefundene Prozesselement wird direkt markiert.

Bis und mit Xpert.ivy 4.2 ist es etwas umständlicher. Im Designer sucht man zuerst nach 13B7A11C2E76352B (ohne -f12).

Dazu öffnet man den Search Dialog über Search -> File.

Abb. 1: Prozesselement suchen
Nachdem das Prozesselement gefunden worden ist, kann man den betroffenen Prozess öffnen. Nun muss man im Prozess nach dem richtigen Prozesselement suchen. Das kann man machen, indem man mit der Maus über die Elemente hovert.
Abb. 2: Prozesselement Pid
Hier sieht man auch den zweiten Teil der ID, f12. Jetzt kann man das Prozesselement analysieren und schauen, ob da etwas falsch konfiguriert oder programmiert wurde.

Fazit

Mit diesen 3 einfachen Tipps lassen sich die meisten Fehler auf dem Server lösen oder zumindest eingrenzen.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Ankündigung: Xpert.ivy JMS Extension

Update: Die Extension ist erschienen.

Im Ausblick für 2013 habe ich angekündigt, dass ich Xpert.ivy Extensions veröffentlichen werde. Die erste die dieses Jahr kommen wird ist die Integration von JMS in Xpert.ivy.

Sie wird Ihnen erlauben per JMS Messages zu senden und zu empfangen. Dies eröffnet neue Möglichkeiten Xpert.ivy mit anderen Applikationen zu integrieren (z.B. über einen ESB) aber auch die Entwicklung von Prozessen, die noch loser voneinander gekoppelt sind.

Ein Release Datum gibt es noch nicht. Sie können sich hier per Email anmelden um zu erfahren, wann die JMS Extension zur Verfügung steht.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.

Publish-Subscribe mit System Events

Publish-Subscribe, kurz Pub/Sub, ist ein Messaging Pattern das einem erlaubt, den Sender (Publisher) einer Nachricht von den Empfängern (Subscriber) zu entkoppeln. D.h. der Publisher sendet eine Nachricht, wie z.B. Dokument generiert, an eine Zentrale Stelle, auch Broker genannt. Der Broker sendet diese Nachricht nun an alle Subscribers, die sich für diese Nachricht interessieren.

Abb. 1: Pub/Sub


Diese Funktion wird meistens von so genannten Message-Oriented-Middlewares, kurz MOM, bereit gestellt und von APIs wie z.B. JMS implementiert.

Doch was ist der Nutzen von Pub/Sub? Das lässt sich anhand eines Beispieles am besten zeigen.

Nehmen wir an, wir haben einen Prozess der am Ende ein Dokument generiert und dieses Dokument per Email versendet. Nachdem der Prozess eingeführt wurde, will der Kunde, dass dieses Dokument zusätzlich archiviert wird. Gesagt, getan.

Der Prozess ist ein voller Erfolg und wird an einen weiteren Kunden verkauft. Dieser will aber, dass das Dokument weder per Email versendet noch archiviert wird, sondern per FTP hochgeladen wird.

Wie kann dies nun gelöst werden? Eine beliebte Möglichkeit ist das erstellen eines CallSub der per Kunden Projekt und Override überschrieben wird. Dies bedingt jedoch, dass der Prozess aus dem Kundenprojekt gestartet wird und je nach Situation werden Funktionalitäten dadurch dupliziert.

Eine andere Möglichkeit ist Pub/Sub mit System Events. Der Prozess (Publisher) ruft nun nicht mehr den CallSub auf, sondern sendet einen System Event Dokument generiert. Subscribers in Form von Event Start Beans empfangen nun dieses System Event.

Der Vorteil einer solchen Nachrichten basierten Architektur ist, dass man nun Teile der Applikation einfach hinzufügen und wieder wegnehmen kann, ohne das andere Teile der Applikation betroffen sind.

In unserem Beispiel könnten wir die einzelnen Funktionen (Email senden, archivieren, FTP etc.) in Projekte ablegen und je nach bedarf deployen. Diese würden dann das System Event empfangen und ihre Aufgabe unabhängig von einander verrichten.

System Events

Xpert.ivy bietet zwar keine MOM, doch mit den System Events bietet sich eine Möglichkeit, Pub/Sub ohne weitere Bibliotheken zu implementieren.

Xpert.ivy hat 2 Kategorien von System Events. Workflow und 3rd Party.

Workflow System Events werden von Xpert.ivy generiert und man kann selber keine generieren. Es gibt 4 Events die man empfangen kann:
  • WorkflowSystemEvent.TASK_CREATED
  • WorkflowSystemEvent.TASK_CHANGED
  • WorkflowSystemEvent.CASE_CREATED
  • WorkflowSystemEvent.CASE_CHANGED
3rd Party System Events können Sie dagegen selber generieren und empfangen.

Beispiel Projekt

Unter http://xpert-ivy-hacker-source-code.googlecode.com/svn/trunk/PublishSubscribe habe ich Ihnen ein Beispiel Projekt zur Verfügung gestellt.

System Events senden

In Ivy gibt es 2 Möglichkeiten System Event zu senden. 1 davon funktioniert nur in User Dialogen. Die andere, die ich Ihnen zeigen werden, funktioniert in Prozessen wie auch in User Dialogen. Wenn Sie wissen wollen, wie Sie mit einem User Dialog Interface System Events empfangen und senden können, öffnen Sie die Hilfe und suchen Sie nach System Event.

Im Code Snippet 1 ist zu sehen, wie man 3rd Party System Events versendet.

Code Snippet 1: System Event senden

Auf Zeile 5 wird das System Event erstellt. Der erste Parameter ist die Kategorie und muss immer THIRD_PARTY sein. Der zweite Parameter ist der Name des System Events. Auf diesen Namen müssen die Subscribers hören, wenn sie diesen Event empfangen wollen. Der letzte Parameter ist der Payload den man dem System Event mitgeben kann und ist optional.

System Events empfangen

Um System Events empfangen zu können, muss ein ISystemEventListener registriert werden. Ich habe dazu ein Event Start Bean (SystemEventSubscriber.java) geschrieben, dass dazu verwendet werden kann. Im folgenden Code Snippet sieht man die relevanten Teile, um einen ISystemEventListener zu erstellen und zu registrieren.

Code Snippet 2: ISystemEventListener erstellen

Ein ISystemEventListener registriert sich nicht auf einen bestimmten Event, sondern empfängt alle die gesendet werden. Es ist die Aufgabe des Listeners nur die Events zu verarbeiten, an denen er interessiert ist. Auf Zeile 4 sieht man, wie der Listener die Events herausfiltert.

Damit der Listener Events empfängt, muss, wie auf Zeile 15 zu sehen ist, der Listener registriert werden.

Wenn der Listener nicht mehr benötigt wird, muss dieser unbedingt wieder entfernt werden. Dies ist z.B. der Fall, wenn das Event Start Bean gestoppt wird.

Code Snippet 3: Listener entfernen

Wenn dies nicht gemacht wird kann es sein, dass unerwünschte Effekte auftreten, wie z.B. das Events in alten Prozess Model Versionen verarbeitet werden.

Limitationen und Tücken von System Events

Während System Events auf den ersten Blick nach einem tollen Ersatz für MOMs aussehen, muss man sich ihrer Limitationen und Tücken bewusst sein.

Die grösste Limitation von System Events ist das Fakt, dass es keine Garantie gibt das die Nachrichten auch ankommen. Während dies bei MOMs realisiert werden kann, bieten System Events keine solche Funktion an. Hier ein Beispiel, wie eine Nachricht verloren gehen kann.

Nehmen wir an, wir haben ein Projekt A das System Events versendet. Projekt B empfängt diese. Nun wollen wir Projekt B updaten. D.h. wird deaktivieren Projekt B. Wenn nun während dieser Zeit eine Nachricht von Projekt A gesendet wird, so wird Projekt B nach dem aktivieren diese Nachricht nicht sehen. Die Nachricht geht verloren.

Um dies zu verhindern könnte z.B. die Applikation deaktiviert werden.  Man muss jedoch immer noch aufpassen, dass Projekt A nicht vor Projekt B aktiviert wird und schon Nachrichten sendet bevor Projekt B aktiviert ist. Sonst gehen diese Nachrichten verloren.

Ein weiteres Problem ist das senden von Objekten als Parameter und unterschiedliche Prozess Model Versionen (PMVs).

Als Beispiel nehmen wir die beiden Projekte A und B vom vorherigen Beispiel. Projekt B ist abhängig von A.

Projekt A (A1) erstellt Tasks, die nachdem aufnehmen einen System Event mit einem Parameter von einer Datenklasse in Projekt A versenden. Nun erstellen wir eine neue PMV von Projekt A (A2).

Wenn nun in A1 ein Task aufgenommen wird und somit ein System Event mit der Datenklasse als Parameter versendet wird, so wird es in Projekt B zu einer "merkwürdigen" Exception kommen.

Can not cast object projektA.MeineDatenklasse to projektA.MeineDatenklasse.

Der Grund dafür ist, dass MeineDatenklasse die von A1 gesendet wird und MeineDatenklasse die von Projekt B verwendet wird von 2 unterschiedlichen Classloaders kommen. Nämlich vom Projekt Classloader A1 und vom Projekt Classloader A2. Da Projekt B nun A2 verwendet, kann es die Datenklasse von A1 nicht casten, auch wenn sich nichts an der Datenklasse geändert hat.

Eine Lösung um dieses Problem zu vermeiden ist, den Parameter im Projekt A z.B. in einen JSON String zu Serialisieren und in Projekt B wieder in ein Objekt zu Deserialisieren.

Eine weitere Möglichkeit ist nur mit IDs als Parameter zu arbeiten. Die Subscribers können bei Bedarf das Objekt per ID laden.

Message oriented architecture mit Xpert.ivy & JMS Extension

Will man weitergehen als Pub/Sub, stösst man mit System Events schnell auf Grenzen. Im Ausblick für 2013 habe ich angekündigt, dass ich dieses Jahr Extensions für Xpert.ivy veröffentliche werde. Die erste Extension die ich veröffentlichen werde ist eine JMS Extension. Lesen Sie hier mehr darüber.

Fazit

Pub/Sub mit System Events ermöglicht es losgekoppelte Prozesse zu entwickeln und ist eine einfache alternative zu MOMs, wenn man sich den Limitationen bewusst ist und weiss wie mit ihnen umzugehen ist.
Über den Author: Heinrich Spreiter ist der Gründer von xpertivyhacker.ch. Kontaktieren Sie ihn auf Xing und Twitter

Melden Sie sich für den Xpert.ivy hacker Newsletter an und Sie erhalten immer die neusten Tutorials und Tricks zu Xpert.ivy sobald sie publiziert werden.

Ihre Email Adresse wird nur für diesen Newsletter verwendet und nicht an dritte weitergegeben.