Der Boss im Orchester

Größe: px
Ab Seite anzeigen:

Download "Der Boss im Orchester"

Transkript

1 JBoss jbpm: Graphentheorie für Geschäftsprozesse Der Boss im Orchester von adam Speaker Der Begriff Geschäftsprozess taucht immer wieder in der Analysephase der Anwendung auf. Je konkreter es wird, desto weniger beschäftigt man sich mit den wichtigen Abläufen innerhalb eines Unternehmens. Manchmal bleibt es sogar lediglich bei Worthülsen, welche zwar oft verwendet werden, aber nur wenige Auswirkungen auf die Softwareentwicklung letztendlich haben. Workflow Engines sollten dies ändern und dafür sorgen, dass die Fachlichkeit durchgängig und flexibel realisiert wird. Das JBoss- Projekt jbpm ist eine Open-Source-Realisierung einer Workflow Engine, welche aber auch außerhalb eines Java EE-Containers ausgeführt werden kann. Worflow Engines werden insbesondere aufgrund der gewünschten Flexibilität und Anpassbarkeit eingesetzt. Die Hoffnung liegt in der flexiblen Zusammenstellung der einzelnen Aktivitäten und somit in der Minimierung der Wartung und Änderungskosten nach der Produktionseinführung des Systems. Insb. in den heutigen SOA-Zeiten erlebt man das Revival von konfigurativer Nacheinanderschaltung von Aktivitäten eines Services. Dabei benutzt man nur selten den etwas angestaubten Begriff Workflow Engine und spricht eher von Orchestrierung der Services. In der Praxis wird der Einsatz von Workflow Engines meistens von strategischen Beratern, getrieben, die mit aufwendigen Untersuchungen herausfinden, dass der Einsatz von Workflow Engines Kosten sparen könnte. Diese eher PowerPoint-getriebene Vorgehensweise (kurz PPGV :-)), führt nur selten zum gewünschten Ergebnis, da viele Anwendungen bereits existieren und die flexible Orchestrierung technisch schwer realisierbar oder oft gar nicht möglich ist. Allein die serielle Ausführung von unabhängigen Services innerhalb einer Transaktionsklammer ist sportlicher, als man denkt spätestens jetzt werden Two phase commit -Protokolle wie z.b. XA benötigt. Andererseits gibt es auch Anwendungsfälle, die sich mit Java EE nur schwer realisieren lassen. Asynchrone Vorgänge lassen sich noch relativ einfach abbilden. Dafür steht ja JMS zur Verfügung. Das Warten auf externe Ereignisse ist deutlich schwieriger durchführbar. Die Realisierung von Thread-Sychronisierung und Blockierung im EJB-Container ist gar nicht erst erlaubt. Der Servlet-Container erlaubt zwar dies, aber wahrscheinlich nur, weil man es vergessen hat zu verbieten sowohl der Web-Container als auch der EJB-Container laufen ja meistens in einer JVM-Instanz ab. Neben dem bewussten Warten auf ein bestimmtes Ereignis gibt es auch noch Fälle, die ungewollt den Ablauf blockieren. Dies schlägt sich nicht nur in der Zufriedenheit des Benutzers negativ nieder, sondern kann auch ungewollte Seiteneffekte wie z.b. Deadlocks, leere Thread-Pools und Transaktions-Time-outs verursachen. Potenziell sind alle Vorgänge bzw. Methoden, die länger als zwei bis zehn Sekunden dauern, zunächst verdächtig und sollten auf jeden Fall auf einer Blacklist landen. Ein späteres Review solcher Methoden kann auch Auswirkungen auf die Fachlichkeit der Anwendung haben. Solche Methoden sind meistens für die Koordination von feineren, transaktionalen Aktivitäten zuständig und gehören somit oft einer Facade an. Der Einsatz einer Workflow Engine könnte das Problem beheben. Diese liefert bereits Lösungen für das Warten auf externe Ereignisse und kann auch potenziell die Zuständigkeiten einer hart verdrahteten Fassade übernehmen. Im Gegensatz zu Java wurden Worflow Engines für das Warten entwickelt. Im Gegensatz zu PPGV bringt in diesem Fall eine Worflow Engine wie z.b. jbpm echte Vorteile mit sich. Der Umgang mit Wait-States, Verarbeitung von externen Ereignissen, Persistenz, Auditing, Zuweisung von Aufgaben zu Akteuren wird bereits out of the box unterstützt. Die Vision Die Idee des jbpm-projekts ist die Trennung der Prozessdefinition von der tatsächlichen Realisierung der einzelnen Aktivitäten. Das erlaubt die Trennung der Zuständigkeiten des Prozess-Designers und Entwicklers. Obwohl in der Praxis sich dabei oft um eine Person handeln wird, erhöht die Trennung der Fachlichkeit von der Technik auf jeden Fall die Wartbarkeit des Codes. Der Prozess wird mithilfe eines Aktivitätsdiagramms modelliert. Dieser besteht ja aus Knoten und den Übergängen zwischen den Knoten. Man kann sich also die jbpm Engine als eine VM für die Ausführung von Aktivitätsdiagrammen vorstellen. Ein Aktivitätsdiagramm entspricht einer Prozessdefinition. Bei der Ausführung

