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

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9

Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Prof. Dr. Wilhelm Schäfer Paderborn, 15. Dezember 2014 Christian Brenner Tristan Wittgen Musterlösung zur Vorlesung Modellbasierte Softwareentwicklung Wintersemester 2014/2015 Übungsblatt 9 Aufgabe 1 Codegenerierung

Mehr

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com

Next generation open source BPM JBoss jbpm 4. Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Next generation open source BPM JBoss jbpm 4 Java Forum Stuttgart 02.07.2009 bernd.ruecker@camunda.com Bernd Rücker / bernd.ruecker@camunda.com / 2 Guten Morgen Berater, Trainer, Coach Softwareentwickler

Mehr

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de

Session Beans & Servlet Integration. Ralf Gitzel ralf_gitzel@hotmail.de s & Servlet Integration Ralf Gitzel ralf_gitzel@hotmail.de 1 Themenübersicht Ralf Gitzel ralf_gitzel@hotmail.de 2 Übersicht Motivation Das Interface Stateful und Stateless s Programmierung einer Stateful

Mehr

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

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

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

COPPER Best Practices

COPPER Best Practices COPPER Best Practices Version 1.0.1 Wann sollte man überhaupt COPPER verwenden? Allgemein genau dann, wenn man von der COPPER Notation oder den COPPER-Features profitieren kann. Ein wesentliches Feature

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

Ü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

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG

Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Rhapsody in C ein System zur aspektorientierten Embedded- Entwicklung? Dr.- Ing. Alexander Steinkogler B. Braun Melsungen AG Einführung Was sind Aspekte? Anforderungen: Thema / Aspekt Berühren viele andere

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

Error-Hospital für Oracle SOA Suite

Error-Hospital für Oracle SOA Suite Error-Hospital für Oracle SOA Suite Markus Lohn esentri AG Ettlingen Schlüsselworte Fusion Middleware, SOA, SOA Suite Einleitung Die Entwicklung von Services mit der SOA Suite erfolgt überwiegend deklarativ

Mehr

Geschäftskomponenten mit EJB 3.1

Geschäftskomponenten mit EJB 3.1 Geschäftskomponenten mit EJB 3.1 Aktuelle Technologien zur Entwicklung verteilter Java-Anwendungen Kurt Fastner Sommersemester 2012 Inhalt Was ist EJB Die verschiedenen EJB-Typen/Komponenten Applikationsserver,

Mehr

Java 2, Enterprise Edition Einführung und Überblick

Java 2, Enterprise Edition Einführung und Überblick Universität aiserslautern AG Datenbanken und Informationssysteme Seminar Datenbank-Aspekte des E-Commerce Java 2, Enterprise Edition Einführung und Überblick m_husema@informatik.uni-kl.de Vortragsinhalte

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

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0

ActiveCharts. Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Jens Kohlmeyer 05. März 2007 Institut für Programmiermethodik und Compilerbau ActiveCharts Verknüpfung von Modellen und Code bei der modellgetriebenen Softwareentwicklung mit UML 2.0 Seite 2 Übersicht

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

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen

Java Beans Enterprise Java Beans. Eine kurze Einführung in die Welt der Bohnen Java Beans Enterprise Java Beans Eine kurze Einführung in die Welt der Bohnen Java Beans Einführung Stefan Sauer Was ist ein Java Bean? Beans sind Komponenten. Einmal schreiben Überall wiederverwerten

Mehr

Java Persistence API 2.x. crud + relationships + jp-ql

Java Persistence API 2.x. crud + relationships + jp-ql Java Persistence API 2.x crud + relationships + jp-ql Grundprinzip 10.02.10 2 Problematik Man muss bei der Persistierung immer das Klassenmodell und dessen Umsetzung im Datenmodell (in der DB) berücksichtigen.

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

Schlussbewertung FB VI SOFTWAREPROJEKT II WS 09/10 TEAM. Alexander Kalden Dominik Eckelmann Marcel Pierry Julian Heise Besha Taher

Schlussbewertung FB VI SOFTWAREPROJEKT II WS 09/10 TEAM. Alexander Kalden Dominik Eckelmann Marcel Pierry Julian Heise Besha Taher Schlussbewertung FB VI SOFTWAREPROJEKT II WS 09/10 TEAM Alexander Kalden Dominik Eckelmann Marcel Pierry Julian Heise Besha Taher 729631 745097 736477 745011 741297 Inhalt Schlussbewertung... 3 Bewertung

Mehr

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul

Behavioral Patterns. Seminar Software-Entwurf WS 04/05. Przemyslaw Dul Behavioral Patterns Seminar Software-Entwurf WS 04/05 Przemyslaw Dul Gliederung Design Pattern (Wiederholung) Einordnung Übersicht über die Kategorien: Creational,Structural,Behavioral Übersicht über die

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

