Post on 30-Oct-2014
description
Implementierung von Enterprise Integration Patterns
auf einem JBI ESB
Martin Krasser, Christian Ohr, ICW AG 2
Wer sind wir?
• Softwarearchitekten • Entwicklung von
Integrationsplattformen und -lösungen
http://www.icw.demartin.krasser@icw.dechristian.ohr@icw.de
Martin Krasser, Christian Ohr, ICW AG 3
Roter FadenBeispiel: KommunikationIm Krankenhaus
Einsatzszenario für einen ESB
ESB und JBI
Apache ServiceMix und EIPs
Anwendungsbeispiel für EIPs
Herausforderungen + Lösungsansätze
60 min
Detail
Überblick
0 min
Martin Krasser, Christian Ohr, ICW AG 4
Kommunikation im Krankenhaus• Komplexe Domäne
– Medizinische Dokumentation – Unterstützung von Routine-Arbeitsabläufen– Verwaltung + Abrechnung von Leistungen– Medizinische Spezialanwendungen
• Hoher Spezialisierungsgrad der Anwendungen• Einsatz vieler unterschiedlicher Anwendungen• Lose Systemkopplung: Datenkommunikation
erfolgt vorwiegend ereignisgetrieben• Seit ca. 1990 werden Kommunikationsserver
(Interface Engines) eingesetzt
Martin Krasser, Christian Ohr, ICW AG 5
Ereignisse im Krankenhaus
KücheKüche
ArchivArchiv
Patienten- ManagementPatienten-
Management
Krankenhaus-Informationssystem
Krankenhaus-Informationssystem
LaborLabor
PACSPACS RISRIS
InterfaceEngine
InterfaceEngine
Intensiv-überwachung
Intensiv-überwachung
Aufnahme!
Martin Krasser, Christian Ohr, ICW AG 6
Ereignisse im Krankenhaus
KücheKüche
ArchivArchiv
Patienten- ManagementPatienten-
Management
KlinischerArbeitsplatzKlinischer
Arbeitsplatz
LaborLabor
PACSPACS RISRIS
InterfaceEngine
InterfaceEngine
Intensiv-überwachung
Intensiv-überwachung
Auftrag
Krankenhaus-Informationssystem
Krankenhaus-Informationssystem
Martin Krasser, Christian Ohr, ICW AG 7
Ereignisse im Krankenhaus
KücheKüche
ArchivArchiv
Patienten- ManagementPatienten-
Management
KlinischerArbeitsplatzKlinischer
Arbeitsplatz
LaborLabor
PACSPACS RISRIS
InterfaceEngine
InterfaceEngine
Intensiv-überwachung
Intensiv-überwachung
Ergebnis
Krankenhaus-Informationssystem
Krankenhaus-Informationssystem
Martin Krasser, Christian Ohr, ICW AG 8
Gründe für den Einsatz von Interface Engines
• Entkopplung von Anwendungen• Im Vergleich zu Point-to-Point: Reduktion
der Schnittstellen von n*(n-1) auf 2n• Zentrales Schnittstellenmanagement/-
überwachung• Erleichtert die Migration von Schnittstellen
Martin Krasser, Christian Ohr, ICW AG 9
Sektorenübergreifende Kommunikation
HausarztHausarzt FacharztFacharztReha-
EinrichtungReha-
Einrichtung
InterfaceEngine
InterfaceEngine
Verteilte Patientenakte
Verteilte Patientenakte
Master Patient Index
Master Patient Index
Martin Krasser, Christian Ohr, ICW AG 10
Anwendungsbeispiel
Master Patient Index
Master Patient Index
A A‘
B
…… B‘Enterprise Service Bus (ESB) als Interface Engine
Martin Krasser, Christian Ohr, ICW AG 11
Enterprise Service Bus• Kernfunktionalitäten
– Messaging– Routing– Transformation– Protokolladapter– System Management und Monitoring– …
• Weitere Funktionalitäten– Prozesssteuerung (BPM)– Complex Event Processing (CEP)– Event Stream Processing (ESP)– …
Martin Krasser, Christian Ohr, ICW AG 12
Enterprise Service Bus• Plugin Architektur
– Integrationskomponenten sind Plugins– Projektspezifische Konfiguration– Erweiterungsmechanismus– Java Business Integration (JSR 208)
• Verteilte Bus-Architektur
Plugins
Martin Krasser, Christian Ohr, ICW AG 13
Java Business Integration (JBI)• Java Standard zur Strukturierung von
Integrationssystemen– Plugin Architektur für Integrationskomponenten– Integrationskomponenten kommunizieren über standardisierte
Schnittstellen
• Interoperabilität zwischen Integrationskomponenten unterschiedlicher Hersteller
• Richtet sich an Hersteller von Integrationsplattformen und Integrationskomponenten
Martin Krasser, Christian Ohr, ICW AG 14
Java Business Integration (JBI)
JBI UmgebungJBI Komponente (BC)
NMR
DC
DC
JBI Komponente (SE)
Service Endpoint
Message Exchange
Externer Service
JBI Komponente• BC = Binding Component• SE = Service Engine
DC Delivery Channel
NMR Normalized Message Router
EP
EP EP
EP
WSDL
WSDL WSDL
Martin Krasser, Christian Ohr, ICW AG 15
Apache ServiceMix• Enterprise Service Bus auf JBI Basis
– Mehr als eine reine JBI Referenzimplementierung– Cluster Support, eigene JBI Komponenten …– Spezielle Unterstützung für Integration Patterns
• Plattform zur Entwicklung von– Integrationslösungen (Anwendungs-Entwickler)– Integrationskomponenten (Plattform-Entwickler)
• Apache Top Level Projekt– Aktuelle Version: 3.2– Apache 2.0 Lizenz
Martin Krasser, Christian Ohr, ICW AG 16
Apache ServiceMix
ActiveMQ
ServiceMix Core
…
…JBI Komponenten
Binding Components
Service Engines
JBI Umgebung
Message Broker Cluster Support
sm-http
Delivery Channel Norm. Message Router Management (JMX)
sm-jms sm-file
sm-eip sm-drools ODE
Martin Krasser, Christian Ohr, ICW AG 17
sm-eip Service Engine• Enterprise Integration Patterns
– Filter– Content-based Router– Recipient List– Splitter and Aggregator– Content Enricher– Resequencer– …
Martin Krasser, Christian Ohr, ICW AG 18
sm-eip Service Engine• Implementierung von EIPs
– Konfiguration mit Spring/XBean XML– Verpacken in Service Unit bzw. Assembly– Deployment des Service Assembly– Spring Beans als JBI Service Endpoints erreichbar
<eip:content-based-router service="msb:v3-router" ...> <eip:rules> <eip:routing-rule> <eip:predicate> <eip:xpath-predicate xpath="count(//items/item) > 0" /> </eip:predicate> <eip:target> <eip:exchange-target service="msb:MPI" /> </eip:target> </eip:routing-rule> </eip:rules> </eip:content-based-router>
sm-eip
<<deploy>>
Service Assembly
maven-jbi-plugin
Martin Krasser, Christian Ohr, ICW AG 19
Anwendungsbeispiel• Nachrichtenstandards, Formate und Transport
Master Patient Index
Master Patient Index
……
HL7 v2FTP
HL7 v2‘MLLP
HL7 v3
HTTP
HL7 v3‘
SOAP/ HTTP
Martin Krasser, Christian Ohr, ICW AG 20
Nachrichtenstandards in der Medizin
• Das Schöne an Standards ist …– HL7 v2– HL7 v3– EDIFACT (§301 SGB V)– DICOM, ACR/NEMA– ADT, BDT, LDT– Papier
Martin Krasser, Christian Ohr, ICW AG 21
HL7 v2• „HL7 bietet Interoperabilität zwischen Krankenhausinformationssystemen
(KIS), Praxisverwaltungssystemen (PVS), Laborinformationsystemen (LIMS), Systemen zur Leistungsabrechnung sowie Systemen, die als Elektronische Patientenakte fungieren...“ (http://de.wikipedia.org/wiki/HL7)
• Führend in krankenhausinterner Kommunikation
MSH|^~\&|SAP-ISH|ABC|||20040805152637||ADT^A01|123456|T|2.2|||ER ↵EVN|A01|20040805152637 ↵PID|1||79471||Müller^Hans|Müller|19400101|M|||Am Domplatz 1^^Köln^NW^57000^DE^H||+4962218725683|||S|||111-11-1111||||Köln ↵NK1|1|Möller^Gudrun|EMC|Hauptstraße 23^^Köln^NW^57000^DE|+4922239834 ↵PV1|1|I|ISKA^13^4|R||||823745217||||||||N|||79237645|||||||||||||||||||||||||20040805000000 ↵ZBE|79237645~001|20040805000000||INSERT ↵
http://www.hl7.de/standard/wasist_hl7.php
Martin Krasser, Christian Ohr, ICW AG 22
HL7 v3• Modellierungs- und Entwicklungsprozesse sind
integraler Bestandteil• Reference Information Model ist Grundlage für
das Datenmodell• Konsistent, komplex, formal, erweiterbar• Syntaxunabhängige Modelle, XML ist
bevorzugte Modellimplementierung• Immer noch ereignisgetrieben
Martin Krasser, Christian Ohr, ICW AG 23
HL7 v3 Beispiel<?xml version="1.0" encoding="UTF-8"?>
<PRPA_IN201101 ITSVersion="XML_1.0" xmlns="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="urn:hl7-org:v3 PRPA_IN201101.xsd">
<realmCode code="DE"></realmCode> <id root="2.16.840.1.113883.3.37.4.1.1.2.411.4" extension="255166268"></id> <creationTime value="20060714140700"></creationTime> <versionCode code="V3-2006-05"></versionCode> <interactionId extension="PRPA_IN201101"
root="2.16.840.1.113883.1.6"></interactionId> <processingCode code="P"></processingCode> <processingModeCode code="T"></processingModeCode>
… ca. 100 Zeilen …
<custodian> <assignedEntity> <id root="2.16.840.1.113883.3.37.4.1.1.2.411"></id> </assignedEntity> </custodian> </registrationEvent> </subject> </controlActProcess></PRPA_IN201101>
Martin Krasser, Christian Ohr, ICW AG 24
HL7 Transformation• ServiceMix bietet „nur“ Basistechnologie
(z.B. XSLT)• Domänenspezifische Komponenten auf
höherem Abstraktionsniveau notwendig– HL7 v2 HL7 v3– MLLP-Protokoll ist HL7-spezifisch, daher
ebenfalls keine Unterstützung• ServiceMix-Erweiterungen notwendig
Martin Krasser, Christian Ohr, ICW AG 25
Erweiterungen
ServiceMix
ServiceMix Erweiterungen
sm-jmssm-eip
ext-jmsext-eip ext-mllp
ext-hl7
- Abstract Router- Abstract Transformer- Resequencer- InOut/InOnly Bridge…
- HL7 v2 Router- HL7 v2 Transformer…
… …
- Transactional Consumer Enpoint
- MLLP Consumer Endpoint- MLLP Provider Endpoint
Martin Krasser, Christian Ohr, ICW AG 26
ServiceMix Erweiterungen• ext-hl7
– Domänenspezifische Implementierung von Patterns– Konfiguration auf höherem Abstraktionsniveau– Verwendung alternativer Technologien (Velocity …)
• ext-eip– JBI Abstraktionsschicht– Development Kit für Komponentenentwickler– Testumgebung für EIP-Komponenten
Martin Krasser, Christian Ohr, ICW AG 27
Herausforderungen• Wie macht man Nachrichtentransformation
– Skalierbar?– Ausfallsicher?– Wartbar?– Nachvollziehbar?– Flexibel?
• d.h. geeignet für den Routineeinsatz?
Martin Krasser, Christian Ohr, ICW AG 28
Transformation ist auf den ersten Blick einfach
D
HL7 V2
D
HL7 V3
Martin Krasser, Christian Ohr, ICW AG 29
… auf den zweiten Blick …
D
HL7 V2
D
HL7 V3Validierung Transformation Auslieferung
?
Martin Krasser, Christian Ohr, ICW AG 30
… auf den dritten Blick …
D
HL7 v3
D
HL7 v2
Martin Krasser, Christian Ohr, ICW AG 31
NotationModell JBI Beschreibung
JBI Service Endpoint(Router, Transformer …)
JBI Binding Endpoint(HTTP, JMS …)
MessageExchange über NMR
Externer Dienst
BC
SE
NMRDC
DC
Martin Krasser, Christian Ohr, ICW AG 32
ext-hl7
ext-mllp
sm-http
sm-file
Validierung
D
HL7 V2
D
HL7 V2
D
HL7 V2
File
HTTP
MLLP
Error log!
?
D
HL7 V2
Validator
Martin Krasser, Christian Ohr, ICW AG 33
ext-hl7
ext-hl7
ext-hl7
Transformation
D
HL7 V2
Content-basedRouter
V2_A01 to Reference
V2_A03 to Reference
Reference to V3_A01
Reference to V3_A03
D
HL7 V3
Error log!
Error log!
Martin Krasser, Christian Ohr, ICW AG 34
sm-http
sm-http
sm-jms ext-jms
ext-hl7sm-eip
Auslieferung
D
HL7 V3
Resequencer Recipient List
sync
sync
sync
SOAP/HTTP
JMS HTTPsync
syncJMS
?
Ext. Queue
sync syncJMS JMS
Martin Krasser, Christian Ohr, ICW AG 35
Erhaltung der Nachrichtensequenz• Zuweisung von Sequenznummern
– Berücksichtigung von Splits• Stream-Processing Resequencer
– Keine Batch-Größen bekannt– Timeout-basierter Algorithmus (Zeitfenster)
• Auslieferung– Synchron über NMR– Pufferung (JMS) unter Beibehaltung der Ordnung
Parallele Verarbeitung SEQ
SEQ
Martin Krasser, Christian Ohr, ICW AG 36
System Management• Monitoring
– JMX Infrastruktur von ServiceMix und ActiveMQ• Beispiel: JMS Queue (Auslieferung)
Enqueue Count Queue Size
Martin Krasser, Christian Ohr, ICW AG 37
System Management• Auditing
– Speicherung eingehender und ausgehender Nachrichten
• Statistik– Verarbeitungsdauer, Nachrichtendurchsatz …
Anwendung
Message Store
store confirm
Wire Tap
Martin Krasser, Christian Ohr, ICW AG 38
System Management• Re-play von Nachrichten• Filterung von Duplikaten
Duplicate Filter
status query
Anwendung
storeconfirm
Message Store
Martin Krasser, Christian Ohr, ICW AG 39
Bidirektionale Kommunikation• Wiederverwendung von Bausteinen, die nur
unidirektionale Kommunikation unterstützten• Neues Muster: InOut – InOnly Bridge
…
…
InOnly InOnly
InOnly InOnly
InOut InOut
Martin Krasser, Christian Ohr, ICW AG 40
Erfahrungen• Anwendungsentwicklung
– 30% Konfiguration existierender JBI-Komponenten– 70% Neu/Weiterentwicklung von JBI-Komponenten– Bessere Wartbarkeit durch domänenspezifische Patterns
• Komponentenentwicklung– Komplexität durch JBI API (4 MEPs, synchron, asynchron …)– JBI-Abstraktionsschicht zur Vermeidung häufiger Fehler
• ServiceMix– Stabile und performante JBI Plattform– Unterstützung von Spring bzw. XBean– Mangelhafte Dokumentation
• System Management– Gute JMX Infrastruktur von ServiceMix und ActiveMQ– Einfache und effiziente Möglichkeiten zur Erweiterung
Martin Krasser, Christian Ohr, ICW AG 41
Vielen Dank für Ihre Aufmerksamkeit!
Fragen?
martin.krasser@icw.dechristian.ohr@icw.de
Martin Krasser, Christian Ohr, ICW AG 42
Konsistente Datenhaltung• Verteiltes Transaktionsmanagement
– Synchrone Kommunikation– Asynchrone Kommunikation
• Unterstützung durch ServiceMix– XA Transaktionsmanager (Geronimo)– NMR als XA Resource (ActiveMQ)
NMRXA Transaction 1
NMRXA Transaction 2
NMR
NMR
XA Transaction
NMR NMRsynchron:
asynchron:
Martin Krasser, Christian Ohr, ICW AG 43
JBI Enterprise Service Bus• Plugin Schnittstellen konform zu JBI
• Plugins sind– Service Engines– Binding Components
• Nachrichtenaustausch über– NMR– Delivery Channel
• Verteilung wird von JBI nicht behandelt
Service Engine
Binding Component
Externer Dienst
Delivery Channel
Normalized Message Router (NMR)
JBI ESB
Martin Krasser, Christian Ohr, ICW AG 44
Weitere EIP Unterstützung– Apache ODE
• Ausführung von WS-BPEL Prozessdefinitionen
– sm-drools• Routing mit JBoss Drools (Rule Engine)
– sm-bean• POJO Programmiermodell
…