Anwendungsmodernisierung mit Oracle Application Express (APEX)
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems
1. Java on Tracks
Modellbahnsteuerung mit JEE, MicroProfile
und self-contained Systems
Expertenkreis Java, 14.01.2021
Dirk Weil, GEDOPLAN GmbH
2. Dirk Weil
GEDOPLAN GmbH, Bielefeld
GEDOPLAN IT Consulting
Consulting, coaching, concepts, reviews, development
GEDOPLAN IT Training
Trainings in Berlin, Bielefeld, on-site
JEE since 1998
Speaker and author
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 2
gedoplan.de
4. v5t11
Visual Train Control
VT 11.5
http://commons.wikimedia.org/wiki/
File:601_Verkehrsmuseum_Nuernberg_11092010_complete_train.JPG
gedoplan.de
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 4
6. Technische Basis: Digitalsteuerung Selectrix
Keine getrennten Stromkreise
Fahrspannung mit aufgeprägtem Digitalsignal
Loks enthalten Decoder
Fahrstufe
Richtung
Fahrlicht
Zusatzfunktionen (Sound etc.)
Systeme meist multiprokollfähig
SX (Selectrix)
DCC (NMRA-Standard)
MM (Motorola/Märklin)
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 6
gedoplan.de
7. Technische Basis: Digitalsteuerung Selectrix
Gleise werden mit Besetztmeldern überwacht
Weichen und Signale werden mit Funktionsdecodern gesteuert
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 7
gedoplan.de
1 Byte 8 Gleise
1 Byte 8 W. / S.
8. Domäne
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 8
gedoplan.de
Gleis
Lok
Weiche
Signal
Lokdecoder
Funktionsdecoder
Besetztmelder
Fahrstraße
Gleisverbindung
10. Microservices, Self-contained Systems
Microservice
Modularisierungsansatz
hohe innere Kohärenz
geringe äußere Kopplung
passt gut zu Bounded Context
"Micro" nicht weiter spezifiziert
SCS
Autonome (Teil-)Anwendung
Alleine lauffähig (Vorsicht bei synchroner Kommunikation!)
Eigene Datenhaltung
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 10
gedoplan.de
11. v5t11-SCSs
Teilanwendungen als SCSs
Quarkus
Jakarta EE + MicroProfile
Persistenz mit JPA, Hibernate, PostgreSQL
Synchrone Kommunikation via REST API und MP Rest Client
Asynchrone Kommunikation mit MP Reactive Messaging, MQTT
Web-UI mittels JSF (!)
(Altlast derzeit noch: Stellwerk hat Swing-UI)
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 11
gedoplan.de
12. Statusverwaltung v5t11-status
Anbindung Digitalzentrale mit serieller Schnittstelle / USB
https://fazecast.github.io/jSerialComm/
REST-API
für Signale
etc.
Web-UI für
Administration
und Debugging
Demo!
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 12
gedoplan.de
@Path("signal")
@Dependent
public class SignalEndpoint {
@PUT
@Path("{bereich}/{name}")
@Consumes(MediaType.MEDIA_TYPE_WILDCARD)
public void putSignalStellung(@PathParam("bereich") String
13. Fahrstraßenverwaltung v5t11-fahrstrassen
MP Rest Client
zum Stellen von
Signalen etc.
MP Reactive Messaging für asynchrone Änderungsmeldungen
Demo!
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 13
gedoplan.de
@RegisterRestClient(configKey = "v5t11.status")
public interface StatusGateway {
@PUT
@Path("signal/{bereich}/{name}")
@Consumes(MediaType.TEXT_PLAIN)
void signalStellen(@PathParam("bereich") String bereic
@Incoming("gleis-in")
void gleisChanged(byte[] msg) {
String json = new String(msg);
@Inject @Channel("gleis-out")
Emitter<String> gleisEmitter;
public void publish(Gleis gleis) {
String json = …
this.gleisEmitter.send(json);
14. Fahrzeugverwaltung v5t11-fahrzeuge
MP Rest Client und MP Reactive Messaging analog
Web-UI zur Fahrzeugkonfiguration und Steuerung mit JSF
Demo!
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 14
gedoplan.de
15. Visualisierung v5t11-leitstand
Alte Swing-Anwendung mit Quarkus-Unterbau
MP Rest Client und MP Reactive Messaging wie zuvor
Demo!
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 15
gedoplan.de
16. Weitere Planung
Fahrzeug-Verfolgung
Welches Fahrzeug steht/fährt wo?
Vorsignalautomatik
Vorsignale folgen dem nächsten Hauptsignal im Fahrweg
Teilautomatisierung
Automatisches Abstellen im Schattenbahnhof
Ausblenden der Geräusche in unsichtbaren Abschnitten
Betrieb als Docker-Container in Kubernetes
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 16
gedoplan.de
17. Erfahrungen, Rückblick
Erste EE-Version war ein Monolith
Java EE 6, JBoss 7
Aufsplittung in SCSs
+ Überschaubare Einheiten
+ Entkopplung der Datenmodelle
+ zügiges (Re-) Deployment
- Teilredundante Daten
- Kommunikationsaufwand
Quarkus
+ schnelle Entwicklungszyklen
+ schnell wachsendes Ökosystem
MicroProfile
+ Simple und leistungsfähige Bausteine (Config, Rest Client, …)
+ Leichte Einbindung von Message Brokern (MQTT, AMQP, …)
- Reactive Messaging abstrahiert nicht weit genug (z. B. Nutzlast)
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 17
gedoplan.de
18. … und was ist mit dem "echten Leben"?
Steuerung eines
fahrerlosen
Transportsystems
(FTS)
gedoplan.de
Java on Tracks - Modellbahnsteuerung mit JEE, MicroProfile und self-contained Systems 18