BPEL als Eckpfeiler einer Serviceorientierten Architektur

BPEL als Eckpfeiler einer Serviceorientierten Architektur BPEL als Eckpfeiler einer Serviceorientierten Architektur Stand der Technik und hands-on Demonstration 1. Dez. 2005 Marc Pellmann www.inubit.com inubit AG = Standardsoftware für integrierte Geschäftsprozesse

Mehr

Metadata Service Respository (MDS) - Sehen, lernen, verstehen!

Metadata Service Respository (MDS) - Sehen, lernen, verstehen! Metadata Service Respository (MDS) - Sehen, lernen, verstehen! Carsten Wiesbaum esentri AG Schlüsselworte Metadata Service Repository, MDS, Oracle Fusion Middleware Einleitung Früher oder später wird jeder

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

Übung 1 mit C# 6.0 MATTHIAS RONCORONI

Übung 1 mit C# 6.0 MATTHIAS RONCORONI Übung 1 mit C# 6.0 MATTHIAS RONCORONI Inhalt 2 1. Überblick über C# 2. Lösung der Übung 1 3. Code 4. Demo C# allgemein 3 aktuell: C# 6.0 mit.net-framework 4.6: Multiparadigmatisch (Strukturiert, Objektorientiert,

Mehr

Java Beans (22.02.2001)

Java Beans (22.02.2001) Component Based Software Development Java Beans (22.02.2001) Stefan Jäger Robert Kalcklösch Veranstalter: M. Bittner W. Koch Inhalt Einführung in Java Die Java Beans Einsatz und Entwicklung von Beans Enterprise

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

Mehr

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick

OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick OSGi: Anwendungsszenarien, Auswahlkriterien und Ausblick Thementag OSGi 03.11.2009 Autor: Christoph Schmidt-Casdorff Agenda Wo wird OSGi derzeit eingesetzt? Grundsätzliche Anwendungsszenarien OSGi Status

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

Handbuch für die Erweiterbarkeit

Handbuch für die Erweiterbarkeit Handbuch für die Erweiterbarkeit Inhalt Pakete für die Erweiterbarkeit... 2 Actions... 2 Items... 2 Itemset... 2 Die UseCaseNewAction... 3 Eigene Shapes... 4 Der Shape Container... 5 User Objects... 6

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

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

Kapitel 6. Vererbung

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

Mehr

Entwurf und Implementierung einer Workflow-basierten Anwendung zur Auswertung mathematischer Formeln

Entwurf und Implementierung einer Workflow-basierten Anwendung zur Auswertung mathematischer Formeln Entwurf und einer Workflow-basierten Anwendung zur Auswertung mathematischer Formeln Object 14 Service Orientated Architecture (SOA) Web Services Business Process Execution Language (BPEL) SOA [1/3] Service

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

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

JDO Java Data Objects

JDO Java Data Objects JDO Java Data Objects Ralf Degner, Chief Consultant Ralf.Degner@poet.de Agenda POET Motivation Geschichte Einführung Architekturen FastObjects POET Gegründet 1993 Zwei Produktlinien esupplier Solutions:

Mehr

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz

Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java. Oliver Kalz Analyse und praktischer Vergleich von neuen Access- Layer-Technologien in modernen Webanwendungen unter Java Oliver Kalz Agenda Grundlagen Objektpersistenz Objektrelationales Mapping Performance Fazit

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

Softwareentwicklung mit Enterprise JAVA Beans

Softwareentwicklung mit Enterprise JAVA Beans Softwareentwicklung mit Enterprise JAVA Beans JPA - JAVA Persistence API Problem In JAVA-programmen arbeitet man mit Hauptspeicherobjekten. Nach Beendigung des Programmes sind diese nicht mehr vorhanden.

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

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

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

Mehr

Java RMI Remote Method Invocation

Java RMI Remote Method Invocation Java RMI Remote Method Invocation Ziel: Aufruf von Instanzmethoden entfernter Objekte basierend auf Java. Paket: java.rmi und Unterpakete Topologie: RMI Registry RMI Server RMI Client Der Server registriert

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

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

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

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

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt

Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen. Referenten: Fabian Bartelt Jens de Witt Komponenten & Hypermedia Seminar Prof. Dr. Frank Thiesing Struts Java-Framework für Web-Applikationen Referenten: Fabian Bartelt Jens de Witt - Struts 1 Inhaltsverzeichnis Was ist Struts? Vorkenntnisse

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

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

Spring Dynamic Modules for OSGi Service Platforms

Spring Dynamic Modules for OSGi Service Platforms Gerd Wütherich freiberuflicher Softwarearchitekt Spring Dynamic Modules for OSGi Service Platforms Server Anwendungen mit Spring und Eclipse Equinox Agenda OSGi Technologie: OSGi Technologie im Überblick

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

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

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers

Daniel Warneke warneke@upb.de 08.05.2006. Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns Daniel Warneke warneke@upb.de 08.05.2006 Ein Vortrag im Rahmen des Proseminars Software Pioneers Design Patterns 1/23 Übersicht Einleitung / Motivation Design Patterns Beispiele Rolle des

Mehr

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS)

Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Einleitung Oracle Enterprise Scheduler (ESS) Oracle Enterprise Scheduler (ESS) Unleashed Carsten Wiesbaum esentri AG Ettlingen Schlüsselworte Automatisierung, Betrieb, Middleware Einleitung Der Oracle Fusion Middleware Stack beinhaltet eine leistungsstarke

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

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

Flexibilität im Prozess mit Oracle Business Rules 11g

Flexibilität im Prozess mit Oracle Business Rules 11g Flexibilität im Prozess mit Oracle Business Rules 11g Michael Stapf ORACLE Deutschland GmbH Frankfurt Schlüsselworte: Geschäftsregeln, Business Rules, Rules Engine, BPEL Process Manager, SOA Suite 11g,

Mehr

Schritt 5: Session Beans

Schritt 5: Session Beans Prof. Dr. Th. Letschert FB MNI JEE Schritt 5: Session Beans Session Beans Übersicht Session Beans dienen dazu serverseitige Geschäftsprozesse zu realisieren. Es gibt sie drei Zustands Varianten: Stateless

Mehr

Vortrag von: Ilias Agorakis & Robert Roginer

Vortrag von: Ilias Agorakis & Robert Roginer MDA Model Driven Architecture Vortrag von: Ilias Agorakis & Robert Roginer Anwendungen der SWT - WS 08/09 Inhalt Was ist MDA? Object Management Group (OMG) Ziele Konzepte der MDA Werkzeuge Vor- und Nachteile

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

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

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

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

9 Multithreading. 1 Idee des Multithreading

9 Multithreading. 1 Idee des Multithreading 9 Multithreading Jörn Loviscach Versionsstand: 21. Juli 2015, 11:50 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html This work is licensed

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

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure 7. Objektorientierte Softwareentwicklung/3 Informatik II für Verkehrsingenieure Überblick FOLGENDE BEGRIFFE/PRINZIPIEN SOLLTEN BEKANNT SEIN Objekte Klasse Attribute Fähigkeiten ZIEL DER HEUTIGEN LEHRVERANSTALTUNG

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

Java - Webapplikationen

Java - Webapplikationen Java - Webapplikationen Bestandteile (HTTP,, JSP) Aufbau (Model View Controller) Datenverwaltung (Java Beans, Sessions) Entwicklung (Projektstruktur, Sysdeoplugin für Eclipse) 17. Januar 2006 Jan Hatje

Mehr

Hivemind Ein leichtgewichteter Container

Hivemind Ein leichtgewichteter Container Hivemind Ein leichtgewichteter Container Manfred Wolff, wolff@manfred-wolff.de, www.manfred-wolff.de Container sind Laufzeitumgebungen für Objekte. Der mächtigste Container im Java-Umfeld der EJB Container

Mehr

MCRServlet Table of contents

MCRServlet Table of contents Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient

Mehr

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition)

Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Ein Prozess kann unmittelbar vom Zustand 1. Running in den Zustand Ready 2. Running in den Zustand Blocked 3. Ready in den Zustand Running Klausurvorbereitung VS1 (Prof. Brecht) (B0rg Edition) Der Adressraum

Mehr

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009

JBoss Seam. Ein JEE 5 Webframework. Jörg Wüthrich Infopoint, 4. Februar 2009 JBoss Seam Ein JEE 5 Webframework Jörg Wüthrich Infopoint, 4. Februar 2009 Inhalt Einführung Warum Seam? Zentrale Konzepte Demo Validierung Abschliessende Gedanken 04.02.2009 Infopoint - JBoss Seam - Jörg

Mehr

Code-Erzeugung aus UML-Klassendiagrammen

Code-Erzeugung aus UML-Klassendiagrammen Dominik 09.03.2009 Universität Ulm Gessenharter Inst. f. Programmiermethodik und Compilerbau Code-Erzeugung aus UML-Klassendiagrammen Theorie und Praxis Seite 2 REConf 2009 München Dominik Gessenharter

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

RUP Analyse und Design: Überblick

RUP Analyse und Design: Überblick Inhaltsverzeichnis Übersicht [, 2, 8] 3. Vorgehensweise............................... 5 2 Planungsmethoden 37 2. Definitionsphase.............................. 6 3 Rational Unified Process [5, 6] und

Mehr

