StartseitePortfolioBlog

Miranum - Das neue Element für die Prozess-Automatisierung

By Andreas Riepl
Published in Softwareentwicklung
May 30, 2023
6 min read
Miranum - Das neue Element für die Prozess-Automatisierung

Miranum: Das neue Element für die Prozess-Automatisierung

Nachdem im ersten Beitrag dieser Serie die Relevanz der Digitalisierung thematisiert wurde, soll hier die Umsetzung im Fokus stehen. Wir bei Miragon sehen die Automatisierung von geschäftskritischen Prozessen für Unternehmen als zentralen Bestandteil, um digital erfolgreich zu werden. Die meisten unserer Kunden setzen dabei auf die Workflow-Engine Camunda, welche sich durch ihren Open-Source Ansatz, ihrer großen Community und der guten Dokumentation von der Konkurrenz abhebt.

Trotz alledem ist die Einführung meist ein komplexes Unterfangen, welches viel Zeit und Ressourcen vereinnahmen kann. Ein Beispiel dafür ist neben der Erhebung von Prozessen mit den Fachabteilungen auch die technische Umsetzung dieser. Vor allem die Anbindung externer Bestandssysteme kann eine Herausforderung sein. Unsere Erfahrungen und Erkenntnisse, die wir bei der Einführung und der Betreuung von Camunda in Organisationen, wie der Stadt München oder der EZB sammeln konnten, sind in unser Open-Source-Projekt Miranum geflossen.

Miranum ist sozusagen unser Werkzeugkasten, den wir bei Beratungsprojekten verwenden, um nicht nur effizient, sondern auch effektiv zu Ergebnissen zu kommen. In diesem Post stellen wir den traditionellen Ansatz zur Automatisierung von Prozessen dem mit Miranum gegenüber, um die konkreten Vorteile und Best-Practices herauszustellen.

Grundsätzlich besteht Miranum aus zwei Komponenten:

  • Miranum IDE: Visual Studio Code Plugins zur Verwaltung der Prozesse und ihrer Artefakte
  • Miranum Connect: Java Framework zur plattformunabhängigen Integration von Prozessbausteinen, das Best Practices vereint und die Entwicklung vereinfacht.

1. Aufnahme von Prozessen

Auch wenn bereits Prozesse in Unternehmen ablaufen, kennen nur wenige Mitarbeiter die genauen Schritte. Daher ist eine enge Abstimmung mit den betroffenen Fachabteilungen notwendig. Gleichzeitig ist es essenziell, den IST-Prozess vor der Digitalisierung zu verbessern. Denn, um es in den Worten von Thorsten Dirks, dem Vorstandsvorsitzenden der Telefonica Deutschland, zu sagen: “Wenn man einen scheiß Prozess digitalisiert, hat man einen scheiß digitalen Prozess”.

Bei der Erhebung von Prozessen müssen auch andere Artefakte berücksichtigt werden, die mit diesem zusammenspielen. Dies können Entscheidungstabellen oder auch Eingabeformulare sein. All diese spielen in einem Prozess eine wichtige Rolle und müssen versioniert gemanaged werden.

a) BPMN Modellierung

Bei BPMN handelt es sich um einen Standard zur Visualisierung von Prozessen. Momentan befindet sich dieser in der Version 2.0 und wird von der Object Management Group verwaltet.

In Abbildung 1 ist ein typischer zweistufiger Genehmigungsprozess mit dem BPMN 2.0 Standard dargestellt. Für mehr Informationen über die Notation empfehlen wir ein Blick in diese Dokumentation. Das Gute an dieser Darstellungsform ist, dass sie nicht nur von Menschen, sondern auch von Maschinen gelesen werden kann (z.B. Prozess-Engines).

Abbildung 1: Zweistufiger Genehmigungsprozess in BPMN
Abbildung 1: Zweistufiger Genehmigungsprozess in BPMN

