Activiti ist die Basis für Workflows und Prozesse. Es enthält die Activiti REST API Diese Schnittstelle kann unter der folgenden Adresse aufgerufen werden:
/c//activiti/
Es gibt die folgenden Einschränkungen:
Die Schnittstelle
/login
wird nicht unterstützt. Es wird die ABRA-Flexi-Autorisierung verwendet.Das Ändern von Benutzern, Gruppen und Mitgliedschaften wird nicht unterstützt. Alles wird über die ABRA Flexi-Schnittstelle erledigt.
Das Hochladen eines neuen Prozesses muss über ABRA Flexi erfolgen (aufgrund der Definition von Workflow-Gültigkeiten). Aktualisierungen von Prozessen können bereits über die Activiti-API vorgenommen werden.
API für ABRA Flexi
Auflistung der Workflow-Definitionen für einen bestimmten Datensatz:
GET /c///workflows.xml
Starten eines Workflows
PUT /c////workflows//start
Bei der Ausführung ist es auch möglich, Parameter an den Workflow zu übergeben, die bei der Entscheidungsfindung verwendet werden können:
PUT /c////workflows//start?parameter1=wert1¶meter2=wert2
Liste der Ereignisse (Notizen und Aufgaben) für das Objekt:
/c////event
Liste der Ereignisse einschließlich anderer Workflow-Attribute:
/c////event.xml?includes=event/actRuTask
Wenn Sie mit einem Workflow arbeiten, wollen Sie in der Regel nur Aufgaben eines bestimmten Typs:
/c////event/(event-type = 'typeEvent.workflow')
Alle Aufgaben für einen bestimmten Arbeitsablauf auflisten:
/c//event/(event type = 'kindUdal.workflow' und processDefinitionId = '')
Listet alle Aufgaben mit dem angegebenen Aufgabenschlüssel für den spezifischen Workflow auf:
/c//event/(event type = 'kindUdal.workflow' und processDefinitionId = '' und taskDefinitionKey = '')
Eine Auflistung aller Aufgaben, die der aktuell angemeldete Benutzer lösen kann:
/c//event@event-to-realize
Senden eines Signals an alle laufenden Workflows, die darauf reagieren können:
/c////workflow-signal/?param1=value
Senden Sie eine Nachricht an alle laufenden Workflows, die darauf reagieren können:
/c////workflow-message/?param1=value
Aufgabe:
/c//Veranstaltung//
claim.xml | die Aufgabe übernehmen |
unclaim.xml | eine Aufgabe freigeben |
komplett.xmlkomplett | Aufgabe auflösen |
assign.xml?username=user1 | die Aufgabe an den Benutzer user übergeben |
add-comment.xml?comment=text1 | einen Kommentar zur Aufgabe hinzufügen |
Für Parameterwerte, die andere als die erlaubten URL-Zeichen enthalten (Leerzeichen, geschweifte Wörter usw.), müssen Sie Folgendes tun URL-Kodierung.
Die Textkodierung wird in
UTF-8
erwartet.
Hinweis: Ereignisse vom Typ Aufgabe für Workflow werden verworfen, nachdem sie aufgelöst wurden. Anstelle von .
xml kann auch der .json
oder Accept
Header verwendet werden.
Liste der Aufgaben und ihrer zugehörigen Objekte
/c///
In der ABRA-Flexi-Entscheidungsfindung verwendete Objekte
| Liefert den Benutzer mit dem angegebenen Namen |
| Liefert ein Abfrageobjekt des Benutzers mit dem angegebenen Namen (die Ausgabe ist identisch mit der Methode objectQuery). |
| Liefert ein Objekt des angegebenen Typs, das an die Workflow-Aufgabe angehängt ist |
| Ermöglicht es Ihnen, die Objekte in der Sitzung zu filtern. |
| Ermöglicht es Ihnen, das erste Objekt in der gefilterten Sitzung zurückzugeben. |
| Ermöglicht es Ihnen, die Objekte in der gefilterten Sitzung zu summieren. |
| Ermöglicht die Verkettung der Verarbeitung der Abfrage. |
| Ermöglicht das Filtern der Objekte in der Beziehung. |
| Ermöglicht es Ihnen, das erste Objekt in der Sitzung zurückzugeben. |
| Ermöglicht es Ihnen, die Objekte in der Sitzung zu summieren. |
| Umfasst ein Objekt mittels Abfrage (gleiches Ergebnis wie z. B. von |
| Gibt ein einzelnes Objekt des angegebenen Typs zurück, das dem angegebenen Filter entspricht. |
| Löst ein Signal über alle Workflows aus, die über den ausgewählten Datensatz laufen. |
| Gibt alle Objekte des angegebenen Typs zurück, die dem angegebenen Filter entsprechen. |
| Gibt die Anzahl der Objekte des angegebenen Typs zurück, die mit dem angegebenen Filter übereinstimmen. |
| Liefert die Summe der angegebenen Spalte für alle Objekte des angegebenen Typs, die dem angegebenen Filter entsprechen. |
| Liefert das Maximum der angegebenen Spalte für alle Objekte des angegebenen Typs, die dem angegebenen Filter entsprechen. |
| Liefert den Mindestwert der angegebenen Spalte für alle Objekte des angegebenen Typs, die dem angegebenen Filter entsprechen. |
| Liefert den Durchschnittswert der angegebenen Spalte für alle Objekte des angegebenen Typs, die dem angegebenen Filter entsprechen. |
| Ermöglicht die Sortierung in aufsteigender Reihenfolge (mehr zur Sortierung in der API). |
| Ermöglicht das Sortieren in absteigender Reihenfolge (mehr zum Sortieren in der API). |
| Gibt die aktuellen Firmeneinstellungen ( |
| Gibt die Firmeneinstellungen |
| Gibt den internen Variablennamen zurück, der von ABRA Flexi verwendet wird, um einzelne Workflows an Dokumente und Objekte in ABRA Flexi zu binden. Es wird normalerweise beim Aufruf eines Unterprozesses verwendet. |
| Gibt true zurück, wenn der Workflow gerade in einer Desktop-Anwendung ausgeführt wird |
| Gibt true zurück, wenn der Workflow gerade über die REST-API oder in einem Browser ausgeführt wird |
| Importiert einen XML-String gemäß der ABRA Flexi REST API. Gibt eine Sammlung von Objektbezeichnern aus dem XML-Import zurück. |
| Das aktuelle Datum und die Uhrzeit. |
| Name des aktuell angemeldeten Benutzers (für weitere Informationen verwenden Sie |
| Der activiti-Datensatz, der die Aufgabe repräsentiert (weitere acitiviti-Dokumentation). |
| Informationen über den aktuell laufenden Workflow (weitere acitiviti-Dokumentation). |
Aufrufen eines Unterprozesses
Wenn Sie einen Unterprozess aufrufen und die resultierenden Aufgaben mit Dokumenten verknüpft werden sollen, müssen Sie die Heraufstufung der Datenflussvariablen zum Workflow aktivieren. Sie gehen dabei wie folgt vor:
<?xml version="1.0"?> <callActivity id="callSubProcess" calledElement="checkCreditProcess"> <extensionElements> <activiti:in source="${flexibee.varName('invoice-received')}" target="${flexibee.varName('Rechnung-erhalten')}"/> <activiti:in source="initiator" target="initiator"/> </extensionElements> </callActivity>
Arbeiten mit Benutzern in einem Workflow
Wenn Sie mit Benutzern arbeiten möchten, gibt es mehrere Möglichkeiten wie folgt. Achten Sie darauf, dass Sie das Kommazeichen (,) innerhalb der Benutzerdefinition nicht verwenden. Activiti hat einen Fehler, der seine Verwendung verhindert.
Workflow-Ersteller
Wenn Sie den Workflow starten, definieren Sie eine Initiatorvariable
. Diesen können Sie dann als Benutzernamen für die Zuweisung der Aufgabe verwenden.
<?xml version="1.0"?>
Aktueller Benutzer
Um die Aufgabe demselben Benutzer zuzuweisen, der den aktuellen Vorgang ausgeführt hat, verwenden Sie die Variable authenticatedUserId
.
Der spezifische Benutzer
Sie können während der Verarbeitung einen bestimmten Benutzer verwenden. Sie können auch nach bestimmten Kriterien (z. B. Bezeichnung) nach einem Benutzer suchen:
<?xml version="1.0"?> <formalExpression>${flexibee.query('user').relation('label = "code:EMPLOYEE"').one().code}</formalExpression>
Oder eine Benutzerbindung:
<?xml version="1.0"?> <formalExpression>${flexibee.userQuery(initiator).relation('user-bindings').filter('typeBindings = "code:UPDATED"').one().code}</formalExpression>
Änderung des Dokuments
Manchmal ist es notwendig, ein oder mehrere Dokumente bei der Bearbeitung eines Workflows zu ändern. Dies kann mit flexibee-xml
erfolgen. Damit die Methode flexibee.object()
funktioniert, muss der Workflow mit diesem Dokument verknüpft sein.
<?xml version="1.0"?>
Es können auch mehrere Objekte geändert werden:
<?xml version="1.0"?> <serviceTask id="cancellation" activiti:class="flexibee-xml"> <extensionElements> <activiti:field name="xml"> <activiti:expression><![CDATA[ <winstrom> <invoice-issued action="cancellation"> <id>code:FAV0001/2013</id> </invoice-issued> <invoice-issued action="cancellation"> <id>code:FAV0002/2013</id> </rechnung-ausgestellt> </winstrom> ]]></activiti:expression> </activiti:field> </extensionElements> </serviceTask>
Abrufen der Bezeichner von geänderten Objekten
Verwenden Sie die Variable idsVar
, um eine Sammlung von Bezeichnern abzurufen, die durch den XML-Import geändert wurden.
<?xml version="1.0"?> <serviceTask id="import" activiti:class="flexibee-xml"> ... <extensionElements><activiti:field name="idsVar" stringValue="listId"/></extensionElements> </serviceTask>
Nach einem erfolgreichen XML-Import enthält die Variable listId
dann die Sammlung der Bezeichner der geänderten Objekte.
Fehlerbehandlung beim XML-Import
Wenn ein XML-Importfehler in einer flexibee-xml
Aufgabe auftritt, wird die Workflow-Verarbeitung durch eine WSBusinessRTException
unterbrochen. Die Ausnahme enthält eine Beschreibung des Fehlers und wird in der GUI als Fehlerdialog angezeigt.
Soll der Workflow auch bei einem fehlgeschlagenen Import weiterlaufen, kann die Aufgabendefinition um die Parameter erweitert werden errorVar
a errorMessageVar
:
<?xml version="1.0"?> <serviceTask id="cancellation" activiti:class="flexibee-xml"> ... <extensionElements><activiti:field name="errorVar" stringValue="wasError"/><activiti:field name="errorMessageVar" stringValue="errorMessage"/></extensionElements> </serviceTask>
variabel | Datentyp | Beschreibung |
|
| definiert den Namen der Variablen (z. B. |
|
| definiert den Namen einer Variablen (z. B. |
Bedingte Verzweigung auf Basis von Objekten
In einem Workflow können Sie ABRA Flexi Fragen stellen und auf Basis der Antwort reagieren:
${flexibee.object('objednavka-prijata').sumTotal > 1000}
Es ist auch möglich, allgemein abzufragen, z. B. wie viele offene Rechnungen es bei der Firma gibt, die auf der aktuellen Rechnung aufgeführt ist:
${flexibee.query('rechnung-ausgestellt').filter('stavUhrK != "stavUhr.bezahlt" und stavUhrK != "stavUhr.bezahltRucne" und Firma='.concat(flexibee.object('rechnung-ausgestellt').firma.id)).sum('sumTotal') > 1000}
Übertragen des Workflow-Status auf das Dokument
Manchmal ist es notwendig, den Status eines Dokuments basierend auf dem Workflow-Status zu ändern. Dies kann durch die Verwendung von Labels geschehen, die einer Gruppe zugeordnet sind, für die Exklusivität eingestellt ist (wenn dann ein neues Label aus der gleichen Gruppe gesetzt wird, werden die anderen gelöscht). Dies wird dann wieder mit flexibee-xml
implementiert, das Sie bei jeder Änderung des Workflow-Zustands aufrufen:
<?xml version="1.0"?>