2 der Prozessdefinition entsteht eine Prozessinstanz. Nur die Zustände dieser Instanz werden nach der Ausführung eines Knotens persistiert. Alle Knoten einer Prozessinstanz können auf die gleichen Daten zugreifen. Das kann man sich wiederum als eine globale java.util.map, also ein Singleton, vorstellen. Die einzelnen Knoten können über diese Map miteinander kommunizieren. jbpm berücksichtigt nicht nur Java-Aktvitäten (Methodenaufrufe), sondern auch externe Tasks, welche von bestimmten Personen (Rollen) abgearbeitet werden müssen. Insbesondere dieses Feature setzt ein effizientes Warten auf die Benutzereingaben voraus. Ein Ausführungspfad innerhalb eines Systems wird Token genannt. Gleichzeitig hält ein Token auch die Referenz auf den aktuellen Knoten. Die Kommunikation zwischen Systemen oder die Ausführung von menschlichen Tasks kann jedoch die Ausführung des Tokens unterbrechen. Dadurch ergeben sich automatisch Wartezustände. Ein Wartezustand kann durch ein Ereignis, ein so genanntes Signal, beendet werden. Das ist nicht nur auf die Wartezustände beschränkt, im Gegenteil ein Signal verursacht den Übergang von einem Zustand (Knoten) in einen anderen. Falls von einem Knoten lediglich ein einziger Übergang ausgeht, reicht lediglich das Auftreten eines Signals für den Knotenwechsel. Bei mehreren Möglichkeiten muss der Pfad bei dem Auftreten des Signals mitgegeben werden. Dabei handelt es sich um einen einfachen String. Bei der Ausführung eines Knotens (Node) kann auch Geschäftslogik ausgeführt werden. Neben der Durchführung von Geschäftslogik ist ein Node auch für das Warten oder die Übergabe der Kontrolle an andere Knoten zuständig. Nach der jbpm-philosophie sollte jedoch der Prozess von der technischen Realisierung streng getrennt werden. Diese Zuständigkeit erfüllen so genannte Actions. Es handelt sich hierbei um Delegates, welche indirekt einen ActionHandler kennen. Bisher hat sich die Workflow Engine mit sich selbst beschäftigt. Nun kommen die Entwickler ins Spiel. Eine konkrete Realisierung des Interfaces ActionHandler aus dem Package org.jbpm.graph.def wird entsprechend ausgeführt. public interface ActionHandler extends Serializable { void execute( ExecutionContext executioncontext ) throws Exception; } Der ActionHandler kann durchaus mit dem Command Pattern (GoF) verglichen werden. Ähnlich zu den Message Driven Beans sollte man auch hier lediglich zu anderen Geschäftskomponenten verweisen und nicht die fachlichen Vorgänge komplett in der Methode execute ausimplementieren. Auch hier gilt: Trennung der jbpm-technik von der Realisierung der Fachlichkeit :-). Die Technik Die Elemente der beschriebenen Vision wurden direkt auf den jbpm-sourcecode abgebildet. Die bisher beschriebenen Begriffe wie z.b. Node, Token, Transition usw. findet man tatsächlich in der Implementierung der jbpm als Klassen wieder. Nodes Nodes repräsentieren die Bubbles eines Aktivitätsdiagramms. Nodes werden mithilfe von Transitionen verbunden. jbpm bringt bereits einige Node-Implementierungen gleich mit: State: Ist die einfachste Sorte der Nodes. Ein State wartet einfach auf einen Aufruf der Methode signal() der ProcessInstance. Dabei kann es sich um ein externes Ereignis handeln. Ein State ist einfach leer, d.h., hier wird keine Geschäftslogik ausgeführt. Node: Obwohl ein Node die Superklasse von State ist, kann sie wesentlich mehr als der State selbst, d.h., State überschattet die Funktionalität der Klasse Node und tut selber nicht sehr viel. Das ist aus der objektorientierten Sicht zumindest als bedenklich einzustufen Für die Funktionalität bringt allerdings diese Tatsache keine wesentlichen Nachteile mit sich. Ein Node wartet nicht. Im Gegenteil, nach der Ausführung eines Node wird dieser automatisch über die Default-Transition (d.h. bei einer einzigen ausgehenden Verbindung) verlassen. Somit erscheint der Einsatz von Nodes zunächst als nicht besonders sinnvoll. Allerdings verhalten sich die Nodes nur so, wenn diese über noch keinen ActionHandler verfügen. Die Hauptaufgabe von Nodes ist die indirekte Ausführung von Geschäftslogik. Diese wird jedoch nicht durch eine Unterklasse von org.jbpm.graph.def.node realisiert, sondern vielmehr von einer konkreten ActionHandler-Instanz bereitgestellt. Bei dieser Instanz handelt es sich um eine so genannte Node Action, also einen Delegate, welcher die notwendige Logik mit sich bringt. Bei der Assoziation einer Node Action mit einem Node, übergibt der Node die Kontrolle an den konkreten ActionHandler, d.h., der ActionHandler ist nun für die Ausführung des nächsten Übergangs zuständig. Der ActionHandler kann entweder die Ausführung der Default- oder einer beliebigen anderen Transition anstoßen. Der ActionHandler kann somit auch den weiteren Ausführungspfad des Prozesses beeinflussen. Decision: Entscheidungen können von ActionHandlern eines Node getroffen werden. Allerdings wird diese Entscheidung hart kodiert. Ferner ist die Entscheidung lediglich im Sourcecode sichtbar und steht dem Prozessmodellierer nicht zur Verfügung. Die Decision kann man vielmehr als die Vorgabe des Prozessmodellierers an den Entwickler verstehen. Decisions sollten immer verwendet werden, wenn sie für die Fachlichkeit des Geschäftsprozesses eine Rolle spielen. Technische Entscheidungen dagegen, können durchaus in den ActionHandlern getroffen werden diese sind für den Modellierer eher uninteressant. Ähnlich zu dem einfachen Node wird auch hier keine Unterklasse der Decision gebildet. Vielmehr wird diese Zuständigkeit wieder an einen externen DecisionHandler delegiert. public class SpecialDecisionHandler implements DecisionHandler { public String decide(executioncontext execution- Context) throws Exception { return special_transition_name ; } } Auch diese Entscheidungslogik sollte nicht direkt in der Implementierung des

3 Interfaces realisiert werden. Stattdessen sollte man an dieser Stelle lediglich bestehende Geschäftskomponenten bzw. Services ausführen und entsprechend interpretieren. Das Ergebnis der Entscheidungsfindung ist ein einfacher String. Dieser sollte mit einer ausgehenden Transition des aktuellen Decision-Knotens übereinstimmen. TaskNode: Nun der TaskNode dient der Interaktion mit einer externen Rolle. Der TaskNode blockiert solange, bis alle zugewiesenen Tasks von der zuständigen Rolle abgearbeitet werden. Die Abarbeitung der Tasks führt zu einem neuen Signal, welcher letztendlich das Verlassen des TaskNode bedeuten könnte (es können ja noch weitere nicht abgearbeitete Tasks dies verhindern ). Ein TaskNode ist also ein besonders hartnäckiger StateNode. Aus den Tasks entstehen Task-Instanzen, die von den Akteuren (Actors) abgearbeitet werden. Fork: Auch Fork ist ein Node. Die Zuständigkeit des Fork Node ist klar definiert: die Parallelisierung des Prozesses. Der Fork Node transformiert eine eingehende Transition in zwei ausgehenden. Die Funktionalität deckt sich mit den Forks aus den Aktivitätsdiagrammen überein. Join: Der Join Node ist das Gegenteil eines Fork Node. Dieser konvertiert die zwei eingehenden Transitionen wieder in eine ausgehende. Ein Join Node wartet so lange, bis alle parallelisierten, eingehenden Transitionen ankommen. Erst dann wird der Join Node über die Default-Transition verlassen. Somit ist ein Join Node konzeptionell mit dem aus UML bekannten Join-Bar absolut vergleichbar Event Actions und Node Actions zu unterscheiden. Event Actions können an jedem Node angemeldet werden. Dabei muss der entsprechende Zustandsübergang wie z.b. After Signal, Before Signal, Node Enter oder Node Leave angegeben werden. Die Action wird dann beim Auftreten des entsprechenden Ereignisses ausgeführt. Da die Event Action eigentlich nur von außen die Transitionen beobachten, dürfen diese den Ausführungspfad nicht beeinflussen. Anders sieht es bei den Node Actions aus. Diese werden insbesondere bei den Nodes, also der Superklasse, angewendet. Node Actions repräsentieren die technische Umsetzung der Nodes und können durchaus die weitere Ausführung des Prozesses beeinflussen. Node Actions können sogar die Aufgaben der Decision Nodes übernehmen. Scheduler Bisher mussten die einzelnen Knoten von einem externen Actor getrieben werden. Die Workflow Engine reagiert lediglich auf die externen Ereignisse wie z.b. Benutzereingaben oder Nachrichten von anderen Systemen. Bisher wurde allerdings ein wichtiger Actor der Timer nicht berücksichtigt. Ein Timer kann zu jedem State deklarativ zugeordnet werden. Dabei ist explizite Erzeugung und Zerstörung eines Timer beim Auftreten der Events Node Enter und Node Leave möglich. Bei der Erzeugung eines Timer können sein Timeout und die Wiederholungsanzahl angegeben werden. Nach dem Time-out kann eine gewählte Aktion ausgeführt werden. Falls konfiguriert, kann auch die aktuelle Node mithilfe einer angegebenen Transition verlassen werden. Timer werden aktiv, wenn der aktuelle Knoten nicht vor dem Ablauf des Timers bereits verlassen wird. Timer sind also sehr hilfreich für die Realisierung von Time-outs (zum Beispiel bei der Überwachung der Benutzereingaben) oder für die Implementierung von automatischen Zustandsübergängen. Die Timer werden mithilfe eines Scheduler ausgeführt. Dieser braucht für die asynchrone Ausführung der Timer einen Thread. Dies ist aber in einem EJB-Container nicht erlaubt. Um das Deployment in einen Application Server dennoch zu ermöglichen, wird ein spezielles Servlet bereitgestellt. Das Servlet org.jbpm.web. JbpmThreadsServlet ist lediglich für die Instanziierung des Schedulers und Starten eines Thread zuständig. Nun wird die jbpm Engine im Web-Container ausgeführt, die ActionHandler-Implementierungen können aber bei Bedarf auch Remote auf die entsprechenden Service- Implementierungen im EJB-Container zugreifen. Auditing/Activity Monitoring Die jbpm Engine bringt einen eigenen Logging-Service mit. Dabei handelt es sich jedoch keineswegs um eine weitere Konkurrenz zu den Frameworks log4j oder java.util.logging. Im Gegenteil bei dem LoggingService handelt es sich um systematisches Monitoring der jbpm-vorgänge. Der org.jbpm.logging. Action Nodes werden insbesondere von den Prozessmodellierern verwendet. Dabei interessiert weniger die Realisierung dieser Prozessvorgaben. Jedem Knoten können sog. Actions zugeordnet werden. Jede Action kennt einen ActionHandler, welcher durchaus mit dem bekannten Interface java.awt.event.actionevent verglichen werden kann. ActionHandler können die Ausführung der Geschäftslogik anstoßen. Allerdings ist hierbei zwischen Anzeige