Business Objekte. Der Schlüssel für Applikationen mit Zukunft. 2001 TMN Systemberatung GmbH www.tmn-systemberatung.de. Folie 1

Business Objekte. Der Schlüssel für Applikationen mit Zukunft. 2001 TMN Systemberatung GmbH www.tmn-systemberatung.de. Folie 1 Business Objekte Der Schlüssel für Applikationen mit Zukunft 2001 TMN Systemberatung GmbH Folie 1 Agenda Kurze Vorstellung Die Theorie hinter Business Objekten Business Objekte (BOs) in der Praxis Anbindung

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

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

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen.

Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Übersicht Struts Forms Dieses Tutorial gibt eine Übersicht der Form Klassen von Struts, welche Besonderheiten und Unterschiede diese aufweisen. Allgemeines Autor: Sascha Wolski http://www.laliluna.de/tutorials.html

Mehr

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH

MODERNES LOGGING DATENSAMMELN OHNE REUE. Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH MODERNES LOGGING DATENSAMMELN OHNE REUE Bert Radke Marco Grunert T-Systems Multimedia Solutions GmbH System.out.println("Customer " + 637208 + " not found"); VIELEN DANK FÜR EURE AUFMERKSAMKEIT! FRAGEN?

Mehr

Dokumentation Projekt Virtuelles Tagebuch

Dokumentation Projekt Virtuelles Tagebuch Priv.Doz. Dr. Michael Hahsler Institut für Informationswirtschaft Dokumentation Projekt (Matr. Nr. 9806106) - 1 - 1 Problembeschreibung Das Ziel dieses Projektes ist es, ein Tagebuch in elektronischer

Mehr

Factory Method (Virtual Constructor)

Factory Method (Virtual Constructor) Factory Method (Virtual Constructor) Zweck: Definition einer Schnittstelle für Objekterzeugung Anwendungsgebiete: Klasse neuer Objekte bei Objekterzeugung unbekannt Unterklassen sollen Klasse neuer Objekte

Mehr

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe

Java: Eine Übersicht. Dennis Giffhorn. Lehrstuhl für Programmierparadigmen Universität Karlsruhe Java: Eine Übersicht Dennis Giffhorn Lehrstuhl für Programmierparadigmen Universität Karlsruhe Allgemeines Objektorientiert Syntaxfamilie von C/C++ Statisch getypt Entwickelt von Sun Microsystems class

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

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

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

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014

Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung. Klaus Kusche, September 2014 Die Bedeutung abstrakter Datentypen in der objektorientierten Programmierung Klaus Kusche, September 2014 Inhalt Ziel & Voraussetzungen Was sind abstrakte Datentypen? Was kann man damit grundsätzlich?

Mehr

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit

Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit Was ist EMF? Wie wird EMF eingesetzt? Was ist ecore? Das Generatormodell Fazit EMF ist ein eigenständiges Eclipse-Projekt (Eclipse Modeling Framework Project) EMF ist ein Modellierungsframework und Tool

Mehr

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de

EJB Beispiel. JEE Vorlesung 10. Ralf Gitzel ralf_gitzel@hotmail.de EJB Beispiel JEE Vorlesung 10 Ralf Gitzel ralf_gitzel@hotmail.de 1 Stundenkonzept Gemeinsame Übung Stoff der letzten Stunde wird gemeinsam in einem Beispiel umgesetzt Details werden nochmals erklärt bzw.

Mehr

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

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

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53

Inhaltsverzeichnis. 2.2 Grundlagen der UML... 41. 2.3 Zusammenfassung... 53 Vorwort......................................................... 13 1 Vorbereitungen.................................................. 17 1.1 JDK-Installation unter Windows................................

Mehr

Business Process Model and Notation

Business Process Model and Notation BPMN 2.0 Crashkurs Business Process Model and Notation entwickelt von der Object Management Group, einem Konsortium von vielen Firmen (u.a. HP, IBM, Microsoft, Oracle, SAP) >60 verschiedene Produkte implementieren

Mehr

Aspektorientierte Programmierung (aspect-oriented programming, AOP)

Aspektorientierte Programmierung (aspect-oriented programming, AOP) Aspektorientierte Programmierung (aspect-oriented programming, AOP) Abstract Die aspektorientierte Programmierung ist ein neues Programmierparadigma, das die Probleme und Nachteile, die aus der prozeduralen

Mehr

Inhaltsverzeichnis. Zusammenfassung Wydler

Inhaltsverzeichnis. Zusammenfassung Wydler Inhaltsverzeichnis 1 Multitier Anwendungen... 2 2 J2EE Komponenten... 2 2.1 J2EE Design Patterns for Performance... 2 2.1.1 Design Patterns... 2 2.1.2 Session Façade... 2 2.1.3 Data Transfer Object (Value

Mehr