Trotz der hohen Lesbarkeit von BPMN kann die Erstellung schwierig sein. Vor allem, da man erreichen möchte, die Diagramme so lesbar wie nur möglich zu halten. Bei der Modellierung gibt es diverse Best Practices, die es zu beachten gibt. Eine klare Leseempfehlung an der Stelle ist das Buch BPMN Method and Style von Bruce Silver.

b) Design von Formularen

Auch bei der Prozessdigitalisierung spielen fachliche Spezialisten eine wichtige Rolle. Dies ist bei Prozess-Engines durch das Human Task Management repräsentiert. Aus Modellierungssicht sind daher nutzerfreundliche Eingabeformulare notwendig. Über die Weboberflächen werden die eingegebenen Daten, an den Prozess zurückgegeben.

In Abbildung 2 kann man ein exemplarisches Formular für den Urlaubsantrag sehen, welches sich mit Hilfe von Camunda Platform 8 erstellen lässt.

Abbildung 2: Holiday Request Formular
Abbildung 2: Holiday Request Formular

Solche Formulare sind bei Camunda mit dem JSON Schema Standard umgesetzt, welcher spezifiziert, wie die Benutzer-Eingaben auszusehen haben, damit sie valide sind. Für Zahlen lässt sich dadurch der Wertebereich einschränken, für kategorische Eingaben die Selektionsmöglichkeiten und für Zeichenketten die Länge dieser, sowie die erlaubten Sonderzeichen.

c) Vorteile von Miranum IDE

Wie oben verdeutlicht ist die Prozessautomatisierung ein interdisziplinäres Unterfangen, bei der die Fachabteilungen und IT-Experten eng zusammen arbeiten müssen. Bisher geschieht dies häufig in verschiedenen Tools, was Medienbrüche nach sich zieht. Ebenfalls ist es momentan nur schwer möglich alle für den Prozess relevanten Artefakte einheitlich zu versionieren.

Genau dieses Problem wird von der Miranum IDE aufgegriffen und gelöst. Dazu haben wir Plugins entwickelt, die sich in Visual Studio Code integrieren lassen. So kann der Entwickler in einer gewohnten Umgebung bleiben, die aber auch für einen fachlichen Nutzer leicht zu bedienen ist. Über die Bordmittel von VS Code ist eine Versionierung aber auch die kollaborative Zusammenarbeit möglich.

In Abbildung 3 und 4 werden der Formulareditor und BPMN Editor der Miranum IDE exemplarisch vorgestellt.

Abbildung 3: Formular Editor in Miranum IDE
Abbildung 3: Formular Editor in Miranum IDE

Über unseren Formulareditor lassen sich komplexe Formular erstellen, die sich über mehrere Seiten hinweg erstrecken können. Im Gegensatz zu Camunda haben wir keinen neuen Schema-Standard entworfen, sondern auf JSON Schema und Open Source Frameworks gesetzt, die diesen unterstützen. Nichtsdestotrotz, können die Formulare problemlos zusammen mit Camunda genutzt werden.

Abbildung 4: BPMN Editor in Miranum IDE
Abbildung 4: BPMN Editor in Miranum IDE

Den BPMN Editor in VS Code mit eingebettet zu haben, hat wie vorhin erwähnt vor allem für Entwickler diverse Vorteile. Hier kann auf bereits existierende Standards gesetzt werden:

  • Git als Versionsverwaltungssystem, um alle Prozessartefakte in einem zentralen Repository ablegen zu können.
  • NPM als Dependency-Managementsystem. Wir betrachten alle Prozessartefakte als Abhängigkeiten, die von Prozessen in den jeweiligen Versionen angezogen werden können.

Die Miranum IDE ist frei im VS Code Marketplace verfügbar, denn wir stehen zu freier Open-Source-Software. Zöger nicht unser Extensionpack runterzuladen und auszuprobieren. Wir freuen uns über jedes Feedback.

2. Technische Umsetzung

Ein Software-System ist nie fertig. Seien es neue Anforderungen, die integriert werden müssen, neue Regularien, die berücksichtigt werden müssen oder externe Schnittstellen, die sich geändert haben. All das bedingt die Weiterentwicklung eigener Lösungen.

