Im Folgenden stelle ich ein weiteres Beispiel für das Zusammenspiel von ausführbaren Prozessen und Robotic-Process-Automation (RPA) vor. Im letzten Post ging es darum, dass ein RPA-Bot einen Prozess startet und ihm Daten aus einer Excel-Datei übergibt. Im heutigen Beispiel soll ein Bot einen Arbeitsschritt innerhalb eines Prozesses durchführen und dabei Daten an ein externes System übermitteln.
Da es im BPM-System Bonita keinen geeigneten Konnektor für den Aufruf der verwendeten Unternehmenssoftware „Odoo“ gibt, loggt sich der Bot wie ein Mensch in das System ein und trägt die Daten in der Benutzungsoberfläche ein.
Als RPA-System nutze ich wieder Microsoft Power Automate Desktop. Bei einem ähnlichen Beispiel, das ich vor längerer Zeit entwickelt hatte, hatte ich den Bot einfach über die REST-Schnittstelle des damals verwendeten RPA-Systems UI-Path aufgerufen. Leider hat sich herausgestellt, dass die kostenlose Version von Power Automate Desktop über keine geeignete Schnittstelle verfügt.
Aus diesem Grund habe ich die Fähigkeit des RPA-Systems, eine Software über ihre Benutzungsoberfläche zu bedienen, auch für die Kommunikation mit dem BPMS genutzt. Der Bot hat einen eigenen User, mit dem er sich in Bonita einloggt. Dort erhält er wie eine menschliche Benutzerin oder ein menschlicher Benutzer seine Aufgaben in einer Taskliste angezeigt. Er ruft die Tasks nacheinander auf, liest die benötigten Daten aus dem Benutzungsdialog heraus, wechselt in die Oberfläche des externen Systems und trägt die Daten dort wieder ein.
Das Zusammenspiel wird im folgenden Video beschrieben. Weiter unten finden sich wieder die Projektdateien, mit denen man das Beispiel in den kostenlosen Versionen von Bonita und Microsoft Power Automate Desktop selbst ausprobieren kann.
Downloads und Anleitung
Um die Beispiele selbst nachvollziehen zu können, sind grundlegende Kenntnisse über Bonita und Power Automate erforderlich, wie sie beispielsweise in den folgenden Tutorials vermittelt werden:
- Bonita – Getting started: https://documentation.bonitasoft.com/bonita/latest/getting-started/getting-started-index
- Bonita Camp: https://community.bonitasoft.com/bonita-camp
- Get Started with Power Automate for Desktop -Training: https://learn.microsoft.com/en-us/training/paths/pad-get-started/
- Power Automate Desktop Tutorial for Beginners: https://www.youtube.com/watch?v=Y35ZJs16APQ
Hier sind die fertigen Projektdateien zum Download:
Die zip-Datei erhält die Bonita-Projektdatei mit der Endung .bos sowie Textdateien mit den Definitionen der in Power Automate benötigten „Flows“ und „Subflows“.
Die .bos-Datei wird in Bonita (ab Version 2023.2) in ein neues Projekt importiert. Anschließend werden Organisation, Business Data Model und der Prozess deployed.
In Power Automate Desktop muss folgendes gemacht werden:
- Neuen Flow mit dem Namen „Update Contact Data“ anlegen.
Es öffnet sich der Editor. Nun kopiert man den Text aus „SaveContactInCRM.txt“ und fügt ihn in den Editor ein. Der Flow wird in Blockdarstellung angezeigt. - Im Tab „Subflow“ nacheinander die folgenden Subflows anlegen:
– OpenOdooContacts
– OpenBonitaTasklist
– TransferContactValues
Die Bezeichnungen müssen genauso geschrieben werden wie angegeben. Dann werden in Power Automate keine Fehler mehr angezeigt. Am oberen Rand ist nun für jeden Subflow ein Tab zu sehen. - Zum Tab „OpenOdooContacts“ wechseln.
Den gesamten Text aus der Datei „OpenOdooContacts.txt“ kopieren und in PowerAutomate einfügen.. - Auf dieselbe Weise die Inhalte der anderen Dateien in die entsprechenden Subflows kopieren.
- Speichern..
Nun startet man den Prozess in Bonita (User „admin“, Passwort „bpm“) und gibt die Daten des neuen Kontakts ein. Man kann auch mehrere Instanzen starten.
Es wird empfohlen, alle Web-Browser zu schließen, da Power Automate sonst manchmal Probleme hat, die richtige Browser-Instanz zu aktivieren.
In Power Automate in den „Main“ Tab wechseln und auf „Ausführen“ klicken.
Ich bin selbst im Bereich BPM unterwegs und versuche gerade mit BPMN 2.0 einen Prozess auf „Aktivitätenebene“ zu modellieren, der über mehrere IT-Systeme mit asynchronen Abläufen läuft.
Dort stoße ich naturgemäß an Grenzen von BPMN und frage mich inwieweit es bis zu welchem Detaillierungsgrad sinnvoll ist Abläufe in welchen Systemen (abstrakt) zu modellieren.
Es macht sicher keinen Sinn das Coding als Ablaufdiagramm zu modellieren gleichwohl werden die Abläufe immer komplexer und wir brauchen Tools um das noch zu „beherrschen“.
Wenn man wie in meinem Beispiel BPMN-Modelle von einer Process-Engine ausführen lässt, dann muss man die Logik zwangsläufig so detailliert modellieren, dass die Ablauflogik vollständig spezifiziert wird. Also müssen z. B. auch sämtliche Ausnahmen mit modelliert werden.
Wenn BPMN-Modelle hingegen nicht ausgeführt werden, sondern zur – möglichst gut verständlichen – Dokumentation von anderweitig implementierten Abläufen dienen, muss man sich in der Tat geeignete Modellierungskonventionen überlegen und darin festlegen, wie weit man ins Detail geht.