8. Message oriented Middleware
Vorteile
• Lose Kopplung
– Funktionale Indirektion: Sender und Empfänger müssen
sich nicht kennen
– Zeitliche Indirektion: Sender und Empfänger müssen
nicht gleichzeitig laufen, Auslieferung von Nachrichten
wird durch Middleware garantiert
• Flexibilität
– Nachrichten können an einen anderen Empfänger
geroutet werden
– Nachrichten können vor Auslieferung überarbeitet
werden
• Anbindung unterschiedlicher Protokolle und
Systemumgebungen
9. Integrationsansätze
Everything is about integration…
Good Seperation
between integration Traditional EAI ESB
and application logic
No Seperation Message oriented
between integration Application Server Middleware (MOM)
and application logic / Custom code
Hub & Spoke Distributed
Integration Integration
Quelle: Chappell, „Enterprise Service Bus“
10. Enterprise Service Bus
Was ist ein ESB?
Kundendaten Kreditprozess Bonitätscheck
Queuing Transport Routing Mapping Discovery Message Bus
Unterschiedliche Protokolle
Web-Service SAP werden unterstützt
EJBs
Server
BPEL-Prozess Partner
Web-
service
Mehrere ESBs
werden „einfach“ ESB ESB
verknüpft:
EJB-Container .NET
EJB JMS, …
11. Enterprise Service Bus
Was ist ein ESB?
Funktionalität
• Messaging
• Intelligentes Routing
• Tools für Transformation
• Abstraktion von Protokollen
• Vorgefertigte Adapter
Vorteile
• Virtualisierung (welche Services laufen wo und wie)
• Zentralisierung von Aspekten (Security, Management,
Policy-Überwachung, …)
• „Zwang“ zu Asynchronität ;-)
• …
13. Service-Klassifizierung
Was ist ein Service?
Process Services Process
• Geschäftsprozesse Services
Composed Services Process-
Composed
enabled
• Orchestrieren von Services
Federated SOA
Basic Services
Basic SOA
Fundamental
Basic Services Services SOA
• Kapselung von
Backend-
Funktionalität
• Verstecken der
Implementierungs-
details
• ACID
Nach Nicolai Josuttis
15. Service
Was ist ein Service?
• Services kapseln Geschäftsfunktionalität
• Möglichst unabhängig
• Möglichst Zustandslos
• Orientiert an Geschäftsfunktionalität („Bridging the
Business-IT-Gap“)
• Dokumentiert und Managed Governance
• Technische Implementierung zweitrangig
– Nach Möglichkeit plattformunabhängig
16. Der JBoss ESB
Das Projekt
• JBoss-Projekt, Open Source (LGPL)
• Teil der JBoss SOA Platform
• Lauffähig auf JBoss AS (oder Standalone)
• Aktuell Version 4.4
• Entwickelt als Rosetta ESB bei Aviva Canada
(Große Versicherung)
• Große Community
• Umfangreiche & gute Dokumentation!
18. Services = Listener + Action Pipeline
JBoss ESB
normal ESB aware
Message Message
Provider
Gateway
Listener XML
config
ESB aware
Message Action 1 Action 2 Action …
Service
public class MyEsbAction {
public MyEsbAction(ConfigTree config) {
// read stuff from configuration
}
public Message process(Message m) { ESB aware
// do whatever you need to do Message
return m;
}
}
19. ESB aware messages
JBoss ESB
Routing,
Header Adressing,
…
Session,
Context Security,
Transactions
order
DEFAULT_BODY
Body _LOCATION
customer_id
Payload
Attachement
ESB aware message
Message
Nachrichtenformat: XML oder Binär (Java) Datastore
24. Registry
JBoss ESB
• Services erhalten logischen Namen
– Welcher ESB ist transparent
– Protokoll & technische Details transparent
• EndpointReference (EPR) wird in Registry
eingetragen
• Default: jUDDI
• Austauschbar
25. Beispiel aus dem JavaMagazin
JBoss ESB + JBoss jBPM
Event
(File)
Case
Management
Tasklist
JMS-
Message
Environment ESB JBoss jBPM
26. Notwendige Services im JBoss ESB
JBoss ESB + JBoss jBPM
create
Event start
message
(File) process
from file
Create Case Service
Case call Web prepare
Management Service Parameter
Case Mngt Legacy Service
JMS- read signal
Message message process
Case Completion Service
Environment JBoss ESB JBoss jBPM
27. Demo
JBoss ESB + JBoss jBPM
• Create Case Service
– Datei einlesen
– Starten jBPM Prozess zur Orchestrierung
• Case Management Legacy Service
– WebService ansprechen
• Case Completion Service
– JMS-Nachricht entgegennehmen
– Korrelation zu jBPM herstellen und Prozess triggern
28. Live-Demo…
normal ESB aware
Message Message
Provider
Gateway
Listener
ESB aware
Message Action 1 Action 2 Action …
Service
29. Packaging
JBoss ESB in Action
Applications
(EAR)
Process Archive
(par)
JBoss
…
ESB
Other classes &
Applications
META-INF/
jboss-esb.xml
.ESB
App-Server-Node
30. Packaging
JBoss ESB in Action
package
Event
(File)
Create Case Service
Case Case Management
Management Legacy Service
JMS- Case Completion
Message
Service deployed in
engine
JBoss jBPM
ESB
31. Versionierung von Services und Prozessen
Cutting Edge in der JBoss SOA Platform ;-)
Version: 1.7
process-definition
process-definition
process-definition
name:
name:
„OrderProcess_1.7“
name: Process Archive
„OrderProcess_1.7“ other services
„OrderProcess_1.7“
version: 3 .ESB
version: 2
version: 2
(par)
classes
.ESB JBoss
ESB
Version: 1.8 Process Engine
process-definition
process-definition
name:
name:
jbpm
„OrderProcess_1.8“ Process Archive deployer
„OrderProcess_1.8“
version: 2
version: 1
(par)
jBPM
classes
.ESB
jbpm Datasource
32. Classloading Magic: jBPM-Deployer
Cutting Edge in der JBoss SOA Platform ;-)
jbpm.deployer 3. register Prozess ClassLoader
Deployer MBean classloader Case UCL@123
2. deploy Case UCL@889
changed query CL Order UCL@420
processes for process … …
jbpm Process
(jars, config) ClassLoader 1. pick up
process
Load classes from archives In-Memory ClassLoader
classloader Repository
Scoped
jbpm-ds ClassLoader
par par
ESB / EAR / …
App-Server-Node
Siehe Blog:
www.bpm-guide.de
Feedback erwünscht!
33. Verwendete Software & Code
JBoss ESB in Action
• JBoss ESB 4.4
• jBPM 3.3 GA (cooming soon)
• Spezieller jbpm.deployer (optional)
• Beispiel-Code sowie Beschreibung jbpm.deployer
auf camunda-Blog verfügbar (ASAP ;-)):
www.bpm-guide.de
38. „The tale of the magic Bus“
Von Nicolai Josuttis
Governance
ESB ist Hilfsmittel, nicht Lösung! Aber
Open Source ermöglicht Reinwachsen
Zentraler Bus liefert Ansatzpunkte
39. Orchestrierung vs. Choreographie
Tücken im Detail
Orchestrierung
• Zusammensetzen der Services zu
neuen Services
• Geordnet, Prozesse, Zentrale
Orchestrierung Unternehmen A
Steuerung
Choreographie
• Innerhalb des Unternehmens
Orchestrierung Unternehmen B Metapher: Ampel
Choreographie
• Keine zentrale Steuerung, Ad-Hoc
• Oft zwischen Unternehmen
Metapher: Kreisverkehr
41. Fazit
JBoss ESB
• JBoss ESB reift gerade aus (Version 4.4 schon sehr
stabil)
• Technische Grundlage ist gut
• Erfahrungen im Bereich JBoss AS, Messaging & co
können wieder verwendet werden
• Einige vorgefertigte Integrationen / Adaptoren / Provider
• Kein wirkliches Tooling
• Hilfestellungen im Bereich Governance fehlen noch, in
Zukunft JBoss SOA-G, JBoss ON, …?
• JBoss SOA Platform 5 wird spannend!
• Achtung: ESB heißt evtl. auch SOA ;-)
• Viele „Quickstarts“, also: Ausprobieren!