4 Persistenz jbpm verwendet nicht nur für die Persistierung der Logs das Hibernate-Framework, vielmehr handelt es sich hier um ein durchgängiges Konzept. Für alle bisher vorgestellten Entitäten wie zum Beispiel Node, State, Token, Timer, Actor usw. existiert ein Hibernate-Mapping, somit können automatisch alle Entitäten persistiert werden. An dieser Stelle merkt man die Vorzüge der transparenten Persistenz. Die objektorientierten Strukturen können ohne umständliche Konvertierungen direkt und transparent am Ende der Transaktion in die Datenbank weggeschrieben werden. Die Persistierung der Objekte wurde fachlich in unterschiedliche Bereiche getrennt. Prozessrelevante Entitäten werden mithilfe der GraphSession persistiert und auch geladen. Es können sogar zur Laufzeit der Engine neue Prozessdefinitionen persistiert werden. Die ContextSession ist dagegen für die Persistierung der Prozessvariablen zuständig. Dabei handelt es sich um den Zustand des Prozesses, welcher tabellenartig (ähnlich zu einer Map) abgelegt wird. Für den Zugriff auf die Prozessvariablen wird jedoch nicht direkt mit der ContextSession, sondern vielmehr mit der Context Instance gearbeitet. ProcessInstance processinstance = new ProcessInstance(processDefinition); ContextInstance contextinstance = processinstance.getcontextinstance(); contextinstance.setvariable( key, value ); contextinstance.setvariable( date, new Date()); Abb. 1: Der jbpm-designer log.loggingservice wird bei Zustandsübergängen, Node Events, Ausführung von Timern usw. für die Persistierung des fachlichen Zustands verwendet. Standardmäßig verwendet der Logging Service für die Persistierung der Log- Einträge Hibernate. Die Reihenfolge der Einträge bleibt natürlich erhalten, es wird das Datum, Token, Actor-ID bereits von der abstrakten Klasse org.jbpm.logging.log.processlog vorgegeben. Von dieser abstrakten Klasse erben andere, spezialisierte Logs wie z.b. NodeLog, welche noch zusätzliche Informationen (bei NodeLog die Dauer der Ausführung, den Knoten selbst, das Datum/Uhrzeit des Eintritts und des Austritts des Knotens) mit sich bringen. Mit diesem Ansatz werden keine flachen Dateien, sondern vielmehr objektorientierte Strukturen weggeschrieben. Dabei werden nicht nur die zusätzliche Information, sondern auch die korrespondierenden Instanzen festgehalten. Eine objektorientierte Sicht auf die Logs öffnet ganz neue Möglichkeiten der Auswertung. Der Zugriff auf die Daten kann sowohl über die bereits bestehenden Hibernate-Entitäten als auch für z.b. Report-Zwecke direkt über JDBC wie z.b. DAOs erfolgen. Es können zunächst alle Java-Datentypen als Variablen abgespeichert werden. Allerdings wird hier ein Objekt erwartet, sodass man entweder die Verpackung der elementaren Datentypen in die Wrapper selbst übernimmt oder dies an das Java 5 Autoboxing delegiert. Zusätzlich können noch alle java.io.serializable-instanzen gespeichert werden, bei ausgefallenen Anforderungen müssen jedoch eigene Implementierungen des org.jbpm.context.exe. Converter diese Aufgabe übernehmen. Die Konvertierung und Rückkonvertierung einer nicht persistenten Instanz in eine persistente Repräsentation muss von der Implementierung dieses Interfaces bereitgestellt werden. Es existiert noch eine Reihe von weiteren Sessions, eine spezielle LoggingSession, TaskMgmtSession, SchedulerSession usw. Die hier vorgestellten Sessions umhüllen eine Hibernate-Session und lassen sich gut mit dem DAO Pattern vergleichen. Dabei erhält nicht jedes DAO eine neue Hibernate-Instanz, sondern vielmehr einen bestehenden Singleton. Diese Aufgabe übernimmt der Persistence Service, welche eine Facade zu der jbpm- Persistenz realisiert. Die thematische Gruppierung der Sessions erleichtert den Umgang mit der Persistenz. Die Tool-Unterstützung jbpm kommt mit einem eigenen Designer-Plug-in, welches aber getrennt heruntergeladen werden muss. Nach der Eclipse-Installation (Eclipse wird bereits unterstützt), kann mit dem Projekt-Wizard ein jbpm Process Project er

