Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG

Die Seite wird erstellt Fynn Nolte
 
WEITER LESEN
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
Hysterisch gewachsen,
trotzdem orchestriert –
connected by Camunda
Benjamin Klatt und Mathias Schulte, viadee

Geschäftsprozesse sind die Algorithmen von Unternehmen. Ihre Automatisierung bedeutet in der Regel
jedoch eine gute Portion Integrationsherausforderungen. Besonders anspruchsvoll sind hier Anwendungs-
landschaften mit Legacy-Systemen, die keine idealtypischen, externen Schnittstellen wie beispielsweise
REST-Microservices bereitstellen. Camunda als leichtgewichtige Open Source Workflow Engine verspricht hier
hohe Flexibilität. In diesem Artikel stellen die Autoren die verschiedenen technischen Möglichkeiten vor. Zudem
teilen sie ihre Erfahrungen, bei welchen Architekturanforderungen sich welcher Integrationsansatz besonders
empfiehlt.

44
                                                                                                                iii
                                                                                                                 iii
                                                                                                            iii

                                                                                                  www.ijug.eu
                                                                                                                iii
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
Abbildung 1: Prozessautomatisierung mit Integrationspunkten (© Benjamin Klatt)

V    iele Unternehmen arbeiten daran, ihre bestehenden Geschäfts-
     prozesse zu automatisieren, um den Anteil sogenannter „Dun-
kelverarbeitung“ zu erhöhen. Ist der gewünschte Geschäftsprozess
                                                                          direkt von der Prozessanwendung ansprechen kann und möchte,
                                                                          so spricht man von einer nativen Integration. Ein Wrapper bedeutet
                                                                          hingegen, dass man ein Stück Software zwischen Prozessanwen-
entworfen, so warten oft unterschätzte Herausforderungen bei der          dung und System platziert, um sie miteinander zu integrieren.
Integration bestehender Legacy-Systeme, wie in Abbildung 1 ge-
kennzeichnet. Nur selten stehen hier wohldefinierte Schnittstellen        remote - embedded
wie moderne REST-Services bereit, sondern es gilt, diverse Remote-        Bei einer Remote-Integration wird ein eigenständig laufendes Sys-
Schnittstellen von gewachsenen SOAP-Webservices bis HOST-Stre-            tem angebunden, während bei einer embedded Variante das Sys-
cken anzubinden und teilweise sogar Programmbibliotheken zu inte-         tem, beispielsweise in Form einer Programmbibliothek, direkt mit
grieren. Camunda bietet hierfür eine Bandbreite von Techniken, die die    der Prozessanwendung verpackt wird.
Autoren nachfolgend vorstellen und Tipps bei der Auswahl geben.
                                                                          Die vorgestellten Dimensionen können unabhängig voneinander
Architektur-Dimensionen                                                   betrachtet werden. Die identifizierten Ausprägungen helfen, die
Bevor die Autoren genauer auf die Camunda-Integrationstechniken           Liste der potenziellen Camunda-Integrationsmöglichkeiten ein-
schauen, werfen sie einen Blick auf Architektur-Dimensionen, die          zuschränken, da nicht jede Ausprägung von allen Alternativen
hilfreich bei der Wahl der richtigen Alternative sind. Als Vorbereitung   unterstützt wird. Zunächst stellen die Autoren aber die Möglich-
der Integration empfiehlt es sich, sich für jedes zu integrierende        keiten vor.
System bewusst zu machen, welche Ausprägungen der folgenden
Dimensionen gefordert sind:                                               Integrationsmöglichkeiten
                                                                          Camunda bietet vier grundlegende technische Möglichkeiten, die
synchron – asynchron                                                      man für eine Systemintegration nutzen kann. Es können auch meh-
Während bei synchroner Integration die Prozessanwendung auf               rere Möglichkeiten gleichzeitig für verschiedene Integrationen in ei-
eine Rückantwort des integrierten Systems wartet, kann bei einer          ner Prozessanwendung genutzt werden. Die Autoren haben mit der
asynchronen Integration die Arbeit der Prozessanwendung prinzipi-         Robot-Process-Automation(RPA)-Möglichkeit eine fünfte Variante
ell fortgeführt werden. Letzteres ist auch der Fall, wenn die Prozess-    hinzugefügt, die zwar auf die ersten vier Alternativen aufbaut, die
anwendung erst mal nur bis zu einem vorgesehenen Wartezustand             sie aber aufgrund ihrer Aktualität mit einordnen möchten:
weiterläuft.
                                                                          •   Camunda Connector
