it-at-m / digiwf-core

central workflow automation and integration platform based on the free process framework Camunda.
MIT License
19 stars 7 forks source link

Refactor spring-cloud-stream-utils to simplify integration development and error handling in digiwf integrations #167

Closed lmoesle closed 1 year ago

lmoesle commented 1 year ago

Aufgaben

lmoesle commented 1 year ago

Das mit den Aspects ist leider nicht so einfach umzusetzen, da die Spring Cloud Stream Consumer Functional Interfaces sind und Aspects nicht so einfach auf Lambda Funktionen reagieren können.

Spring Cloud Stream unterstützt aber ab Version 3.2.5 Error Handling. Dementsprechend versuche ich die Spring Cloud Dependencies zu aktualisieren und implementiere dann auf dieser Basis das Error Handling.

lmoesle commented 1 year ago

Anstatt die Spring Cloud Stream Utils zu refactoren habe ich eine neue Lib digiwf-message erstellt, um Abwährtskompatibilität sicherzustellen.

Bei der digiwf-message lib habe ich unterschiedliche Module erstellt, um die Spring Cloud Funktionalität zu abstrahieren. Dadurch wird die Entwicklung von Integrationen weniger technisch und man kann sich auf die eigentliche Entwicklung der Integration fokusieren

lmoesle commented 1 year ago

Ich hab einen ersten Wurf fertig: https://github.com/it-at-m/digiwf-core/pull/173

Wir haben jetzt die ganze Spring Cloud Stream Logik in eine Bibliothek ausgelagert (digiwf-integration-lib). In den Integrationen muss nur noch diese Lib angezogen und verwendet werden. Für Spring Cloud Stream müssen nur noch ein paar Configs in der application.yml gesetzt werden und die Developer müssen eine @Bean definieren, die eine Methode mit der @DigiwfIntegration(type = "...") Annotation versehen ist.

Zusätzlich habe ich die ganze Logik, um Nachrichten in Kafka zu schreiben in die digiwf-message Lib ausgelagert. Diese Lib wird von der digiwf-integration-lib intern verwendet, um z.B. das Error Handling oder CorrelateMessage zu implementieren.

Aktuell ist erstmal nur noch die Doku offen