5 stellt werden. Das wird auch empfohlen, da dadurch ein einfacher Prozess mit funktionierendem JUnit-Test erzeugt wird. Die Installation des Designers verläuft problemlos es werden auch keine Libraries oder Projekte wie z.b. GEF vorausgesetzt. Der jbpm-designer erlaubt visuelle Modellierung von Prozessen. Beim Speichern erfolgt die Synchronisierung mit der Datei prozessdefinition.xml. Der Designer ist zwar komfortabel, aber unterstützt noch nicht alle Features wie z.b. Timer. Entwickler werden wahrscheinlich nach wenigen Klicks die XML-Datei direkt editieren, die Prozess-Designer werden sich sträuben, ihre geliebten Bubble-Tools aufzugeben, um mit einem Eclipse-Plug-in weiterzumodellieren. Hier liegt das Problem. Das Diagramm sieht zwar wie ein stereotypisiertes Aktivitätsdiagramm aus, das Ergebnis wird jedoch direkt in einer JPDL-Datei abgelegt (die JBoss-Prozessdefinition). Somit können Aktivitätsdiagramme aus bestehenden Modellen nicht wieder verwendet werden. Andererseits kann man so den jbpm-designer ohne ein UML-Tool verwenden. Da das JPDL-Schema einfach ist, kann man es auch generieren. Dies wäre insbesondere für Projekte sinnvoll, in denen UML-Werkzeuge bereits für die Modellierung der Fachlichkeit verwendet werden. Die nichtfunktionalen Qualitäten Neben den rein funktionalen Anforderungen sind auch die nichtfunktionalen Anforderungen der jbpm für den reellen Einsatz interessant: Skalierbarkeit/Cluster-Fähigkeit: Die Prozessinstanzen der jbpm Engine sind durchaus zustandsbehaftet. Neben den reinen Informationen über den aktuellen Prozesszustand (z.b. die Referenz auf den aktuellen Knoten) können ja auch nahezu beliebige Benutzerdaten mitverwaltet werden. Umso interessanter ist die Frage, ob so ein Ansatz überhaupt skalieren kann. Die Zustände der Engine werden von Hibernate verwaltet. Der Zeitpunkt der Persistierung des Zustands kann mithilfe von Transaktionen bestimmt werden. Die Skalierbarkeit der jbpm Engine wird also direkt von der jeweiligen Transaktionsstrategie beeinflusst. Nach dem Commit der Transaktion ist der ganze Zustand der Engine persistent. Da eine Prozessinstanz den ganzen Zustand in einer zentralen Datenbank verwaltet, ist der Ansatz auch clusterfähig, da zwischen den atomaren Prozessschritten die Cluster-Instanzen sogar gewechselt werden können. Die Cluster-Fähigkeit und der Grad der Skalierbarkeit der jbpm Engine sind mit einer Stateless Session Bean vergleichbar, welche innerhalb eines Methodenaufrufs auf Hibernate-Entitäten zugreift. Die Cluster-Fähigkeit der jbpm könnte durch den Scheduler gefährdet werden. Dieser wird ja mithilfe eines Servlets implementiert, welches in der Initialisierungsphase einen Thread startet. Der Thread übernimmt aber lediglich die Rolle eines Taktgebers. Da der Ausführungsplan auch in der Datenbank persistiert wird, ist auch dies unkritisch im Cluster-Betrieb wird lediglich öfter auf die Jobtabelle zugegriffen. Dennoch sollte man im Cluster-Betrieb vorsichtig sein. In der Standard-Konfiguration ist der Second-Level-Cache eingeschaltet. Ferner könnten sich potenziell die Cluster-Knoten gegenseitig die Datenbank überschreiben. Man sollte hier unbedingt die Konsistenz des Prozesszustands mit pessimistischen (z.b. select for update, was aber nur selten empfohlen werden kann) oder optimistischen Locks sicherstellen. Es ist aber nichts Ungewöhnliches lediglich ein Standardproblem beim Einsatz von OR-Frameworks mit eingeschaltetem Cache im Clusterbetrieb Anpassbarkeit/Deployment: jbpm wird in JBoss bevorzugt als ein SAR oder WAR deployt. Bei anderen Application-Servern kann man sich für ein WAR oder EJB-JAR entscheiden, wobei die Ausführung des Scheduler im EJB-Container zu Problemen führen kann. Neben dem eher statischen Deployment können zur Laufzeit neue Prozessdefinitionen installiert werden. Dies funktioniert sogar im laufenden Betrieb sehr gut. Getrennte Classloader (jede Prozessinstanz wird in einem eigenen Classloader ausgeführt) ermöglichen sogar gleichzeitige Ausführung von unterschiedlichen Versionen einer Prozessdefinition. Ferner können sogar neue Prozessdefinitionen in zum Beispiel ActionHandlern erzeugt werden. Die jbpm-architektur macht einen durchdachten und klaren Eindruck. Die Trennung der Definition von der Instanz (beispielsweise ProcessDefintion, ProcessInstance) erlaubt eine hohe Erweiterbarkeit. Der Kern der Engine wurde in unterschiedliche Module partitioniert, wobei lediglich das Prozess-Modul unbedingt erforderlich ist, alle anderen Module sind optional. Für typische BPM-Anwendungsfälle wird eine Erweiterung der jbpm jedoch nicht notwendig sein, im Gegenteil meistens Anzeige

6 müssen lediglich Prozess-Listener implementiert werden. Konformität: Der Geschäftsprozess kann zwar auch zur Laufzeit der Anwendung definiert werden, im Normalfall wird aber solche hohe Flexibilität nicht benötigt. Der Geschäftsprozess wird zu diesem Zweck in einer XML-Datei definiert. Die Java Process Definition Language (JPDL 3.1) ist zwar proprietär, dafür aber sehr einfach aufgebaut. Die hier beschriebenen Konzepte bzw. Entitäten werden direkt auf XML Tags abgebildet. Dies erhöht die Wartbarkeit und erleichtert auch ggf. die Generierung der Prozessdefinition. Es existiert auch eine BPEL-Erweiterung, allerdings erst im Alpha-Status. Im Gegensatz zu den anderen Modulen wird die BPEL- Erweiterung mit einer Custom -Lizenz vertrieben. Somit sollte man sich im kommerziellen Umfeld erkundigen, was das konkret bedeutet. Alle anderen Module sind mit der LGPL-Lizenz erhältlich, was den kommerziellen Einsatz uneingeschränkt erlaubt. Auch bei reinen Rich-Anwendungen muss leider immer ein WAR mitdeployt werden. Der Scheduler benötigt einen Thread, welcher ja im EJB-Container nicht gestartet werden kann. Abhilfe könnte hier eine MBean oder eine Timer Bean schaffen diese könnte die Zeitgebung des Scheduler übernehmen. Fazit jbpm macht einen sehr guten Eindruck. Allerdings war die Qualität der JBPM Engine bereits vor der Übernahme durch JBoss Inc. recht hoch. Für Einsteiger ist besonders das Starter-Kit zu empfehlen. Hierbei handelt es sich um einen vorkonfigurierten JBoss mit einigen Beispielprojekten, eine vorinitialisierte HSQL-DB, Schemas für die gängige Datenbanken und eine ungewöhnlich gute Dokumentation. Somit ist jbpm auf jeden Fall einsetzbar. Man sollte jedoch SOA, Orchestrierung, Choreographie nur dort einsetzen, wo es fachlich tatsächlich auch sinnvoll ist. Die meisten serverseitigen Anwendungen kommen auch hervorragend ohne eine Workflow Engine aus. Andererseits lassen sich mit jbpm lang laufende Transaktionen, Time-outs, Benutzerwechsel oder Auditing einfach und elegant lösen. Bei allen Buzzwords und Hypes darf man die funktionalen Anforderungen des Kunden nie vergessen. Zunächst die Fachlichkeit, dann die Technik Wie Professional der Sourcecode von jbpm tatsächlich ist, merkt man nach einem kurzen Review sofort er ist so klar und verständlich, dass man ihn nicht mit Javadoc-Kommentaren verunreinigen möchte :-). Adam Bien arbeitet als freiberuflicher Berater und Dozent im Enterprise-Java-Bereich. Seine praktische Erfahrung stammt aus seiner Mitarbeit an vielen Java- und Java EE-Projekten, in denen er als Architekt und Softwareentwickler tätig ist. Er entwickelt bereits seit JDK 1.0 mit Java und hat die Bücher Enterprise Java Frameworks, J2EE Patterns, J2EE HotSpots und Struts sowie zahlreiche Fachartikel zur verteilten Java-Programmierung verfasst. Adam Bien ist BEA Technical Director, Mitglied des Advisory Board der JAX in Frankfurt und Expert Group Member des Java Community Process (JCP). Momentan beschäftigt er sich mit der Model Driven Architecture (MDA), EAI-Komponentenarchitekturen für Java EE und.net und einigen Buchprojekten. Links [1] jbpm.org [2] Anzeige

Die nächste Revolution in der modelgetriebenen Entwicklung?

Die nächste Revolution in der modelgetriebenen Entwicklung? Die nächste Revolution in der modelgetriebenen Entwicklung? Me Johannes Kleiber Software Engineer bei FMC Johannes.Kleiber@fmc-ag.com Themen Überblick Window Workflow Foundation Workflows modellieren WF

Mehr

Enterprise Java Beans Einführung

Enterprise Java Beans Einführung Enterprise Java Beans Einführung Vorlesung 8 Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht EJBs im JEE Umfeld Verschiedene Typen von EJBs Von der Javaklasse

Mehr

Entwicklung von Web-Anwendungen auf JAVA EE Basis

Entwicklung von Web-Anwendungen auf JAVA EE Basis Entwicklung von Web-Anwendungen auf JAVA EE Basis Java Enterprise Edition - Überblick Prof. Dr. Bernhard Schiefer Inhalt der Veranstaltung Überblick Java EE JDBC, JPA, JNDI Servlets, Java Server Pages

Mehr

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java

Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Erstellung eines Frameworks für Shop Systeme im Internet auf Basis von Java Präsentation zur Diplomarbeit von Übersicht Java 2 Enterprise Edition Java Servlets JavaServer Pages Enterprise JavaBeans Framework

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans Java Enterprise Edition - Überblick Was ist J2EE Java EE? Zunächst mal: Eine Menge von Spezifikationen und Regeln. April 1997: SUN initiiert die Entwicklung