push – pull                                                               •   Plain Old Java Delegate
Während bei einem Push die Prozessanwendung die führende Kom-             •   Send and Receive Pattern
ponente ist und das integrierte System aufruft, so ist es bei einer       •   External Tasks
Pull-Ausprägung das integrierte System, das einen Aufruf an die           •   BPM-RPA-Kombination
Prozessanwendung schickt.
                                                                          Im Folgenden skizzieren wird kurz die verschiedenen Varianten.
nativ – wrapper                                                           Detaillierte Implementierungsanleitungen sind auf den Camunda-
Stellt das zu integrierende System eine Schnittstelle bereit, die man     Seiten zu finden.

Java aktuell 02/20                                                                                                                        45
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
lichkeit besteht, eigene Connectoren zu entwickeln, bieten sich
   org.camunda.bpm                                hier meist eigene Java Delegates an, die im nächsten Abschnitt
   camunda-engine-plugin-connect
                                                        näher beschrieben werden.
 
   org.camunda.connect
   camunda-connect-connectors-all
                                                                     Plain Old Java Delegate
                                                        Die rudimentärste und gleichzeitig flexibelste Möglichkeit, externe
                                                                     Systeme in einer Camunda-Prozessanwendung zu integrieren, ist die
Listing 1: Maven Dependency für Camunda Standard-Connectoren         Implementierung eines klassischen Delegates mit “Plain Old Java”.
                                                                     Dazu erstellt man einen Service Task im Modell und konfiguriert ihn
                                                                     als Delegate-Implementierung samt gewünschter Delegate ID (siehe
Camunda Connector                                                    Abbildung 3). Anschließend annotiert man die eigene JavaDelegate-
Camunda Connectoren bieten eine Infrastruktur, über die Inte-        Implementierung mit der gleichen, eindeutigen ID als Komponente
grationen direkt mit dem Camunda Modeler im Prozessmodell            wie in Listing 2 gezeigt. Die eigentliche Integration kann dann in der
konfiguriert und mit ihm zusammen auch versioniert werden            execute-Methode nach dem IPO-Pattern (Input-Process-Output)
können [2]. Hierfür können Standard Connectoren, wie für REST        mit der vollen Java-Mächtigkeit gestaltet werden. Auch wenn die volle
oder SOAP einfach als Maven-Abhängigkeit eingebunden werden          Java-Mächtigkeit bereitsteht, gibt es gleichzeitig aber keine Camun-
(siehe Listing 1). Anschließend wird ein Service Task angelegt, in   da-seitige Unterstützung, die einem Integrationsherausforderungen
dessen Konfiguration der gewünschte Connector samt Aufruf            wie eingeschränkte Verfügbarkeit oder Failovers abnimmt.
und Script-basierter Datenverarbeitung hinterlegt wird (siehe Ab-
bildung 2). Die Projekterfahrung zeigt, dass die Connectoren nur
für sehr einfache Use Cases und Integrationstests geeignet sind.
Insbesondere die Handhabung von Daten ist in Programmcode
mit entsprechender Programmierumgebung deutlich besser zu
handhaben. In den Camunda Best Practices selbst wird zur In-
tegration mit einem Java-Client im Vergleich zu den Camunda
REST- und SOAP-Connectoren geraten [3]. Auch wenn die Mög-

Abbildung 2: Konfigurationsbeispiel Camunda http-Connector (©        Abbildung 3: Delegate Konfiguration im Model, id=my-delegate (©
Benjamin Klatt)                                                      Benjamin Klatt)

46
                                                                                                                                       iii
                                                                                                                                         iii
                                                                                                                                     iii

                                                                                                                         www.ijug.eu
                                                                                                                                       iii
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
@Component("my-delegate")
 public class CalculatorDelegate implements JavaDelegate {

 public void execute(DelegateExecution execution) throws Exception{
 		 // Read from context
 		 LongValue num1 = execution.getVariableTyped("num1");
 		 // Write to context
 		 execution.setVariable("result", 1+2);
   }
 }

Listing 2: Beispiel-Implementierung eines Delegate

