« Testprotokolle onlin... | Main | Installationsanleitu... »

BPM Lösungen mit Java EE selbst gebaut

Das Imixs Workflow Projekt ist ein Open Source Projekt welches den Bau von Workflow Management Systemen (WfMS) bzw. Business Process Management Systeme - kurz BPM - erleichtert. Wesentlicher Bestandteil sind die Imixs JEE Workflow Komponenten. Diese können dazu verwendet werden BPM Lösungen auf Basis der Java EE Plattform zu bauen. 

Das folgende Tutorial soll zeigen wie mit Hilfe von Eclipse, Glassfish und Maven eine Imixs BPM Lösung in wenigen Minuten erstellt werden kann.

Voraussetzungen

Für die Ausführung des Tutorials wird ein Applikationsserver, eine Datenbank und die Eclipse IDE benötigt. Als Applikationsserver wird hier der Glassfish Server V 3 eingesetzt, auf welchem die fertige Anwendung verteilt und ausgeführt werden kann. Die Daten werden in einer Datenbank gespeichert. Java EE stellt keine besonderen Anforderungen an eine Datenbank, so können beliebige Datenbanksysteme zum Einsatz kommen. Im Open Source Umfeld fällt die Wahl meist auf MySQL.

Für die Ausführung der BPM Lösung stellt der Applikationsserver zwei wesentliche Funktionen bereit. Zum einen speichert er die Prozessdaten in der Datenbank über einen sogenannten Database-Pool, zum anderen stellt er einen Security-Realm bereit. Der Security-Realm sorgt dafür, dass User sich gegenüber der Anwendung authentifizieren können und unberechtigte Zugriffe unterbunden werden.

Die Imixs Workflow Lösung stellt umfangreiche Funktionen bereit um einzelne Datensätze in Abhängigkeit des Prozessmodells vor unerlaubten Zugriff zu schützen. Für den späteren Zugriff auf das System wird mindestens ein User als Mitglied der Gruppe "IMIXS-WORKFLOW-Manager" benötigt! Mitglieder dieser Gruppe sind auch berechtigt Workflow Modelle zu synchronisieren. Die Konfiguration des Database Pools sowie des Security Realms ist schnell erledigt. Ein vollständige Installationsanleitung für Glassfish und JBoss findet sich auf der Imixs Projekt Seite - Installation.

Eclipse und Maven konfigurieren

Für die Arbeit mit Eclipse wird das Imixs Modeler Plugin zur Modellierung des Prozessmodells, sowie das Maven Plugin von Sonatype für den Bau des JEE Projektes benötigt. Beide Plugins lassen sich innerhalb von Eclipse bequem über den Menübefehl "Help >> install new Software" aus folgenden URLs installieren:

  • http://www.imixs.org/org.imixs.eclipse.updatesite
  • http://m2eclipse.sonatype.org/sites/m2e

Die Web Oberfläche der BPM Lösung soll mit Hilfe von RichFaces realisiert werden. RichFaces ist eine Komponentenbibliothek für JavaServer Faces (JSF), mit der Ajax basierte Web Anwendungen erstellt werden können. Für die Verwendung von RichFaces in Maven muß das JBoss Repository in die eigene Maven Konfiguration mit aufgenommen werden. Die einfachste Art, das RichFaces Repository für Maven sichtbar zu machen, ist es in der Datei %USERPROFILE%\.m2\settings.xml  ein entsprechendes Profile einzurichten. Die settings.xml Datei findet sich unter Windows Systemen in c:\Benutzer\USERNAME\.m2\. Existiert noch keine settings.xml Datei kann diese einfach mit folgendem Inhalt erstellt werden:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <profiles>
        <profile>
            <id>default</id>
            <repositories>
                <!-- JBoss RichFaces Repository -->
                <repository>
                    <id>repository.jboss.com</id>
                    <name>Jboss Repository for
                    Maven</name>
                    <url>http://repository.jboss.com/maven2/</url>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <activeProfiles>
        <activeProfile>default</activeProfile>
    </activeProfiles>
</settings>

Los gehts!

Nach dem die Entwicklungsumgebung Eclipse und die Server Infrastruktur steht kann mit dem Bau der BPM Lösung begonnen werden. Da das Imixs Workflow Projekt vollständig auf Maven basiert, ist das Erstellen einer neuen Anwendung sehr einfach. Über die Auswahl eines sogenannten Maven Archetypes kann ein Template verwendet werden, welches bereits alle notwendigen Komponenten einer Imixs BPM Lösung enthält.

Ein neues Maven Projekt kann in Eclipse über folgendes Menü erzeugt werden:

"File >> new Project...."

 

Über den Projekt Typ "Maven >> Maven Project" gelangt man in den Maven Projekt Wizard. Dieser Wizard erlaubt die Erstellung eines neuen Projektes auf Basis eines Maven Templates. Auf der zweiten Wizard Seite "Select an Archetype" werden alle bekannten Templates angezeigt:

Da das Imixs JEE Template bisher noch nicht verwendet wurde, muss dieses einmalig über den Button "Add Archetype" hinzugefügt werden. Für den Dialog "Add Archetype" sind folgende Angaben notwendig:

  • Archetype Group Id: org.imixs.application
  • Archetype Artivact Id: imixs-workflow-jee-archetype
  • Archetype Version: 0.0.4

 

Maven führt daraufhin den Download des Templates durch welches anschließend ausgewählt werden kann. Auf der letzten Wizard Seite gibt man nun noch verschiedene Parameter für das neue Projekt an:

 

Die Group Id und Artifact Id kann beliebig gewählt werden.