Mehr

Warum EJB Technologie (1)?

Warum EJB Technologie (1)? Datenbanken und Informationssysteme 2 SS 2004 Prof. Dr. Stefan Böttcher Universität Paderborn Datenbanken und Informationssysteme 2 - Prof. Dr. Stefan Böttcher - SS 2004 Folie EJB - 1 Warum EJB Technologie

Mehr

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine

OpenCms jbpm Workflow Engine. OpenCms und jbpm Workflow Engine OpenCms und jbpm Workflow Engine Geschäftliche Abläufe in einem Unternehmen folgen zu einem großen Prozentsatz beschreibbaren Prozessen, den so genannten Geschäftsprozessen. Diese Erkenntnis führte zum

Mehr

Geschäftsprozesse und Regeln mit jbpm und Drools. ein unschlagbares Team

Geschäftsprozesse und Regeln mit jbpm und Drools. ein unschlagbares Team Geschäftsprozesse und Regeln mit jbpm und Drools ein unschlagbares Team Bernd Rücker Wer bin ich? Berater, Trainer, Coach Softwareentwickler Committer im JBoss jbpm-projekt Themen: BPM, SOA, Process Execution

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany

J2EEKurs. Enterprise JavaBeans Einführung. Peter Thiemann. Sommercampus J2EEKurs, Freiburg, Germany, 10.-14.10.2005. Universität Freiburg, Germany Enterprise JavaBeans Einführung Universität Freiburg, Germany Sommercampus, Freiburg, Germany, 10.-14.10.2005 Inhalt Allgemeines Motivation Rollen Aufbau einer EJB Arten von Beans Enterprise JavaBeans

Mehr

BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com

BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com BPMN 2.0 gehört in den Werkzeugkasten JEDES Java Entwicklers! bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Was ist Prozessautomatisierung? Das Ganze ist ein BPMN Prozess Aber auch (und

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

ORACLE Business Components for Java (BC4J) Marco Grawunder

ORACLE Business Components for Java (BC4J) Marco Grawunder ORACLE Business Components for Java (BC4J) Marco Grawunder Gliederung 2 Probleme von J2EE/EJB J2EE-Pattern Lösungsansatz: BC4J Architektur einer BC4J-Anwendung Komponenten Entity Objects View Objects Application

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

3. Konzepte der objektorientierten Programmierung

3. Konzepte der objektorientierten Programmierung 3. Konzepte der objektorientierten Programmierung 3.1 Basiskonzepte 3.2 Generalisierung / Spezialisierung 3.3 Aggregation 3.4 Assoziation 3.5 Nachrichten 3.6 Polymorphismus 3. Konzepte der Objektorientierung

Mehr

Seminar Business Process Management und Workflow-Technologie: Grundlagen, Produkte, Forschung

Seminar Business Process Management und Workflow-Technologie: Grundlagen, Produkte, Forschung IBM WebSphere Process Server Seminar Business Process Management und Workflow-Technologie: Grundlagen, Produkte, Forschung AGENDA 1. Überblick 2. WebSphere Process Server 3. Komponenten 4. Präsentation

Mehr

JBoss 7 als Plattform für hochverfügbare Anwendungen

JBoss 7 als Plattform für hochverfügbare Anwendungen JBoss 7 als Plattform für hochverfügbare Anwendungen Orientierungspunkt 04/2013 24.05.2013, OIO Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld Java EE seit 1998 Konzeption und Realisierung

Mehr

Software Engineering II

Software Engineering II Software Engineering II Codegenerierung für den SmartIO Editor mit der Modeling Workflow Engine Wintersemester 10/111 Fachgebiet Software Engineering Albert Zündorf / Wiederholung Bisher im Laufe des Semesters

Mehr

Enterprise JavaBeans

Enterprise JavaBeans Enterprise JavaBeans Sebastian Pipping 18. Dezember 2006 This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License. Teil I J2EE J2EE Was ist J2EE? Was ist J2EE?

Mehr

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java

Willkommen zur Vorlesung. Objektorientierte Programmierung Vertiefung - Java Willkommen zur Vorlesung Objektorientierte Programmierung Vertiefung - Java Zum Dozenten Mein Name: Andreas Berndt Diplom-Informatiker (TU Darmstadt) Derzeit Software-Entwickler für Web- Applikationen

Mehr

Software-Architektur Design Patterns

Software-Architektur Design Patterns Design Patterns Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München SS 2015 Standardwerk Gang of Four: Erich Gamma, Richard Helm, Ralph Johnson & John Vlissides: Design Patterns:

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

Mehr

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak

ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS. Piotr Kasprzak ENTWICKLUNGS- UND LAUFZEITUMGEBUNG DER CSE: ECLIPSE UND JBOSS Piotr Kasprzak Agenda Laufzeitumgebung Java EE (J2EE) Motivation APIs / Technologien JBoss Entwicklungsumgebung Eclipse Ausblick Java EE -

Mehr

Java Batch Der Standard für's Stapeln

Java Batch Der Standard für's Stapeln Java Batch Der Standard für's Stapeln Berlin Expert Days 18.09.2015 Dirk Weil, GEDOPLAN GmbH Dirk Weil GEDOPLAN GmbH, Bielefeld GEDOPLAN IT Consulting Konzeption und Realisierung von IT-Lösungen GEDOPLAN

Mehr

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH

Erfahrungen und Erkenntnisse. Klaus Richarz, HBT GmbH Erfahrungen und Erkenntnisse Klaus Richarz, HBT GmbH Java Enterprise Edition 5.0 JBoss Seam Konsequenzen für Realisierung Qualitätssicherung Build & Deployment Fazit & Empfehlungen JBoss Seam in Projekten,

Mehr

Module für eine Java-Administrationsschulung

Module für eine Java-Administrationsschulung Module für eine Java-Administrationsschulung Schulungsmodule 1 Java Administration allgemein...2 1.1 Java und die Virtual Machine...2 1.2 Java EE Bestandteile...2 1.3 Java Management Extensions...2 1.4

Mehr

Technische Beschreibung: EPOD Server

Technische Beschreibung: EPOD Server EPOD Encrypted Private Online Disc Technische Beschreibung: EPOD Server Fördergeber Förderprogramm Fördernehmer Projektleitung Projekt Metadaten Internet Foundation Austria netidee JKU Linz Institut für

Mehr

Business Process Execution Language. Christian Vollmer Oliver Garbe

Business Process Execution Language. Christian Vollmer <christian.vollmer@udo.edu> Oliver Garbe <oliver.garbe@udo.edu> Business Process Execution Language Christian Vollmer Oliver Garbe Aufbau Was ist BPEL? Wofür ist BPEL gut? Wie funktioniert BPEL? Wie sieht BPEL aus?

Mehr

Programmierung von Client/Server- Anwendungen

Programmierung von Client/Server- Anwendungen Programmierung von Client/Server- Anwendungen Komponenten des Web-Containers (Java EE) SoSe2015 Prof. Dr. Andreas Schmietendorf 1 Übersicht zur Vorlesung Entwicklung der Java Enterprise Edition Servlets,

Mehr

Client/Server-Systeme

Client/Server-Systeme Fachbereich Informatik Projektgruppe KOSI Kooperative Spiele im Internet Client/Server-Systeme Vortragender Jan-Ole Janssen 26. November 2000 Übersicht Teil 1 Das Client/Server-Konzept Teil 2 Client/Server-Architekturen

Mehr

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel

VS12 Slide 1. Verteilte Systeme. Vorlesung 12 Sebastian Iwanowski FH Wedel VS12 Slide 1 Verteilte Systeme Vorlesung 12 Sebastian Iwanowski FH Wedel Mögliche Plattformen für Web Services VS12 Slide 2 VS12 Slide 3 Java-Software für verteilte Systeme J2EE: Java 2 Enterprise Edition

Mehr

Architektur iterativ auf Basis von OSGi entwickeln

Architektur iterativ auf Basis von OSGi entwickeln Architektur iterativ auf Basis von OSGi entwickeln Ein Vortrag von Sven Jeppsson (syngenio AG) und Karsten Panier (Signal Iduna Gruppe) 1 Inhalt Motivation Architektur Architektur Evolution OSGi Refactoring

Mehr

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen

FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen FWP Aktuelle Technologien zur Entwicklung verteilter Java- Anwendungen Sommersemester 2013 Michael Theis, Lehrbeauftragter Java EE Spezifikation definiert ein Programmiermodell für Applikationen die Eigenschaften

Mehr

SOA und Prozessmanagement: Herausforderung und aktuelle Arbeiten

SOA und Prozessmanagement: Herausforderung und aktuelle Arbeiten SOA Prozessmanagement: Herausforderung aktuelle Arbeiten Projekt-Kurzvorstellung beim Gründungstreffen des EMISA-Arbeitskreises Entwicklung agiler, prozessorientierter Informationssysteme Reiner Siebert,

Mehr

Datenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg

Datenhaltung für Android Model First. 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Datenhaltung für Android Model First 30.03.2011 Christian Ingenhaag, Frederik Götz, Carl Steeg Agenda Datenhaltung in Android Motivation / Projektziele Projekt Umsetzung Stand der Entwicklung Fazit 2 Datenhaltung

Mehr

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com

Prozessautomatisierung mit BPMN 2.0 und Java. bernd.ruecker@camunda.com Prozessautomatisierung mit BPMN 2.0 und Java bernd.ruecker@camunda.com Bernd Rücker camunda services GmbH Demo Was ist Prozessautomatisierung mit BPMN 2.0 Prozessautomatisierung mit Process Engine Monitoring

Mehr

EJB3.0 Unit-Testing Reloaded

EJB3.0 Unit-Testing Reloaded EJB3.0 Unit-Testing Reloaded Werner Eberling werner.eberling@mathema.de www.mathema.de Werner Eberling, MATHEMA Software GmbH - EJB3.0 - Unit-Testing Reloaded (G4 - Folie 1) Java Forum Stuttgart 2007 Automatisiertes

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000

Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 Prüfungszeuch im Fach Objektorientierte Programmierung WS 2000 A. Beschreibung der Projektarbeit. Welche Aufgabe haben Sie im Rahmen der Projektarbeit gelöst? 2. Mit welchen Tools bzw. Programmen (Anwendung,

Mehr

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1

Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1 Objektorientierter Software-Entwurf Die Unified Modeling Language 4 1 Die Unified Modeling Language Die UML (hier in der Version 0.9) ist ein Satz von Notationen zur Beschreibung objektorientierter Softwaresysteme.

Mehr

Microsoft Office SharePoint Services Workflow Limitierungen

Microsoft Office SharePoint Services Workflow Limitierungen Microsoft Office SharePoint Services Workflow Limitierungen Dorner Stefan, namics AG April 2007 Inhaltsverzeichnis Allgemeines... 3 Workflow Foundation Thread Pool-Modelle... 5 DefaultWorkflowSchedulerService...

Mehr

objectif / SOA /.NET Inhalt Technologien ObjectiF Beispiel Vergleich: ObjectiF Rational Rose Quellenverzeichnis 20.01.2008 Christian Reichardt 2 Technologien 20.01.2008 Christian Reichardt 3 Methodenaufruf

Mehr

Inhalt: Version 1.7.5

Inhalt: Version 1.7.5 Inhalt: Objekte ohne Methoden Objekte mit einfachen Methoden Objekte und Methoden mit Parametern Objekte und Methoden mit Rückgabewert Objekte mit einem Array als Attribut Beziehungen zwischen Objekten

Mehr

Kundenanforderungen. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw, 24.05.2013

Kundenanforderungen. Hochschule Luzern Technik & Architektur. Software Komponenten FS13. Gruppe 03 Horw, 24.05.2013 Software Komponenten FS13 Gruppe 03 Horw, 24.05.2013 Bontekoe Christian Estermann Michael Moor Simon Rohrer Felix Autoren Bontekoe Christian Studiengang Informatiker (Berufsbegleitend) Adresse Telefon

Mehr

jbpm meets ESB Enterprise jbpm & ESB von Markus Demolsky und Bernd Rücker

jbpm meets ESB Enterprise jbpm & ESB von Markus Demolsky und Bernd Rücker jbpm & ESB Enterprise jbpm meets ESB Prozesse, Agilität, heterogene Systeme das sind Themen, die uns Informatiker heute umtreiben. Als Lösungsansätze kursieren Konzepte wie BPM und SOA. Als konkrete Produkte

Mehr

Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware

Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware Einsatz von UML und C++ am Beispiel einer Satelliten-Lageregelungssoftware Dipl. Inform. Olaf Maibaum DLR, Abt. Simulations- und Softwaretechnik DLR, Abt. Simulations- und Softwaretechnik 1 Übersicht Bird-Satellit

Mehr

Softwareentwicklung mit JAVA EE

Softwareentwicklung mit JAVA EE Softwareentwicklung mit JAVA EE Beispiel Framework: Struts Was ist? Open Source Framework zum Bau von Web Applikationen Home Page http://jakarta.apache.org/struts Teil des Apache Jakarta Project Unterstützt

Mehr

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org)

Dynamische Plug-ins mit Eclipse 3. Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Dynamische Plug-ins mit Eclipse 3 Martin Lippert (martin.lippert@it-agile.de, www.it-agile.de) Tammo Freese (freese@acm.org) Überblick Die Ausgangslage Dynamische Plug-ins Warum? Eclipse 3 Die OSGi-basierte

Mehr

Schritt 4: Hallo Enterprise Bean

Schritt 4: Hallo Enterprise Bean Prof. Dr. Th. Letschert FB MNI JEE Schritt 4: Hallo Enterprise Bean Einstieg: EJBs erzeugen und nutzen Meine erstes EJB Projekt Enterprise Beans sind eine Backend Technologie, die mit unterschiedlichen

Mehr

jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG

jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG jbpm5 in Java EE 6 Marek Iwaszkiewicz Pascal Schaerf akquinet AG Über uns Developer @ akquinet AG Marek Iwaszkiewicz marek.iwaszkiewicz@akquinet.de JBoss Compentence Center Pascal Schaerf pascal.schaerf@akquinet.de

Mehr

Oracle Weblogic Administration Grundlagen

Oracle Weblogic Administration Grundlagen Oracle Weblogic Administration Grundlagen Seminarunterlage Version: 1.07 Version 1.07 vom 14. September 2015 Dieses Dokument wird durch die veröffentlicht.. Alle Rechte vorbehalten. Alle Produkt- und Dienstleistungs-Bezeichnungen

Mehr

Rechnernetze Projekt SS 2015

Rechnernetze Projekt SS 2015 30/03/15 Seite 1 Aspektorientierte Programmierung logische Aspekte (Concerns) im Programm separieren Crosscutting Concerns (Ziel: generische Funktionalitäten über mehrere Klassen hinweg zu verwenden -

Mehr

Guten Tag! CampusSource. Die CSE Integration Platform. CampusSource Engine. Christof Pohl Softwareentwicklung Medienzentrum Universität Dortmund

Guten Tag! CampusSource. Die CSE Integration Platform. CampusSource Engine. Christof Pohl Softwareentwicklung Medienzentrum Universität Dortmund Engine Die CSE Integration Platform Guten Tag! Christof Pohl Softwareentwicklung Medienzentrum Universität Dortmund Integriertes Informationsmanagement mit der Engine - A2A vs. EBI Folie 2 Integration

Mehr

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08

Rapid I/O Toolkit. http://projects.spamt.net/riot. Alexander Bernauer alex@copton.net 08.12.08 Rapid I/O Toolkit http://projects.spamt.net/riot Alexander Bernauer alex@copton.net 08.12.08 Inhalt Motivation Architektur Beispiel I/O Features Ausblick Motivation Problemstellung Vorgaben Datenverarbeitung

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Clustering von Application Servern am Beispiel von JBoss 3.2

Clustering von Application Servern am Beispiel von JBoss 3.2 Clustering von Application Servern am Beispiel von JBoss 3.2 Cluster Workshop iternum GmbH Alexanderstraße 7 60489 Frankfurt/Main www.iternum.com Agenda Clustertechnik allgemein Was ist Clustering? Gründe

Mehr

Web-Anwendungsentwicklung mit dem Delivery Server

Web-Anwendungsentwicklung mit dem Delivery Server Web-Anwendungsentwicklung mit dem Delivery Server Java-Framework auf Basis der Open API Bernfried Howe, Webertise Consulting GmbH WEBertise Consulting Dipl. Informatiker (Wirtschaftsinformatik) 2001-2010

Mehr

Analyse und Modellierung von Informationssystemen

Analyse und Modellierung von Informationssystemen Analyse und Modellierung von Informationssystemen Dr. Klaus Höppner Hochschule Darmstadt Sommersemester 2013 1 / 19 Einführung: Entwurfsmuster Erzeugungsmuster Fabrik-Muster Singleton-Muster Beispiel 2

Mehr

Flexible Produktlinien

Flexible Produktlinien Flexible Produktlinien Geschäftsregeln in einer modellgetriebenen Architektur Frank Egger und B. Lofi Dewanto OOP 2007 Agenda Situation und Herausforderung Lösung: Der Prozess-Manager Produktlinien (PL)

Mehr

Von der UML nach C++

Von der UML nach C++ 22 Von der UML nach C++ Dieses Kapitel behandelt die folgenden Themen: Vererbung Interfaces Assoziationen Multiplizität Aggregation Komposition Die Unified Modeling Language (UML) ist eine weit verbreitete

Mehr

G s e a s m a t m ar a ch c i h tek e tur u I und IoC

G s e a s m a t m ar a ch c i h tek e tur u I und IoC Gesamtarchitektur I und IoC Schichten einer Web-Anwendung Initiiert durch J2EE und Spring: Strukturierte Sicht auf UI und Fachlogik (Domäne) Ergibt 5 Schichten: Man unterscheidet Präsentations- und Domänenmodell!

Mehr

Data Lineage goes Traceability - oder was Requirements Engineering von Business Intelligence lernen kann

Data Lineage goes Traceability - oder was Requirements Engineering von Business Intelligence lernen kann Data Lineage goes Traceability - oder was Requirements Engineering von Business Intelligence lernen kann Andreas Ditze MID GmbH Kressengartenstraße 10 90402 Nürnberg a.ditze@mid.de Abstract: Data Lineage

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Dipl. Inf. Ali M. Akbarian

Dipl. Inf. Ali M. Akbarian Dipl. Inf. Ali M. Akbarian 2012 Einführung Globalisierung, Innovation und Kundenzufriedenheit sind auch in Zukunft die wichtigsten Herausforderungen der Unternehmen. Diese Herausforderungen verlangen:

Mehr

Geschäftsprozessmanagement: Einführung in»business Process Modelling Notation«(BPMN)

Geschäftsprozessmanagement: Einführung in»business Process Modelling Notation«(BPMN) Geschäftsprozessmanagement: in»business Process Modelling Notation«(BPMN) Eugen Labun Fachhochschule Gießen-Friedberg Fachbereich MNI Institut für Softwarearchitektur Serviceorientierte Architekturen bei

Mehr

Java Enterprise Architekturen Willkommen in der Realität

Java Enterprise Architekturen Willkommen in der Realität Java Enterprise Architekturen Willkommen in der Realität Ralf Degner (Ralf.Degner@tk-online.de), Dr. Frank Griffel (Dr.Frank.Griffel@tk-online.de) Techniker Krankenkasse Häufig werden Mehrschichtarchitekturen

Mehr

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015

Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 Code wiederverwenden: Objektorientierte Programmierung (OOP) sinnvoll nutzen Roland Wagner Automatisierungstreff IT & Automation 2015 CODESYS a trademark of 3S-Smart Software Solutions GmbH Agenda 1 Warum

Mehr

Das Interceptor Muster

Das Interceptor Muster Das Interceptor Muster Implementierung des Interceptor Musters basierend auf OSGi and Friends Benjamin Friedrich Hochschule für Technik und Wirtschaft des Saarlandes Praktische Informatik - Entwurfsmuster

Mehr

Schedulingund Thread-Ausführer

Schedulingund Thread-Ausführer Schedulingund Thread-Ausführer Scheduling Ein Scheduler arbeitet Programmstücke nach einer festen Zeitspanne oder zu einer fixen Zeitpunkt wiederholt oder einmal ab. Notwendigkeiten für Scheduling sind

Mehr

Bringen Sie Ihre Prozesse mit helic Process auf Touren. BITMARCK Kundentag 04. November 2014 Kathrin Rautert, Comline AG

Bringen Sie Ihre Prozesse mit helic Process auf Touren. BITMARCK Kundentag 04. November 2014 Kathrin Rautert, Comline AG Bringen Sie Ihre Prozesse mit helic Process auf Touren BITMARCK Kundentag 04. November 2014 Kathrin Rautert, Comline AG Bringen Sie Ihre Prozesse mit helic Process auf Touren Prozessmanagement Workflow-Management-Systeme

Mehr

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de

Fortgeschrittene Servlet- Techniken. Ralf Gitzel ralf_gitzel@hotmail.de Fortgeschrittene Servlet- Techniken Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Servlet Initialisierung Attribute und Gültigkeitsbereiche Sessions

Mehr

Complex Event Processing. Sebastian Schmidbauer 18.01.2011

Complex Event Processing. Sebastian Schmidbauer 18.01.2011 Complex Event Processing Sebastian Schmidbauer 18.01.2011 Cirquent im Profil Zahlen Kompetenzen 350 300 250 200 150 100 50 0 1748 1747 1722 1515 1041 1180 286 266 247 260 165 139 2003 2004 2005 2006 2007

Mehr

Design Patterns. 5. Juni 2013

Design Patterns. 5. Juni 2013 Design Patterns 5. Juni 2013 Überblick Was sind Design Patterns? Welche Design Patterns gibt es? Wann sollte man Design Patterns einsetzen? Refactoring und Design Patterns: Welchen Zusammenhang gibt es

Mehr

Separates Deployment von Produktdaten Cornelius Dirmeier (Dokumentversion 47)

Separates Deployment von Produktdaten Cornelius Dirmeier (Dokumentversion 47) Separates Deployment von Produktdaten Cornelius Dirmeier (Dokumentversion 47) Einleitung Faktor-IPS verwaltet Produktdaten während der Produktentwicklung in XML Dateien. Zur Laufzeit liegen die Produktdaten

Mehr

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de

AS 7 / EAP 6 - Clustering. heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de AS 7 / EAP 6 - Clustering heinz.wilming@akquinet.de @akquinet h3p://blog.akquinet.de Was ist die EAP 6? EAP6!= EAP5 +1 JBoss Enterprise ApplicaBon PlaCorm 6 Stabile und unterstützte Pla>orm Basiert auf

Mehr

Etablierung serviceorientierter Architekturen mit Web Services

Etablierung serviceorientierter Architekturen mit Web Services Etablierung serviceorientierter Architekturen mit Web Services Vorlesung im (Entwicklung von Serviceangeboten) 1 Agenda Einsatzbereiche von Web Service basierten Angeboten Übersicht zur Java-System Application

Mehr

Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland

Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland Integration von Oracle Forms in Service Oriented Architecture (SOA) Jürgen Menge Oracle Deutschland The following is intended to outline our general product direction. It is intended for information purposes

Mehr

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck

Javadoc. Programmiermethodik. Eva Zangerle Universität Innsbruck Javadoc Programmiermethodik Eva Zangerle Universität Innsbruck Überblick Einführung Java Ein erster Überblick Objektorientierung Vererbung und Polymorphismus Ausnahmebehandlung Pakete und Javadoc Spezielle

Mehr

SE2-10-Entwurfsmuster-2 15

SE2-10-Entwurfsmuster-2 15 Architektur und Skalierbarkeit SE2-10-Entwurfsmuster-2 15 Skalierbarkeit Skalierbarkeit bedeutet die Anpassung einer Software an wachsende Last: Interaktionsfrequenz Nutzerzahl Anpassung durch Hinzufügen

Mehr

Geschäftsprozessanalyse

Geschäftsprozessanalyse Geschäftsprozessanalyse Prozessmodellierung weitere Begriffe: workflow business process modelling business process (re-)engineering 2 Was ist ein Prozess? Prozesse bestehen aus Aktionen / Ereignissen /

Mehr

Integrating Architecture Apps for the Enterprise

Integrating Architecture Apps for the Enterprise Integrating Architecture Apps for the Enterprise Ein einheitliches Modulsystem für verteilte Unternehmensanwendungen Motivation und Grundkonzept Inhalt Problem Ursache Herausforderung Grundgedanke Architektur

Mehr

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de

FH LU JEE Vorlesung SS 2010. Ralf Gitzel ralf_gitzel@hotmail.de FH LU JEE Vorlesung SS 2010 Ralf Gitzel ralf_gitzel@hotmail.de 1 Einführung + Organisatorisches Ralf Gitzel ralf_gitzel@hotmail.de 2 Dozent Dr. Ralf Gitzel Promotion an der Universität Mannheim in Wirtschaftsinformatik

Mehr

Diplomarbeit. Erweiterung der jbpm Workflow-Engine um ad-hoc Funktionalitäten. eingereicht von: Mathias Staab geb. 17.10.1981.

Diplomarbeit. Erweiterung der jbpm Workflow-Engine um ad-hoc Funktionalitäten. eingereicht von: Mathias Staab geb. 17.10.1981. Fakultät Informatik Institut für Systemarchitektur Professur Rechnernetze SAP Research CEC Dresden Diplomarbeit Erweiterung der jbpm Workflow-Engine um ad-hoc Funktionalitäten eingereicht von: Mathias

Mehr

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java

Hochschule Niederrhein Grundlagen der Prof. Dr. Nitsche Fachbereich 03 Java Programmierung Bachelor Informatik SS 2015 Übung 1. Grundlagen von Java Grundlagen von Java Aufgabe 1: Typen und Zuweisungen in Java Welche der folgenden Java-Anweisungen sind fehlerhaft? Handelt es sich um einen Compiler- oder einen Laufzeitfehler? Anmerkung: Folgefehler

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013

Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung. September 2013 GTUG Java Arbeitskreis Erste Erfahrungen mit NSASJ anhand der OmnivoBase Portierung September 2013 Jürgen Depping CommitWork GmbH Seite 1 Info@CommitWork.de www.commitwork.de Agenda Was ist OmnivoBase?

Mehr

Umsetzung von Geschäftsprozessen: Workflow-Managementsysteme. Knut Hinkelmann

Umsetzung von Geschäftsprozessen: Workflow-Managementsysteme. Knut Hinkelmann Umsetzung von Geschäftsprozessen: Knut Hinkelmann Das BPMS *) Paradigma Wo liegt unsere Wertschöpfung? Produkte Strategische Entscheidungen Wie erstellen wir unsere Produkte? Geschäftsprozesse Re-Engineering

Mehr

Alltagsnotizen eines Softwareentwicklers

Alltagsnotizen eines Softwareentwicklers Alltagsnotizen eines Softwareentwicklers Entkoppeln von Objekten durch Callbacks mit c++-interfaces oder boost.function und boost.bind Tags: c++, entkoppeln, objekt, oop, callback, boost.bind, boost.function,

Mehr

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML)