Send & Receive                                                        die Jobs, bis sie wieder abgeholt werden. Ein weiterer großer Vorteil
Der Send-and-Receive-Ansatz erlaubt, eine fachliche Asynchroni-       ist, dass Jobs, die nicht erfolgreich abgearbeitet werden konnten,
tät im Modell explizit zu modellieren. Zunächst wird im Send Task,    wahlweise einen Incident auslösen oder einfach für einen erneuten
zum Beispiel mit einem JavaDelegate, ein externes System aufge-       Bearbeitungsversuch zurückgegeben werden können. Viele weitere
rufen und eine eindeutige Correlation ID übergeben. Danach wartet     Features wie Topics und Priorisierung helfen, den Umgang mit Ex-
der Prozess im folgenden Catch-Event auf eine Eingangsnachricht       ternal Tasks zu vereinfachen [4]. Abbildung 5 zeigt die Konfiguration
vom passenden Message-Typ und mit der zuvor übergebenen Cor-          eines External Tasks im Modell sowie Beispielaufrufe über die REST
relation-ID zur aktuellen Prozessausführung. Die Eingangsnachricht    API. Die Implementierung der Worker kann frei mit jeder beliebigen
kann von dem integrierten System direkt an die Camunda REST API       Technologie gestaltet werden. Wir nutzen oft auch eine Kombinati-
geschickt werden. Wichtig hierbei ist nur, dass die übergebenen Da-   on mit Apache Camel als Integration Layer und/oder Spring wahl-
ten für Message Name und Correlation-ID passen (siehe Abbildung       weise über die Camunda REST- oder Java-API.
4). Camunda übernimmt dann automatisch die Zuordnung von ein-
gehender Nachricht und wartender Prozessinstanz.                      BPM-RPA-Kombination
                                                                      Als Letztes möchten die Autoren auf eine Möglichkeit eingehen, die
External Tasks                                                        es erlaubt, Systeme zu integrieren, die nur über eine grafische Be-
External Tasks sind eine explizite, asynchrone Integrationsmöglich-   nutzeroberfläche verfügen. Robotic Process Automation (RPA) ist
keit von Camunda. Besonderheit der Technik ist, dass die Implemen-    eine Technik, bei der eine Software die Benutzeroberfläche wie ein
tierung eines Service Tasks nicht in der Prozessanwendung selbst      menschlicher Benutzer verwendet, indem Felder gefüllt oder But-
liegt, sondern von einem externen Programm, einem sogenann-           tons geklickt werden. Schon vor vielen Jahren waren Automatisie-
ten Worker, übernommen wird. Erreicht eine Prozessausführung          rungen, beispielsweise mit Windows-Makros, möglich. Heutzutage
einen solchen Service Task, dann steht seine Bearbeitung als Job      gibt es jedoch deutlich reifere Werkzeuge, die die entwickelten Ro-
über die Camunda API bereit und kann von einem Worker abgeholt        boter-Automatisierungen direkt über eine Programmierschnittstel-
werden. Das Ergebnis sendet ein Worker ebenfalls über die API an      le zugänglich machen. Hat man eine gewünschte Interaktion mit ei-
die Prozessanwendung zurück. Vorteil dieser Technik ist, dass sie     nem zu integrierenden System mittels RPA erstellt, dann kann diese
eine asynchrone Verarbeitung mit einer sehr guten Skalierbarkeit      über die Programmierschnittstelle von der Prozessanwendung
ermöglicht, denn dank eines Fetch-and-Lock-Mechanismus kön-           aus angesprochen werden. Letzteres kann wiederum über eine
nen beliebig viele Worker parallel Jobs abarbeiten. Sind die Worker   der zuvor vorgestellten Möglichkeiten realisiert werden. Die Auto-
selbst einmal nicht verfügbar, dann puffert Camunda automatisch       ren selbst greifen für RPA-Anforderungen unter anderem auch auf

Abbildung 4: Send & Receive Zusammenspiel von Modell und Rückantwort (© Benjamin Klatt)

Java aktuell 02/20                                                                                                                     47
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
Abbildung 5: External Tasks Konfiguration und REST API Basisaufrufe (© Benjamin Klatt)

ein viadee RPA-Werkzeug zurück [5]. Darüber hinaus gibt es aber           Eignung für die Legacy Integration
auch noch viele andere Werkzeuge am Markt. Generell sollte man            Wie gezeigt ist eine Integration von Legacy-Systemen mit allen
sich jedoch bewusst sein, dass eine RPA-Lösung zwar kurzfristig die       Camunda-Techniken prinzipiell möglich. Es kommt jedoch auf die
Erstellung einer technischen Schnittstelle zu dem entsprechenden          jeweiligen konkreten, architekturellen Anforderungen an. In der
Legacy-System ersparen kann, mittel- und langfristig warten aber          Übersicht in Abbildung 7 haben die Autoren noch mal einige Vor- und
potenziell sehr hohe Wartungsaufwände.                                    Nachteile der verschiedenen Techniken gegenübergestellt.