Über die Archetype Eigenschaften können die zuvor am Server eingestellten Informationen über den Database-Pool und den Security Realm vorgenommen werden. Insgesamt können für das Imixs BPM Projekt drei Parameter eingestellt werden:

  • jta-data-source: Diese Wert bestimmt den vom Server zu verwendenden Database Pool in dem später die Prozessdaten gespeichert werden sollen
  • realm: Der realm ist der Server Security Realm der zur Authentifizierung verwendet werden soll 
  • context-root: Der Context-Root bestimmt die Webadresse unter der die Anwendung aufgerufen werden kann. (z.B.: http://localhost:8080/workflow)

Über die Schaltfläche "Finish" kann nun das Projekt erzeugt werden. Maven beginnt automatisch damit sämtliche benötigten Bibliotheken aus dem Internet zu laden und prüft dabei auch alle notwendigen Abhängigkeiten der einzelnen Bibliotheken. Dies erleichtert die Arbeit sehr das man keinerlei Java Bibliotheken manuell Downloaden und installieren muss. So werden auch die RichFaces Komponenten automatisch in das Projekt mit aufgenommen.

Anschließend erscheinen im Package Explorer insgesamt 4 Projekte. Das erste Projekt (hier my-bpm-app) kann für den vollständigen Build und die Installation verwendet werden. Die Unterprojekte -ear, -ejb und -web enthalten jeweils das entsprechende Java EE Modul. 

Die Anwendung builden, deployen und testen

Um nun die fertige Anwendung zu bauen genügt es im Hauptprojekt (my-bpm-app) über das Kontext Menü den Befehl "Run as >> Maven Install" aufzurufen. Daraufhin starte Maven automatisch den kompletten Build Prozess und erstellt eine ausführbare EAR Anwendung welche im Glassfish Server installiert werden kann.


In der Eclipse Ansicht "Console" kann der Build Status verfolgt werden. Der Build ist erfolgreich wenn die Ausgabe "BUILD SUCCESS" erscheint:

......
[INFO] Unnamed - com.foo:my-bpm-app-ejb:ejb:0.0.1-SNAPSHOT  SUCCESS [2.756s]
[INFO] Unnamed - com.foo:my-bpm-app-web:war:0.0.1-SNAPSHOT  SUCCESS [3.899s]
[INFO] Unnamed - com.foo:my-bpm-app-ear:ear:0.0.1-SNAPSHOT  SUCCESS [3.658s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 11.135s
[INFO] Finished at: Sat Jul 17 17:00:55 CEST 2010
[INFO] Final Memory: 3M/15M
[INFO] ------------------------------------------------------------------------

Nun kann die Anwendung bereits auf dem Applikationsserver installiert werden. Das fertige EAR Modul findet sich wieder im Maven Verzeichnis unter:

%USERPROFILE%\.m2\com\foo\my-bp-app-ear\0.0.1-SNAPSHOT

Um das EAR File unter Glassfish zu deployen kann über die Glassfish Web Konsole folgender Menüpunkt angewählt werden:

Applications >> Deploy

 

Danach kann das EAR file aus dem .m2 Verzeichnis ausgewählt werden. Während dem Deployment legt der Java EE Framework automatisch die notwendigen Tabellen Strukturen in der angegebenen Datenbank an. Die manuelle Erzeugung eines speziellen Schemas ist hier also nicht notwendig.

Ein Modell erstellen

Bevor die Anwendung über den Webbrowser geöffnet wird muss nun noch ein Workflow Modell bereitgestellt werden. Die BPM Anwendung in Eclipse besitzt bereits ein Beispiel Workflow Modell. Dieses befindet sich Hauptprojekt unter

/src/workflow/ticket.ixm

Die Datei ticket.ixm kann mit dem Imixs Modeler geöffnet und bearbeitet werden.  Über den Tab "Synchronize" gelangt man zu den Web Service Settings über welche die Modelldaten per REST Service mit der Workflow Anwendung synchronisiert werden. Die URL für den Web Services lautet:

 http://localhost:8080/workflow-rest/model

Wurde der Context Root angepasst, ändert sich diese Adresse entsprechend - /[ROOT_CONTEXT]-rest/model

Über den Link "synchronize model" kann das Modell in die Workflow Anwendung übertragen werden. Hierzu ist eine Anmeldung mit dem zuvor eingerichteten User Account aus der Zugriffsgruppe "IMIXS-WORKFLOW-Manager" erforderlich.

 

Anschließend kann die Workflow Anwendung über den Webbrowser gestartet werden:

http://localhost:8080/workflow

 

...und über den Menübefehl "Meine Aufgaben >> neue Aufgabe >> Ticket" ein erster Ticket Prozess gestartet werden.

Natürlich kann nun das Modell über den Imixs Modeler beliebig verändert und erweitert werden. Die laufende Anwendung muss dazu nicht neu gestartet oder deployed werden. 

Die Web Anwendung weiterentwickeln

Nun kann die erstellte Workflow Anwendung an die eigenen Anforderungen angepasst werden. Wer sich das in Eclipse erzeugte JEE Projekt genauer ansieht, wird feststellen das es aus nur wenigen Java Klassen besteht. Die meiste Funktionalität kommt direkt aus den Imixs JEE Komponenten. Um die Anwendung anzupassen genügt es meist schon die im Web Modul hinterlegen JSF Seiten (.xhtml) zu verändern, und die Java Klasse "WorkflowMB" zu erweitern.

Wer mehr über die hier verwendeten JSF Klassen erfahren möchte, kann Beispiele über die Imixs JSF Tools Projekt Homepage aufrufen oder den Source Code einsehen.