09.01.14. Vorlesung Programmieren. Unified Modeling Language (UML) Unified Modeling Language (UML) Unified Modeling Language (UML) Vorlesung Programmieren Unified Modeling Language (UML) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Unified Modeling Language (UML)

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung

Einführung in AOP. Rico Schiekel - 012816 rschiekel@web.de. Agenda. Kernproblem der Objekt Orientierung Einführung in AOP Informatikseminar Rico Schiekel - 012816 rschiekel@web.de Fachhochschule Ravensburg Weingarten Hochschule für Technik und Sozialwesen Einführung in AOP Agenda Kernproblem der Objekt Orientierung

Mehr

Java Desktop Anwendungen

Java Desktop Anwendungen 5 1 Java Desktop Anwendungen das Problem: Desktop-Anwendungen werden mit Hilfe der Swing- Bibliothek programmiert, aber die Swing-Bibliothek ist riesig und unübersichtlich es gab kein Programmiergerüst

Mehr

CORBA. Systemprogrammierung WS 2006-2007

CORBA. Systemprogrammierung WS 2006-2007 CORBA Systemprogrammierung WS 2006-2007 Teilnehmer: Bahareh Akherattalab Babak Akherattalab Inhaltsverzeichnis: Verteilte Systeme Vergleich zwischen lokale und verteilte Systeme Verteilte Anwendungen CORBA