Auswahl und Architektur-Dimensionen                                       So bietet ein Camunda Connector zwar ein schnelles Setup und
Gilt es nun, die passende Integrationstechnik zu wählen, können die       eine Versionierung mit dem Modell, seine eingeschränkte Test-
anfänglich vorgestellten Architektur-Dimensionen weiterhelfen. Ab-        barkeit, beispielsweise in Unit-Tests, und seine limitierte Unter-
bildung 6 zeigt eine Übersicht, in der die Autoren die verschiedenen      stütztung komplexerer Integrationen erschweren jedoch einen
Techniken den jeweiligen Architekturanforderungen gegenüberstel-          produktiven Einsatz. JavaDelegates dagegen erlauben maximale
len und ihre Unterstützung mit einem grünen Haken kennzeichnen.           Flexibilität durch die volle Java-Mächtigkeit, man bekommt je-
So fallen Camunda Connector und Plain Old JavaDelegate (POJD)             doch keinerlei Integrationsunterstützung geboten. Der Send-
raus, wenn eine asynchrone Verarbeitung von der Integration gefor-        and-Receive-Ansatz bietet eine explizite fachliche Darstellung
dert ist. Auf der anderen Seite ist ein Push bei External Tasks vom       der Asynchronität im Modell, kommt aber mit einer starken Ab-
Mechanismus selbst erst mal nicht vorgesehen. Hierfür gibt es zwar        hängigkeit von der Stabilität des Transportmediums und mit einer
Optimierungsstrategien, sie würden aber den Umfang dieses Artikel         eingeschränkten Fehlerdarstellung bei Verarbeitungsproblemen.
überschreiten.                                                            Letztendlich bieten die External Tasks sehr gute Möglichkeiten für

Abbildung 6: Gegenüberstellung der Techniken zu Architektur-Anforderungen (© Benjamin Klatt)

48
                                                                                                                                          iii
                                                                                                                                           iii
                                                                                                                                       iii

                                                                                                                            www.ijug.eu
                                                                                                                                          iii
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
Abbildung 7: Vor- und Nachteile der Integrationstechniken (© Benjamin Klatt)

robuste und gut skalierende Anwendungen und sind empfehlens-
wert für technische Ansynchronität. Größte Herausforderung der
External Tasks ist sicherlich die Implementierung der Worker zur
Job-Verarbeitung.

RPA als Sonderfall hat das Alleinstellungsmerkmal, auch Systeme
integrieren zu können, wenn außer einer Benutzeroberfläche keine
weitere Schnittstelle existiert. Nicht zu vergessen sind hier aber die
aufwendige Wartung und die technischen Schulden, die man sich                                        Dr. Benjamin Klatt
hier einkauft.                                                                               viadee Unternehmensberatung AG
                                                                                                  benjamin.klatt@viadee.de
Fazit und Good Practices
Als generelles Fazit lässt sich festhalten, dass die Camunda Work-             Dr. Benjamin Klatt ist Integrationsarchitekt und Agiler Coach
flow Engine ihr Flexibilitätsversprechen in Bezug auf Systeminte-              bei der viadee AG. Als Integrationsarchitekt beschäftigt er sich
                                                                               vorrangig mit der Digitalisierung von Geschäftsprozessen und
grationen einhält. Die vorhandenen technischen Möglichkeiten er-               Produkten.
lauben es, geeignete Lösungen für jedes anzubindende System zu
entwickeln. Nicht zu vergessen ist jedoch, dass bei der Integration
von Legacy-Systemen viele Herausforderungen unabhängig von
Camunda sind. Als Beispiel seien hier instabile oder fachlich ungüns-
tig geschnittene Schnittstellen genannt. Zum Abschluss noch drei
Good Practices für das eigene Projekt:

• Nachhaltigkeit bei der Architekturentscheidung beachten
• Zu hohe Heterogenität bei der Implementierung vermeiden
• Leichtgewichtige Integration Layer, beispielsweise mit Apache
   Camel, in Betracht ziehen

Außerdem haben die Autoren Code-Beispiele für die verschiedenen
Integrationsmöglichkeiten im GitHub Repository bereitgestellt [6].

Quellen                                                                                              Matthias Schulte
[1] https://camunda.com/de/solutions/                                                        viadee Unternehmensberatung AG
[2] https://docs.camunda.org/manual/latest/reference/connect/                                   Matthias.Schulte@viadee.de
[3] https://camunda.com/best-practices/invoking-services-from-the-
    process                                                                    Matthias Schulte ist Senior Berater für BPM- und Integra-
                                                                               tionsprojekte. Sein Schwerpunkt liegt in der Einführung von
[4] https://docs.camunda.org/manual/latest/user-guide/process-
                                                                               Prozesssteuerungsplattformen in großen Unternehmen sowie
    engine/external-tasks/                                                     dem (agilen) Projektmanagement von Digitalisierungsprojekten.
[5] https://www.viadee.de/loesungen/rpa-robotic-process-automation
[6] https://github.com/viadee/camunda-integration

Java aktuell 02/20                                                                                                                                49
Hysterisch gewachsen, trotzdem orchestriert - connected by Camunda - DOAG
Sie können auch lesen