Auch Prozess-Engines sind von dieser Dynamik nicht ausgeschlossen. Deshalb ist es auch beim Einsatz von Camunda wichtig, die Integrationen anpassbar und erweiterbar zu designen.

a) Systeme anbinden

In den letzten Jahrzehnten haben Unternehmen, mit der Hoffnung, Stück für Stück digitaler zu werden jede Menge Softwareprodukte eingekauft. Große Konzerne verwalten heutzutage über 1000 verschiedene Tools und Lösungen, von denen einige schon gar nicht mehr weiterentwickelt oder gewartet werden. Die Aufgabe von Prozess Engines ist es, Ende-Zu-Ende Prozesse ganzheitlich zu digitalisieren und alle Tools, die daran beteiligt sind, zu orchestrieren.

Ohne entsprechende Schnittstelle ist es nicht möglich, solche Systeme direkt anzusprechen, weshalb hier Robot Process Automation (RPA) zum Einsatz kommt. Klickbots bedienen dabei die Programmoberfläche und stellen anschließend die Daten zur Verfügung.

Besitzen Bestandssysteme eine API muss man meist eine Integration, so genannten Glue Code, schreiben. In Camunda Platform 7 konnten die dafür geschriebenen Java-Klassen, sogenannte Delegates, direkt im Prozess referenziert werden. Mit der zentralisierten Architektur von Camunda 8 und den neuen Connectoren können Systeme nun über den Low-Code-Ansatz angebunden werden. Nichtsdestotrotz kann aber auch bei C8 der Pro-Code Ansatz verfolgt werden, bei dem Systeme über das External-Task-Pattern verbunden werden. Dabei wird der Camunda-Client in die Anwendung integriert und fragt in einem zeitlichen Intervall bei der Engine an, ob passende Tasks zum Abarbeiten eingestellt sind.

b) Produktivität über Templates verbessern

Templating wird in der Softwareentwicklung häufig eingesetzt, um die Wiederverwendbarkeit von Komponenten zu erhöhen und die Entwicklung zu beschleunigen. Eine Vorlage oder ein Template definiert dabei eine standardisierte Struktur für einen bestimmten Softwarebaustein.

In Camunda 7 & 8 können sogenannte Element- bzw. Connector-Templates verwendet werden, um beispielsweise eine Vorlage für einen bestimmten Prozessschritt zu designen. Dieses Template kann auf verschiedenste Aktivitäten angewendet werden und definiert benutzerdefinierte Felder mit domänenspezifischer Validierung der Benutzereingabe.

Dank der Element-Templates können dieselben Integrationen nicht nur an mehreren Stellen in einem Prozess, sondern auch in mehreren Prozessen verwendet werden. Hat beispielsweise ein Team einen Service zum Versenden von E-Mails entwickelt, kann es ein Element-Template zur Verfügung stellen, das von anderen Teams und Prozessen genutzt werden kann. Zudem entsteht ein Contract zwischen Entwicklung und Modellierung, der Nachvollziehbarkeit und Wartbarkeit erleichtert.

c) Vorteile Miranum Connect

Miranum Connect ist ein Java-Framework, das nicht nur die APIs von Prozess-Engines abstrahiert, sondern auch Bibliotheken zur Backend-seitigen JSON-Schema Validierung und zur Generierung von den vorherigen vorgestellten Element Templates bereitstellt. Dadurch wir eine Unabhängigkeit zur Engine geschaffen und Flexibilität gewonnen.

Abbildung 5 zeigt die konzeptionelle Funktionsweise von Miranum-Connect in einem häufigen Anwendungsfall. Um in einem Geschäftsprozess eine Mail zu versenden, muss ein Entwickler in der Regel eine Integration (Glue Code) zu einem E-Mail-Server schreiben. Eine schnell implementierte Schnittstelle oder eine No-/Low-Code-Lösung kann jedoch schnell Abhängigkeiten zur technischen Umgebung schaffen. Miranum-Connect beseitigt genau dieses Problem!

