@GULP: Toll, wenn man nach jedem Einfügen nix weiteres mehr einfügen kann ...
Restaurant-Bestellservice
DasProjekt ist Teil des udemy-Tutorials ?Microservices: Clean Architecture, DDD, SAGA, Outbox & Kafka? von Ali Gelenler. Die Anwendung baut sich aus 4 Microservices auf: Order-, Customer-, Payment- und Restaurant-Service. Der Order-Service enthält eine REST Schnittstelle, über die Bestellungen eingehen können. Transaktionen geschehen über das Outbox-Pattern, wobei jeder Prozess-Schritt ?Success?- oder ?Failure?- Messages ablegen kann (SAGA-Pattern). Ein Scheduler triggert alle 10 Sek. Nachrichten der Outbox-Tabellen in ein Kafka-Topic.
Der Customer-Service enthält ebenfalls einen REST-Port, über den ein Customer erstellt werden kann. Eine Read-Only Customer-Tabelle befindet sich im Order-Service. Damit wird das CQRS-Pattern implementiert.
Der Build geschieht mit Maven und erstellt docker-images für jeden Service, Ich nutze Kubernetes über docker und lade die docker-container von Zookeeper, Kafka und Schema-Registry per helm-Script.Anforderung: Migrationsplan mit Microservice-Architektur für den Bereich ?Kunden Informations-Management? (KIM) als Teil einer Legacy Anwendung für ca. 1.000 Banken.
Die Anforderung wurde mit folgenden Details umgesetzt
· Datenbank-Schema und Tabellen für Neuanwendung für den Teil Zinsberechnung, Banken-Produkte und KIM
· Migrationsplan für Daten zwischen Legacy- und Microsoft Anwendung
· Einsatz von Kafka als Messaging System
· Einsatz von Debezium-Connector zum Auslösen von Änderungs-Ereignissen in Legacy-Datenbank.
· Anwendungs-Entwicklung: Java, Spring Framework, DDD, Hexagonalem Design
Wartung & Weiterentwicklung Applikationen (entwickelt seit 2016) zur Erfassung von Messen im In- und Ausland mit Gewährung von fin. Zuschüssen für Messeaussteller
Entwicklung neuer Features (Front- und Backend), Behebung von Bugs, Modifikationen im Arbeitsablauf in einzelnen Modulen
REST- Webservice mit Spring und Wildfly zur Anmeldung von Messe-Ausstellern
Wartung und Weiterentwicklung des bestehenden CMS (Customer Management Systems) auf Basis des Eclipse-Scout Frameworks
Entwicklung eines Finance-Tools zur Erstattung überbezahlter Rechnungen mit csv-Import, XML-Export, Anzeige der Daten zu ausgewählten Stati in der Haupt-Übersicht mit diversen Filtermöglichkeiten
Report-Erstellung, Bereitstellung von Daten aus der Oracle Datenbank mittels PL/SQL
Umzug des Git-Repositories: Das Projekt, das von der Firma BSIAG gewartet worden war, wurde auf ein lokales Git-Repository umgezogen
Einrichtung von Repositories in Artifactory
Erstellung von Jenkins-Jobs für verschiedenen Belange (Build-Prozess)
Client- und serverseitige REST Webservices erweitern, Fehler beheben, testen (SoapUI, Postman)
Erstellen umfangreicher Proceduren / Packages in Oracle PL/SQL u.a. zum Export von Daten als csv in ein File
Fehlerbehebung und Umsetzung von Change-Requests in Front- und Backend für ?RuvConnect?, der Hauptanwendung für Tarifierung, Angebot, Antrag.
DecisionSpace (Landmark) und PreStack-Pro (SharpReflections) sind Anwendungen zur Auswertung seismischer Daten. DecisionSpace ist eine Eclipse RCP Anwendung, das Plugin exportiert Bohrloch-Daten aus DecisionSpace in ein PreStack-Pro Projekt. Ein PreStack-Pro Projekt wird in einem XML Document definiert; es enthält Daten und Metadaten. Die Projektdaten werden in Unterverzeichnissen des Projekt-Verzeichnisses gespeichert. Geogarfische Bohrloch-Daten (Koordinaten, Tiefe) werden mit Protobuf serialisiert, andere Daten (physikalisch / chemische Eigenschaften) werden als 32bit ? Little Endian Bytes gespeichert. Der Client (Plugin) zeigt dem Benutzer die Bohrlochdaten in einer Art Master-Details Oberfläche an. Der Export geschieht über einen Dialog, in welchem der Benutzer die zu exportierenden Daten selektieren kann. Bereits exportierte Daten sind im Client gekennzeichnet.
Wartung, Fehlerbehebung und Entwicklung von Erweiterungen in bestehenden Anwendungen: Reportanwendung mit BIRT, Entwicklung von Webservices zum Zugriff der Reports, (SOAP), Test mit SOAPUI
Qualitätssicherung der Jira-Issues. Status-Verfolgung und Eskalation überfälliger Issues
Migration einer Eclipse RCP 3 Anwendung nach Eclipse 4, Refactoring und Weiterentwicklung
Funktionen aus Entity-Beans entfernt und in OSGI-Services übertragen
ORM Schicht mit Eclipselink
Projekt-Build per Maven.
GUI-Tests mit SWT-Bot
Versionierung auf Bitbucket, Builds per Jenkins
Entwicklung einer Netbeans-RCP Anwendung zum Zusammenfügen von .pdf Dokumenten. Die Daten für ein zusätzliches Datenblatt sowie die Zuordnung der Einzeldokumente zu diesem Datenblatt wurde in einer SQLite Datenbank gespeichert. ? Einzelplatz-Anwendung ohne Netzwerkfähigkeit.
Excel-Anwendung zur Verteilung (Speicherung) von hierarchisch zusammenhängenden Daten in verschiedene Tabellen einer MySQL Datenbank.
Erstellen von Excel-Reports + Programmierung der gespeicherten Prozeduren auf SQL Server 2012.
Synchronisation von MySQL und SQL-Server Daten mittels SQL-Server Cron-Job
Bemerkung: Als Vorbereitung für ein Java-Projekt hatte ich eine Schulung in TREND Enterprise-Framework (Tom Krauss, Gebit Berlin). - Das Projekt wurde aus Budgetgründen verschoben.
Chemische Substanzen werden in einer Baum-Hierarchie dargestellt. Bei Auswahl einer Sustanz werden in weiteren Fenstern Details der Substanz, sämtliche Chargen (Batches) und Abfüllungen (Bottles) angezeigt. Wie in RCP-Applikationen möglich, können die Teilfenster frei in einem Hauptfenster angeordnet oder ausserhalb des Hauptfensters geöffnet werden.
Der Lebenslauf einer Bottle mit Auslieferungen von Mengen intern/extern wird getrackt, so dass sich der Verbleib von Radioaktivität später exakt nachweisen lässt. In einem der Reports wird dieser Verbleib detailliert aufgeschlüsselt. Workflows (Prozesse) wurden generisch programmiert, indem die Abfolge ihrer Aktionen in der Datenbank hinterlegt wurde. Ebenso wurde ein Berechtigungs-Management generisch angelegt, das die Rechte des eingeloggten Benutzers mit den notwendigen Berechtigungen je Prozess und Aktion abgleicht und so die Aktivierung von Steuerelementen oder Benachrichtigungen steuert.
Mit Instant JChem. Instant als Plattform stehen spezielle Steuerelemente zur Darstellung und zum Zeichnen von chemischen Strukturen zur Verfügung, die beim Neu-Anlegen oder Editieren bestehender Substanzen zum Einsatz kommen. Über die API wurde auch die Substruktursuche wird entwickelt.
Das Schema der Datenbank (Midas) wurde auf einer Oracle Datenbank neu entwickelt. Funktionen, Trigger, Prozeduren und Views wurden in PL/SQL entwickelt.
Zur Entwicklung der Oberfläche wurde Swing eingesetzt. Der Code wurde Netbeans Designer generiert und teilweise von Hand überarbeitet. Für einzelne Dialoge auch JavaFx.
Von 01-03/2015 wurden schließlich die Produktionsdaten aus Frankreich und Deutschland migriert. Zur Beurteilung, Aufbereitung und Verteilung der Daten mussten weitere, umfangreiche PL/SQL Skripte geschrieben werden, da sich das alte und neue Schema stark unterscheiden.
Die Report-Templates der DAWM wurden design- und codemässig überarbeitet. Die Designanpassung wurde durch die Integration der DAWM, früher Cologne Private Equity, in die Deutsche Bank notwendig. Das codemässige Refactoring vereinheitlichte Abläufe, die vorher in Copy & Paste Code auf Workbooks verteilt bestanden, indem sie in gemeinsamen Modulen und Klassen abgebildet wurden.
Beim Update der gespeicherten Prozeduren wurden Parameternamen, vereinheitlicht. Die neuen Parameter wurden mit Datentyp als Metadaten für die Anwendung in einer eigenen Tabelle geführt. Einige Prozeduren mussten neu entwickelt werden.
Für bestimmte Aufgaben besteht eine VB6-Anwendung, über welche Fachredakteure auf das Dokumenten-Management EMC Documentum Zugriff haben. Die Documentum-Bibliotheken wurden aus dem Client entfernt; die Methoden in einer Java-Serveranwendung implementiert. Der Client erhielt in C# erstellte COM-Komponenten für den Aufruf der Servermethoden und Empfang der Rückgabe. So ist es möglich, Updates der Fachbibliotheken (DFC: Documentum Foundation Classes) zentral durchzuführen.
Zusammenfügen von Einzeldokumenten: Word-Dokumente, welche regelkonform erstellt wurden, können mit der Client-Anwendung hierarchisch zu einem neuen Dokument zusammengefügt werden. Das Persistieren der Dokumente geschieht per Funktionen in Documentum, die als Webservice zur Verfügung stehen.
Word-Dokumente, die als html- Dokumente im Documentum- Repository veröffentlicht werden sollen, müssen nach bestimmten Regeln erstellt werden, damit die Konvertierung gelingt. Die Einhaltung dieser Regeln wird durch das Word-Dokumente- Analyseprogramm überprüft. Fehler werden in einer Liste im Formular angezeigt und in einem Textfile ausgegeben. Bestimmte Fehler werden sofort behoben.
Projekt-, Budget- und Resourcen-Daten werden in dieser Anwendung zusammengeführt, die vorher über mehrere Excel-Anwendungen (Workbooks) verteilt waren. Mithilfe dieser neu entwickelten Anwendung kann der Projektplaner direkt auf passende Ressourcen zugreifen, ihren Verfügbarkeits-Zeitraum einsehen und ihre Spezifikationen. Weiterhin kann er das nicht verbrauchte Budget aus anderen Projekten in ein anderes Projekt transferieren.
Über Talend-Jobs werden die Felder zwischen Quelle und Ziel zugeordnet, zusätzliche Felder berechnet und die Datenqualität sicher gestellt.
Für den Import von Kennzahlen wurde ein Excel Dokument entwickelt, das die Daten aller Arbeitsblätter eines Workbooks zusammenfasst. Eine Access-Anwendung greift diese Daten ab, verifiziert sie anhand Benutzer definierter Regeln und gibt sie transformiert in Excel-Workbooks aus. Dort unternimmt der Benutzer Korrekturen und gibt die Daten frei. Die freigegebenen Daten können daraufhin in der Access Anwendung aus der Importdaten-Tabelle in die Kennzahlentabelle übertragen werden. Eine weitere Report-Anwendung (Excel) greift auf Funktionen der Access-Anwendung zu, um berechnete Daten, gefiltert mithilfe eines Formulars, in ausgewählte Bereiche eines Arbeitsblattes zu schreiben. Mehrere Abfragen auf einem Arbeitsblatt definieren einen Standardreport.
Die Anwendung besteht aus 5 Modulen. Besonderheiten:
Verifizierung der Daten anhand benutzerdefinierter Regeln
Datenanalyse auf Basis benutzerdefinierter Reports
Assistenten-Formular zum Erstellen benutzerdefinierter Formeln und Regeln
Nominierungs-Nachrichten Dienstanwendung - Fahrplan Erstellung (Gas)
Business kritische Anwendung zum Senden, Empfangen und Verarbeiten von XML-Nachrichten. Die als Windows-Dienst gehostete Java-Anwendung benachrichtigt Gas-Kunden; diese senden Ihre Antwort zurück. Daten-Austauschformat ist XML. Ausgehende Nachrichten werden über Inubit transportiert und in das Edigas Format übersetzt. Auf dem Weg vom Gas-Kunden zu RWE werden die Daten von Inubit nach XML konvertiert. Der Parser für die eingehenden Nachrichten, den ich entwickelt habe, berücksichtigt kundenspezifische Extras, um Tags und Attribute zu interpretieren. Sender- und Empfangs-Thread ermitteln zeitgesteuert neue Daten bzw. Dateien, woraufhin die Verarbeitung gestartet wird.
In PL/SQL programmiert hatte ich eine View für die Anzeige in der Benutzeroberfläche.
Im Fehlerfall wurde eine Fehlermeldung in das Nachrichten-Tool der Inubit geschrieben, welche der 24x7- First-Level Support bewerten musste. Ich war beteiligt am 2. Level Support.
Technologie
Java, Ecplipse 3 (RCP, SWT), Hibernate, Threads, SAX, XML, Edigas, Oracle 9, PL/SQL
Notfall- Excel- Anwendung, Fahrplan-Management (Strom)
Diese Anwendung kommt zum Einsatz bei Netzwerkausfall, wobei nur noch Kommunikation über Telefon/Modem verfügbar ist. Eingehende XML-Fahrpläne werden von dieser Anwendung in Excel-Spreadsheets dargestellt, formatiert im wohl bekannten "KISS" Format (Keep It Small and Simple). Umgekehrt werden XML-Fahrpläne auf Basis der Excel-Spreadsheets erstellt. Hier wurde eine Menge Wissen zu Regelzonen und Bilanzkreisen umgesetzt.
Technologie
Excel 2003 (VBA), MS-XML-DOM- Bibliothek
Anomaly-Report:
Übersichtliche Darstellung von Differenzen zwischen angeforderten und konfirmierten Fahrplandaten. Dargestellt werden optional die nächsten vier Stunden oder der ganze Tag. Eingehendes Format: XML.
Technologie
VB6, DOM (zum Parsen des XML-Anomaly-Reports)
Alocation-Tool:
Business kritische Access-Anwendung zum Vergleich nominierter und allokierter Gasmengen für die Rechnungsstellung ab 01.10.2008. Über einen komplexen Filter können die Parameter von Standard-Reports gesetzt werden. Diese Report-Definitionen werden in einer zentralen Datenbank gespeichert, so dass alle Anwender die gleiche Report-Basis haben. Die Reports werden in neue oder vorhandene Excel-Arbeitsmappen ausgegeben.
Technologie
Access 2003, VBA, Excel 2003, VBA, Excel-Charts, Oracle 9
Reparatur defekter Nummernkreise oder Elten-Kind Beziehungen
Die Access-Anwendung erhält ihre Daten aus ENDUR. Die Beziehungen zwischen den Datensätzen, die durch Nummernkreise oder Elten-Kind- Beziehungen besteht, ist in diesen Daten defekt. Die Access-Anwendnung dient zum Anzeigen der Daten, wobei durch automatische Erkennung in Textfeldern eine Vorsortierung gegeben wird, welche die Datensatz-Hierarchie wieder herzustellen hilft. Letztlich wählt der Benutzer zusammengehörende Datensätze mit Checkboxen aus. Auf Basis der wiederhergestellten Beziehungen können dann korrekte Rechnungen erstellt werden. Die wiederhergestellten Beziehungen werden als .csv Datei an das ENDUR Team zurückgegeben.
Technologie
Access und Excel 2003, VBA, SQL, csv, XML
Simulation der niederländischen Handelsplattform (balancing regime, "Ausgleichsregime")
Simulation des balancing regime, das seit 04/2011 für den Gashandel mit den Niederlanden im Einsatz ist. Die Simulation trainiert Händler im Umgang mit den Regeln und er lernt das Verhalten des Marktes kennen. Access und Excel waren zur Umsetzung der Simulation vorgegeben. Die Anwendung besteht aus 5 Modulen: Einer Access-Anwendung zur Definition der Parameter für ein Simulations-Szenario, Bestimmung des Zeittaktes, Nominieren der Teilnehmer und Erstellen der Excel-Frontends für Spielleiter und Teilnehmer auf Basis zweier Excel-Templates. Eine zweite Access-Anwendung zur Unterstützung des Spielleiter Excel-Frontends. Die dritte Access-Anwendung enthält die gemeinsamen Daten. Eine Simulation kann vom Spielleiter gestartet werden, nachdem alle Teinehmer ihre Nominierung bestätigt haben. Der Zeittakt bestimmt die Dauer des Szenario und steuert die Aktualisierung der Teilnehmer- und Spielleiter- Excels. Die Excel-Frontends enthalten einen Chart mit fliessender Zeitachse und tabellarisch angeordnete Daten. Teilnehmer und Spielleiter nehmen Einfluss auf den Verlauf über ihre Excel-Frontends. Alle Module wurden auf Citrix gestartet.
Technologie
Excel 2003, Access 2003, VBA, SQL, Citrix
Migration Access 2003 Anwendung nach 2010
Mit Hilfe des "Office Code Compatibility Inspector" (OCCI) wurde das "Allocation Tool" ( s.o.) nach Access 2010 migriert. Die angepasste Anwendung läuft sowohl unter Access 2003 wie unter Access 2010.
Technologie
Access 2003, 2010, OCCI, Win XT, Win7
Neuentwicklung und Refactoring von Access-Anwendungen. Migration von Access-Datenbankbeständen auf SQL-Server 2005 Einrichten einer MySQL-Datenbank auf Solaris-Plattform und Datentransfer aus Access-Datenbank Planung einer Migration von Access (2000) auf .NET-Plattform
Die Anwendung deckt folgende Bereiche ab:
Diese Bereiche sind über Register in der Anwendung erreichbar. Ausgabe detaillierter Rechnungen in Excel
Kurzbeschreibung
Formular-Template-Designer
Aufgrund der komplexen Konfigurationsmöglichkeiten des Produkts (Türzarge) war es nötig, für die möglichen Typen je ein eigenes Formular zu gestalten, das bereits festgelegte Merkmale enthält, wodurch sich die Benutzereingaben vermindern. Der Benutzer erhielt einen Template-Designer, über den er die wesentlichen Merkmale festlegen konnte. Das Design wurde in der Datenbank gespeichert. Ein Sachbearbeiter braucht für einen Produkt-Typ anschließend nur Maße und Material anzugeben. Notwendige Berechnungen laufen über selbst definierte Formeln mit dem à Formeleditor Kontext-gebundene Texte können mit Regeln verknüpft und einem Kontext zugeordnet werden, in welchem sie angezeigt werden. So können - je nach Regel – Warn-Hinweise oder Bemerkungen (z.B. "Achtung: nur Bar-Zahlung", wenn Boni-Index > [Grenzwert]). Die Herkunft eines Textes kann an einen Kontext (z.B. Artikel, Kunde) wie auch an ein spezielles Objekt (spezieller Artikel, Kunde) gebunden werden. Wird vor allem zur automatischen Generierung von Arbeitsanweisungen benutzt. Formeleditor und Kontext-gebundene Formeln Der Benutzer hat zu Objekten aus der Datenbank je nach Typ bestimmte Operatoren zur Verfügung, welche in eine Formel gesetzt werden. Die Formel wird beim Speichern in php-Code umgeschrieben und in der Datenbank gespeichert. Anschließend kann der Benutzer den Kontext bestimmen, in welchem die Berechnung angezeigt werden soll.
Projekt 1: Geschäftsanwendung
Diese Access-Anwendung deckt folgende Bereiche ab:
Beim Aufbau der Stückliste zu einem Einkaufswagen-Förderer half die Businesslogik, zusammengehörige Artikel zu wählen. Mit den Verweisen zu Detailzeichnungen konnte der Einkaufswagen-Förderer schnell in Produktion gehen.
Weitere Aufgaben:
Erfassung von Arbeitszeiten, automatische Einstufung in Überstunden (je nach Vertrag der MA), Berechnung der Arbeitsleistung von Monteuren und Ingenieuren. Angebote, Aufträge, Lieferscheine, Preislisten, Stücklisten, Etiketten und Rechnungen für Montage wurden als Word Dokument aus der Anwendung generiert, teilweise unter Verwendung von Word-Templates.
Projekt 2: Akquise von Kunden, Angebotserfassung
Die Anwendung kam auf der Euroshop 2005 zum Einsatz, um Neukunden mit wenigen Daten erfassen zu können. Die Daten wurden in der gleichen Datenbank erfasst wie die der Geschäftsanwendung, die oben beschrieben ist.
weitere Projekte gerne auf Anfrage
2023.07.29 Microservices Clean Architecture-DDD-SAGA-Outbox-Kafka
2023.06.15 Beginning Kubernetes Practical Guide with Hands-on Approach
2023.04.27 Java Spring & Apache Kafka Bootcamp
2021.09.19 Spring Boot Microservices with JPA
2019.04.21 Mathematical Foundation For Machine Learning and AI
2001:
MCP, ASP- Webseiten-Entwicklung
Weiterbildung bei GFN in Essen
Schwerpunkt: Web-Entwicklung mit Java
1996:
Weiterbildung an der DEKRA-Akademie, Düsseldorf
Abschluss: "Fachmann für objektorientierte Programmierung und Expertensysteme"
1995:
Chemiestudium an der Universität Wuppertal
Abschluss als Diplom Chemiker
Datenbank basierte Anwendungen, Beratung, Analyse
Erfahrungen im Bereich:
Anwendungsprogrammierung, Test
Methoden:
Objektorientierte Programmierung
Modulare und serviceorientierte Programmierung
Ereignisgesteuerte, visuelle, strukturierte Programmierung
Datenbanken Design
Microsoft Standards:
OLE Automation Client/Server, ODBC, MAPI
MFC, API
Enterprise Framework
WCF, Prism-Framework
IDEs:
Netbeans 6.x - 8.x
Eclipse ab Ganymed, aktuell Luna
IntelliJ
Applicationserver:
jBoss Application Server 6, 7, Wildfly 8 und 9.
Tomcat
Glassfish
Daten-Integrations-Tools:
Talend Open Studio
Spezialkenntnisse:
Java
Spring Framework
Microservices
REST, SOAP
Kafka
docker
Kubernetes
Eclipse (ab Ganymed) RCP
SWT
Netbeans (7.4, 8.02)
JPA
Hibernate
Swing
Primefaces 6.x
JavaFX
Multithreading
rxJava2
Microservices (REST, SOAP)
Spring
Tomcat
Wildfly
Oracle (ab 9) PL/SQL
MS-SQL Server ab 2000
T-SQL
MySQL
SQL
XML
Access-, Excel-, Word-, Outlook- (ab '97) VBA
VB6.0
C#
WPF
XML-RPC
Instant JChem API (6.3)
EMC Documentum DFC (6.7)
Telekommunikation
Energiewirtschaft
Versicherung
Chemie/Pharma
Behörde
Metallindustrie
Maschinenbau
Handel
Forschung
Banken
@GULP: Toll, wenn man nach jedem Einfügen nix weiteres mehr einfügen kann ...
Restaurant-Bestellservice
DasProjekt ist Teil des udemy-Tutorials ?Microservices: Clean Architecture, DDD, SAGA, Outbox & Kafka? von Ali Gelenler. Die Anwendung baut sich aus 4 Microservices auf: Order-, Customer-, Payment- und Restaurant-Service. Der Order-Service enthält eine REST Schnittstelle, über die Bestellungen eingehen können. Transaktionen geschehen über das Outbox-Pattern, wobei jeder Prozess-Schritt ?Success?- oder ?Failure?- Messages ablegen kann (SAGA-Pattern). Ein Scheduler triggert alle 10 Sek. Nachrichten der Outbox-Tabellen in ein Kafka-Topic.
Der Customer-Service enthält ebenfalls einen REST-Port, über den ein Customer erstellt werden kann. Eine Read-Only Customer-Tabelle befindet sich im Order-Service. Damit wird das CQRS-Pattern implementiert.
Der Build geschieht mit Maven und erstellt docker-images für jeden Service, Ich nutze Kubernetes über docker und lade die docker-container von Zookeeper, Kafka und Schema-Registry per helm-Script.Anforderung: Migrationsplan mit Microservice-Architektur für den Bereich ?Kunden Informations-Management? (KIM) als Teil einer Legacy Anwendung für ca. 1.000 Banken.
Die Anforderung wurde mit folgenden Details umgesetzt
· Datenbank-Schema und Tabellen für Neuanwendung für den Teil Zinsberechnung, Banken-Produkte und KIM
· Migrationsplan für Daten zwischen Legacy- und Microsoft Anwendung
· Einsatz von Kafka als Messaging System
· Einsatz von Debezium-Connector zum Auslösen von Änderungs-Ereignissen in Legacy-Datenbank.
· Anwendungs-Entwicklung: Java, Spring Framework, DDD, Hexagonalem Design
Wartung & Weiterentwicklung Applikationen (entwickelt seit 2016) zur Erfassung von Messen im In- und Ausland mit Gewährung von fin. Zuschüssen für Messeaussteller
Entwicklung neuer Features (Front- und Backend), Behebung von Bugs, Modifikationen im Arbeitsablauf in einzelnen Modulen
REST- Webservice mit Spring und Wildfly zur Anmeldung von Messe-Ausstellern
Wartung und Weiterentwicklung des bestehenden CMS (Customer Management Systems) auf Basis des Eclipse-Scout Frameworks
Entwicklung eines Finance-Tools zur Erstattung überbezahlter Rechnungen mit csv-Import, XML-Export, Anzeige der Daten zu ausgewählten Stati in der Haupt-Übersicht mit diversen Filtermöglichkeiten
Report-Erstellung, Bereitstellung von Daten aus der Oracle Datenbank mittels PL/SQL
Umzug des Git-Repositories: Das Projekt, das von der Firma BSIAG gewartet worden war, wurde auf ein lokales Git-Repository umgezogen
Einrichtung von Repositories in Artifactory
Erstellung von Jenkins-Jobs für verschiedenen Belange (Build-Prozess)
Client- und serverseitige REST Webservices erweitern, Fehler beheben, testen (SoapUI, Postman)
Erstellen umfangreicher Proceduren / Packages in Oracle PL/SQL u.a. zum Export von Daten als csv in ein File
Fehlerbehebung und Umsetzung von Change-Requests in Front- und Backend für ?RuvConnect?, der Hauptanwendung für Tarifierung, Angebot, Antrag.
DecisionSpace (Landmark) und PreStack-Pro (SharpReflections) sind Anwendungen zur Auswertung seismischer Daten. DecisionSpace ist eine Eclipse RCP Anwendung, das Plugin exportiert Bohrloch-Daten aus DecisionSpace in ein PreStack-Pro Projekt. Ein PreStack-Pro Projekt wird in einem XML Document definiert; es enthält Daten und Metadaten. Die Projektdaten werden in Unterverzeichnissen des Projekt-Verzeichnisses gespeichert. Geogarfische Bohrloch-Daten (Koordinaten, Tiefe) werden mit Protobuf serialisiert, andere Daten (physikalisch / chemische Eigenschaften) werden als 32bit ? Little Endian Bytes gespeichert. Der Client (Plugin) zeigt dem Benutzer die Bohrlochdaten in einer Art Master-Details Oberfläche an. Der Export geschieht über einen Dialog, in welchem der Benutzer die zu exportierenden Daten selektieren kann. Bereits exportierte Daten sind im Client gekennzeichnet.
Wartung, Fehlerbehebung und Entwicklung von Erweiterungen in bestehenden Anwendungen: Reportanwendung mit BIRT, Entwicklung von Webservices zum Zugriff der Reports, (SOAP), Test mit SOAPUI
Qualitätssicherung der Jira-Issues. Status-Verfolgung und Eskalation überfälliger Issues
Migration einer Eclipse RCP 3 Anwendung nach Eclipse 4, Refactoring und Weiterentwicklung
Funktionen aus Entity-Beans entfernt und in OSGI-Services übertragen
ORM Schicht mit Eclipselink
Projekt-Build per Maven.
GUI-Tests mit SWT-Bot
Versionierung auf Bitbucket, Builds per Jenkins
Entwicklung einer Netbeans-RCP Anwendung zum Zusammenfügen von .pdf Dokumenten. Die Daten für ein zusätzliches Datenblatt sowie die Zuordnung der Einzeldokumente zu diesem Datenblatt wurde in einer SQLite Datenbank gespeichert. ? Einzelplatz-Anwendung ohne Netzwerkfähigkeit.
Excel-Anwendung zur Verteilung (Speicherung) von hierarchisch zusammenhängenden Daten in verschiedene Tabellen einer MySQL Datenbank.
Erstellen von Excel-Reports + Programmierung der gespeicherten Prozeduren auf SQL Server 2012.
Synchronisation von MySQL und SQL-Server Daten mittels SQL-Server Cron-Job
Bemerkung: Als Vorbereitung für ein Java-Projekt hatte ich eine Schulung in TREND Enterprise-Framework (Tom Krauss, Gebit Berlin). - Das Projekt wurde aus Budgetgründen verschoben.
Chemische Substanzen werden in einer Baum-Hierarchie dargestellt. Bei Auswahl einer Sustanz werden in weiteren Fenstern Details der Substanz, sämtliche Chargen (Batches) und Abfüllungen (Bottles) angezeigt. Wie in RCP-Applikationen möglich, können die Teilfenster frei in einem Hauptfenster angeordnet oder ausserhalb des Hauptfensters geöffnet werden.
Der Lebenslauf einer Bottle mit Auslieferungen von Mengen intern/extern wird getrackt, so dass sich der Verbleib von Radioaktivität später exakt nachweisen lässt. In einem der Reports wird dieser Verbleib detailliert aufgeschlüsselt. Workflows (Prozesse) wurden generisch programmiert, indem die Abfolge ihrer Aktionen in der Datenbank hinterlegt wurde. Ebenso wurde ein Berechtigungs-Management generisch angelegt, das die Rechte des eingeloggten Benutzers mit den notwendigen Berechtigungen je Prozess und Aktion abgleicht und so die Aktivierung von Steuerelementen oder Benachrichtigungen steuert.
Mit Instant JChem. Instant als Plattform stehen spezielle Steuerelemente zur Darstellung und zum Zeichnen von chemischen Strukturen zur Verfügung, die beim Neu-Anlegen oder Editieren bestehender Substanzen zum Einsatz kommen. Über die API wurde auch die Substruktursuche wird entwickelt.
Das Schema der Datenbank (Midas) wurde auf einer Oracle Datenbank neu entwickelt. Funktionen, Trigger, Prozeduren und Views wurden in PL/SQL entwickelt.
Zur Entwicklung der Oberfläche wurde Swing eingesetzt. Der Code wurde Netbeans Designer generiert und teilweise von Hand überarbeitet. Für einzelne Dialoge auch JavaFx.
Von 01-03/2015 wurden schließlich die Produktionsdaten aus Frankreich und Deutschland migriert. Zur Beurteilung, Aufbereitung und Verteilung der Daten mussten weitere, umfangreiche PL/SQL Skripte geschrieben werden, da sich das alte und neue Schema stark unterscheiden.
Die Report-Templates der DAWM wurden design- und codemässig überarbeitet. Die Designanpassung wurde durch die Integration der DAWM, früher Cologne Private Equity, in die Deutsche Bank notwendig. Das codemässige Refactoring vereinheitlichte Abläufe, die vorher in Copy & Paste Code auf Workbooks verteilt bestanden, indem sie in gemeinsamen Modulen und Klassen abgebildet wurden.
Beim Update der gespeicherten Prozeduren wurden Parameternamen, vereinheitlicht. Die neuen Parameter wurden mit Datentyp als Metadaten für die Anwendung in einer eigenen Tabelle geführt. Einige Prozeduren mussten neu entwickelt werden.
Für bestimmte Aufgaben besteht eine VB6-Anwendung, über welche Fachredakteure auf das Dokumenten-Management EMC Documentum Zugriff haben. Die Documentum-Bibliotheken wurden aus dem Client entfernt; die Methoden in einer Java-Serveranwendung implementiert. Der Client erhielt in C# erstellte COM-Komponenten für den Aufruf der Servermethoden und Empfang der Rückgabe. So ist es möglich, Updates der Fachbibliotheken (DFC: Documentum Foundation Classes) zentral durchzuführen.
Zusammenfügen von Einzeldokumenten: Word-Dokumente, welche regelkonform erstellt wurden, können mit der Client-Anwendung hierarchisch zu einem neuen Dokument zusammengefügt werden. Das Persistieren der Dokumente geschieht per Funktionen in Documentum, die als Webservice zur Verfügung stehen.
Word-Dokumente, die als html- Dokumente im Documentum- Repository veröffentlicht werden sollen, müssen nach bestimmten Regeln erstellt werden, damit die Konvertierung gelingt. Die Einhaltung dieser Regeln wird durch das Word-Dokumente- Analyseprogramm überprüft. Fehler werden in einer Liste im Formular angezeigt und in einem Textfile ausgegeben. Bestimmte Fehler werden sofort behoben.
Projekt-, Budget- und Resourcen-Daten werden in dieser Anwendung zusammengeführt, die vorher über mehrere Excel-Anwendungen (Workbooks) verteilt waren. Mithilfe dieser neu entwickelten Anwendung kann der Projektplaner direkt auf passende Ressourcen zugreifen, ihren Verfügbarkeits-Zeitraum einsehen und ihre Spezifikationen. Weiterhin kann er das nicht verbrauchte Budget aus anderen Projekten in ein anderes Projekt transferieren.
Über Talend-Jobs werden die Felder zwischen Quelle und Ziel zugeordnet, zusätzliche Felder berechnet und die Datenqualität sicher gestellt.
Für den Import von Kennzahlen wurde ein Excel Dokument entwickelt, das die Daten aller Arbeitsblätter eines Workbooks zusammenfasst. Eine Access-Anwendung greift diese Daten ab, verifiziert sie anhand Benutzer definierter Regeln und gibt sie transformiert in Excel-Workbooks aus. Dort unternimmt der Benutzer Korrekturen und gibt die Daten frei. Die freigegebenen Daten können daraufhin in der Access Anwendung aus der Importdaten-Tabelle in die Kennzahlentabelle übertragen werden. Eine weitere Report-Anwendung (Excel) greift auf Funktionen der Access-Anwendung zu, um berechnete Daten, gefiltert mithilfe eines Formulars, in ausgewählte Bereiche eines Arbeitsblattes zu schreiben. Mehrere Abfragen auf einem Arbeitsblatt definieren einen Standardreport.
Die Anwendung besteht aus 5 Modulen. Besonderheiten:
Verifizierung der Daten anhand benutzerdefinierter Regeln
Datenanalyse auf Basis benutzerdefinierter Reports
Assistenten-Formular zum Erstellen benutzerdefinierter Formeln und Regeln
Nominierungs-Nachrichten Dienstanwendung - Fahrplan Erstellung (Gas)
Business kritische Anwendung zum Senden, Empfangen und Verarbeiten von XML-Nachrichten. Die als Windows-Dienst gehostete Java-Anwendung benachrichtigt Gas-Kunden; diese senden Ihre Antwort zurück. Daten-Austauschformat ist XML. Ausgehende Nachrichten werden über Inubit transportiert und in das Edigas Format übersetzt. Auf dem Weg vom Gas-Kunden zu RWE werden die Daten von Inubit nach XML konvertiert. Der Parser für die eingehenden Nachrichten, den ich entwickelt habe, berücksichtigt kundenspezifische Extras, um Tags und Attribute zu interpretieren. Sender- und Empfangs-Thread ermitteln zeitgesteuert neue Daten bzw. Dateien, woraufhin die Verarbeitung gestartet wird.
In PL/SQL programmiert hatte ich eine View für die Anzeige in der Benutzeroberfläche.
Im Fehlerfall wurde eine Fehlermeldung in das Nachrichten-Tool der Inubit geschrieben, welche der 24x7- First-Level Support bewerten musste. Ich war beteiligt am 2. Level Support.
Technologie
Java, Ecplipse 3 (RCP, SWT), Hibernate, Threads, SAX, XML, Edigas, Oracle 9, PL/SQL
Notfall- Excel- Anwendung, Fahrplan-Management (Strom)
Diese Anwendung kommt zum Einsatz bei Netzwerkausfall, wobei nur noch Kommunikation über Telefon/Modem verfügbar ist. Eingehende XML-Fahrpläne werden von dieser Anwendung in Excel-Spreadsheets dargestellt, formatiert im wohl bekannten "KISS" Format (Keep It Small and Simple). Umgekehrt werden XML-Fahrpläne auf Basis der Excel-Spreadsheets erstellt. Hier wurde eine Menge Wissen zu Regelzonen und Bilanzkreisen umgesetzt.
Technologie
Excel 2003 (VBA), MS-XML-DOM- Bibliothek
Anomaly-Report:
Übersichtliche Darstellung von Differenzen zwischen angeforderten und konfirmierten Fahrplandaten. Dargestellt werden optional die nächsten vier Stunden oder der ganze Tag. Eingehendes Format: XML.
Technologie
VB6, DOM (zum Parsen des XML-Anomaly-Reports)
Alocation-Tool:
Business kritische Access-Anwendung zum Vergleich nominierter und allokierter Gasmengen für die Rechnungsstellung ab 01.10.2008. Über einen komplexen Filter können die Parameter von Standard-Reports gesetzt werden. Diese Report-Definitionen werden in einer zentralen Datenbank gespeichert, so dass alle Anwender die gleiche Report-Basis haben. Die Reports werden in neue oder vorhandene Excel-Arbeitsmappen ausgegeben.
Technologie
Access 2003, VBA, Excel 2003, VBA, Excel-Charts, Oracle 9
Reparatur defekter Nummernkreise oder Elten-Kind Beziehungen
Die Access-Anwendung erhält ihre Daten aus ENDUR. Die Beziehungen zwischen den Datensätzen, die durch Nummernkreise oder Elten-Kind- Beziehungen besteht, ist in diesen Daten defekt. Die Access-Anwendnung dient zum Anzeigen der Daten, wobei durch automatische Erkennung in Textfeldern eine Vorsortierung gegeben wird, welche die Datensatz-Hierarchie wieder herzustellen hilft. Letztlich wählt der Benutzer zusammengehörende Datensätze mit Checkboxen aus. Auf Basis der wiederhergestellten Beziehungen können dann korrekte Rechnungen erstellt werden. Die wiederhergestellten Beziehungen werden als .csv Datei an das ENDUR Team zurückgegeben.
Technologie
Access und Excel 2003, VBA, SQL, csv, XML
Simulation der niederländischen Handelsplattform (balancing regime, "Ausgleichsregime")
Simulation des balancing regime, das seit 04/2011 für den Gashandel mit den Niederlanden im Einsatz ist. Die Simulation trainiert Händler im Umgang mit den Regeln und er lernt das Verhalten des Marktes kennen. Access und Excel waren zur Umsetzung der Simulation vorgegeben. Die Anwendung besteht aus 5 Modulen: Einer Access-Anwendung zur Definition der Parameter für ein Simulations-Szenario, Bestimmung des Zeittaktes, Nominieren der Teilnehmer und Erstellen der Excel-Frontends für Spielleiter und Teilnehmer auf Basis zweier Excel-Templates. Eine zweite Access-Anwendung zur Unterstützung des Spielleiter Excel-Frontends. Die dritte Access-Anwendung enthält die gemeinsamen Daten. Eine Simulation kann vom Spielleiter gestartet werden, nachdem alle Teinehmer ihre Nominierung bestätigt haben. Der Zeittakt bestimmt die Dauer des Szenario und steuert die Aktualisierung der Teilnehmer- und Spielleiter- Excels. Die Excel-Frontends enthalten einen Chart mit fliessender Zeitachse und tabellarisch angeordnete Daten. Teilnehmer und Spielleiter nehmen Einfluss auf den Verlauf über ihre Excel-Frontends. Alle Module wurden auf Citrix gestartet.
Technologie
Excel 2003, Access 2003, VBA, SQL, Citrix
Migration Access 2003 Anwendung nach 2010
Mit Hilfe des "Office Code Compatibility Inspector" (OCCI) wurde das "Allocation Tool" ( s.o.) nach Access 2010 migriert. Die angepasste Anwendung läuft sowohl unter Access 2003 wie unter Access 2010.
Technologie
Access 2003, 2010, OCCI, Win XT, Win7
Neuentwicklung und Refactoring von Access-Anwendungen. Migration von Access-Datenbankbeständen auf SQL-Server 2005 Einrichten einer MySQL-Datenbank auf Solaris-Plattform und Datentransfer aus Access-Datenbank Planung einer Migration von Access (2000) auf .NET-Plattform
Die Anwendung deckt folgende Bereiche ab:
Diese Bereiche sind über Register in der Anwendung erreichbar. Ausgabe detaillierter Rechnungen in Excel
Kurzbeschreibung
Formular-Template-Designer
Aufgrund der komplexen Konfigurationsmöglichkeiten des Produkts (Türzarge) war es nötig, für die möglichen Typen je ein eigenes Formular zu gestalten, das bereits festgelegte Merkmale enthält, wodurch sich die Benutzereingaben vermindern. Der Benutzer erhielt einen Template-Designer, über den er die wesentlichen Merkmale festlegen konnte. Das Design wurde in der Datenbank gespeichert. Ein Sachbearbeiter braucht für einen Produkt-Typ anschließend nur Maße und Material anzugeben. Notwendige Berechnungen laufen über selbst definierte Formeln mit dem à Formeleditor Kontext-gebundene Texte können mit Regeln verknüpft und einem Kontext zugeordnet werden, in welchem sie angezeigt werden. So können - je nach Regel – Warn-Hinweise oder Bemerkungen (z.B. "Achtung: nur Bar-Zahlung", wenn Boni-Index > [Grenzwert]). Die Herkunft eines Textes kann an einen Kontext (z.B. Artikel, Kunde) wie auch an ein spezielles Objekt (spezieller Artikel, Kunde) gebunden werden. Wird vor allem zur automatischen Generierung von Arbeitsanweisungen benutzt. Formeleditor und Kontext-gebundene Formeln Der Benutzer hat zu Objekten aus der Datenbank je nach Typ bestimmte Operatoren zur Verfügung, welche in eine Formel gesetzt werden. Die Formel wird beim Speichern in php-Code umgeschrieben und in der Datenbank gespeichert. Anschließend kann der Benutzer den Kontext bestimmen, in welchem die Berechnung angezeigt werden soll.
Projekt 1: Geschäftsanwendung
Diese Access-Anwendung deckt folgende Bereiche ab:
Beim Aufbau der Stückliste zu einem Einkaufswagen-Förderer half die Businesslogik, zusammengehörige Artikel zu wählen. Mit den Verweisen zu Detailzeichnungen konnte der Einkaufswagen-Förderer schnell in Produktion gehen.
Weitere Aufgaben:
Erfassung von Arbeitszeiten, automatische Einstufung in Überstunden (je nach Vertrag der MA), Berechnung der Arbeitsleistung von Monteuren und Ingenieuren. Angebote, Aufträge, Lieferscheine, Preislisten, Stücklisten, Etiketten und Rechnungen für Montage wurden als Word Dokument aus der Anwendung generiert, teilweise unter Verwendung von Word-Templates.
Projekt 2: Akquise von Kunden, Angebotserfassung
Die Anwendung kam auf der Euroshop 2005 zum Einsatz, um Neukunden mit wenigen Daten erfassen zu können. Die Daten wurden in der gleichen Datenbank erfasst wie die der Geschäftsanwendung, die oben beschrieben ist.
weitere Projekte gerne auf Anfrage
2023.07.29 Microservices Clean Architecture-DDD-SAGA-Outbox-Kafka
2023.06.15 Beginning Kubernetes Practical Guide with Hands-on Approach
2023.04.27 Java Spring & Apache Kafka Bootcamp
2021.09.19 Spring Boot Microservices with JPA
2019.04.21 Mathematical Foundation For Machine Learning and AI
2001:
MCP, ASP- Webseiten-Entwicklung
Weiterbildung bei GFN in Essen
Schwerpunkt: Web-Entwicklung mit Java
1996:
Weiterbildung an der DEKRA-Akademie, Düsseldorf
Abschluss: "Fachmann für objektorientierte Programmierung und Expertensysteme"
1995:
Chemiestudium an der Universität Wuppertal
Abschluss als Diplom Chemiker
Datenbank basierte Anwendungen, Beratung, Analyse
Erfahrungen im Bereich:
Anwendungsprogrammierung, Test
Methoden:
Objektorientierte Programmierung
Modulare und serviceorientierte Programmierung
Ereignisgesteuerte, visuelle, strukturierte Programmierung
Datenbanken Design
Microsoft Standards:
OLE Automation Client/Server, ODBC, MAPI
MFC, API
Enterprise Framework
WCF, Prism-Framework
IDEs:
Netbeans 6.x - 8.x
Eclipse ab Ganymed, aktuell Luna
IntelliJ
Applicationserver:
jBoss Application Server 6, 7, Wildfly 8 und 9.
Tomcat
Glassfish
Daten-Integrations-Tools:
Talend Open Studio
Spezialkenntnisse:
Java
Spring Framework
Microservices
REST, SOAP
Kafka
docker
Kubernetes
Eclipse (ab Ganymed) RCP
SWT
Netbeans (7.4, 8.02)
JPA
Hibernate
Swing
Primefaces 6.x
JavaFX
Multithreading
rxJava2
Microservices (REST, SOAP)
Spring
Tomcat
Wildfly
Oracle (ab 9) PL/SQL
MS-SQL Server ab 2000
T-SQL
MySQL
SQL
XML
Access-, Excel-, Word-, Outlook- (ab '97) VBA
VB6.0
C#
WPF
XML-RPC
Instant JChem API (6.3)
EMC Documentum DFC (6.7)
Telekommunikation
Energiewirtschaft
Versicherung
Chemie/Pharma
Behörde
Metallindustrie
Maschinenbau
Handel
Forschung
Banken