Mehr

Sybase Central Dokumentation Aktivierung der Monitoringfunktion

Sybase Central Dokumentation Aktivierung der Monitoringfunktion Sybase Central Dokumentation Aktivierung der Monitoringfunktion Version 1.0 14. Dezember 2012 Inhaltsverzeichnis 1 EINLEITUNG... 3 2 ZIELSETZUNG... 3 3 VORGEHENSWEISE... 3 4 ANHANG... 7 4.1 DOKUMENTHISTORIE...

Mehr

Caching. Hintergründe, Patterns &" Best Practices" für Business Anwendungen

Caching. Hintergründe, Patterns & Best Practices für Business Anwendungen Caching Hintergründe, Patterns &" Best Practices" für Business Anwendungen Michael Plöd" Senacor Technologies AG @bitboss Business-Anwendung!= Twitter / Facebook & co. " / kæʃ /" bezeichnet in der EDV

Mehr

Bridging the Gap between the Enterprise and You. Who s the JBoss now?

Bridging the Gap between the Enterprise and You. Who s the JBoss now? or Who s the JBoss now? Patrick Hof (patrick.hof@redteam-pentesting.de) Jens Liebchen (jens.liebchen@redteam-pentesting.de) RedTeam Pentesting GmbH http://www.redteam-pentesting.de FrOSCon 2009 22./23.

Mehr

5. Übung zur Vorlesung Service-orientierte Architekturen

5. Übung zur Vorlesung Service-orientierte Architekturen 5. Übung zur Vorlesung Service-orientierte Architekturen Webservices und WSDL SoSe 2011 Anmerkung Hausaufgabe 03 BPMN Auch hier gilt: Layout! Zu Unterschieden zw. BPMN und eepk Relative Aussagen sind geschickter

Mehr

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg

COMMON OBJECT REQUEST BROKER ARCHITECTURE. Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg COMMON OBJECT REQUEST BROKER ARCHITECTURE Dmytro Pyvovar Otto-von-Guericke Universität Magdeburg Gliederung Motivation Was ist CORBA? Object Management Architecture (OMA ) Interface Definition Language

Mehr

Installation Anleitung für JTheseus und MS SQL Server 2000

Installation Anleitung für JTheseus und MS SQL Server 2000 Installation Anleitung für JTheseus und MS SQL Server 2000 Inhaltsverzeichnis 1 Installation der Datenbank 3 1.1 Erstellen der Datenbank 3 1.2 Tabellen und Minimal Daten einlesen 4 1.3 Benutzer JTheseus

Mehr