Idealerweise verwendet man das Framework ine einer hexagonalen Architektur. In ihrem Kern finden wir Domain Objekte und Use-Cases, die unsere Domäne repräsentieren. An der Außenseite finden wir verschiedene Adapter und Ports, die nach innen oder nach außen gerichtet sind. Um den Clean-Architecture Best Practices zu entsprechen sind alle Abhängigkeiten zur Mitte hin ausgerichtet. Daher sind unsere Entitäten und Use-Cases unabhängig von externen Systemen wie zum Beispiel Camunda Platform 7 oder einem spezifischen Imap Server. Zudem bleiben die Schnittstellen stabiler, da diese sich auf den fachlichen Anwendungsfall beschränken anstatt eine technische Schnittstelle direkt und generisch anzubinden. Auf lange Sicht gewinnt man dadurch viel Zeit, Geld und Nerven.

Abbildung 5: Miranum Connect Mail Integration
Abbildung 5: Miranum Connect Mail Integration

Miranum-Connect lässt sich direkt als Maven Dependency in ein Java Projekt mit einbinden. Dabei unterscheiden wir zwischen dem Worker, Process und Message Paket. Ersteres arbeitet Aufgaben der Workflow Engine ab, zweiteres kann Prozessinstanzen starten und letzteres abstrahiert die Korrelation von Nachrichten zur Engine hin.

Die Worker-API lässt sich zur pom.xml wie unten exemplarisch dargestellt hinzufügen.

<dependency>
    <groupId>io.miragon.miranum</groupId>
    <artifactId>worker-api</artifactId>
    <version>0.2.0</version>
</dependency>

Die Nutzung gestaltet sich ähnlich wie bei Camunda 8. So kann man über die Definition eines Types Aufgaben bei der Workflow Engine abholen und diese wieder zurückgeben. Der Vorteil ist, dass dies für Camunda 7 als auch für Camunda 8 identisch ist. Dies ist exemplarisch im untenstehenden Code Ausschnitt dargestellt.

@Worker(type = "doSomething")
public Something doSomething(DoSomethingCommand doSomethingCommand)

Zur Generierung von Element Templates aus dem Code heraus muss die element-template-api als Abhängigkeit hinzugefügt werden, welche sich dann über die @ElementTemplate Annotation nutzen lässt. Um die generierten Templates weiter anzupassen, kann die Annotation @ElementTemplateProperty zu den Ein- und Ausgabeparameter der Worker-Definition hinzugefügt werden. Dies wird exemplarisch im unteren Code-Beispiel dargestellt.

@ElementTemplateProperty(name = "Variable A", type = "String", required = true)
private String a;

@ElementTemplateProperty(name = "Variable B", type = "String", required = true)
private String b;

@Worker(type = "doSomething")
@ElementTemplate(
        name = "Do Something",
        description = "This is a description")
public void doSomething(String a, String b) {};

Fazit

Dieses Framework ermöglicht es die Komplexität, die Automatisierungsprojekte mit sich bringen herunterzubrechen. Zusätzlich bleiben Unternehmen digital handlungsfähig, da Abhängigkeiten zu Herstellern vermieden werden. So schaffen wir es mit Miranum, als leichtgewichtiges Toolset Unternehmen digital erfolgreich zu machen.

Wir haben mit Miranum bereits in mehrere Bestandssysteme integriert und bauen es weiterhin aus. Schaut es euch am besten selbst auf GitHub an. Für Fragen stehen wir (info@miragon.io) selbstverständlich zur Verfügung.


Tags

#software-development#process-engine#camunda#digitalisierung
Previous Article
Low-Code-Prozessautomatisierung - Herausforderungen und Lösungsansätze bei der Umsetzung von Projekten
Andreas Riepl

Andreas Riepl

Fullstack Entwickler

Ähnliche Beiträge

i18n im Backend - Lösung für Internationalisierung auf mehreren Clients
August 16, 2023
3 min
© 2024, All Rights Reserved.

Links

StartseitePortfolioBPM TrainingÜber UnsKarriereBlog

Social Media