Activiti Kickstart App und Activiti Rest Webapp

Activiti Kickstart App und Activiti Rest Webapp

1. Überblick

In unseren vorherigen Artikeln (basierend auf der Activiti-API mitJava undSpring) haben wir gesehen, wie Prozesse programmgesteuert verwaltet werden. Wenn wir eine Demo zusammen mit der Benutzeroberfläche für Activiti einrichten möchten, haben wir zwei Webapps, mit denen wir dies in wenigen Minuten tun können.

activiti-app offers a user interface through which a user can perform any identity management and task management related operations, erstellen Sie Benutzer und Gruppen.

In ähnlicher Weise sindactiviti-rest is a webapp that provides the REST API for performing any operation on a process, task, process usw.

In diesem Artikel wird erläutert, wie diese Webanwendungen verwendet werden und welche Funktionen sie bieten.

2. Downloads

Wir können diewar-Dateien für beide Webanwendungen vonActiviti Website selbst herunterladen.

Für v6.0.0 können wir einfach dieactiviti-6.0.0.zip herunterladen, extrahieren und diewar-Dateien befinden sich imactiviti-6.0.0/wars-Verzeichnis.

3. Activiti Kickstart App

Wir benötigen eine funktionierendeJava runtime- und eineApache Tomcat-Installation, um die App bereitzustellen. Jeder Webcontainer würde funktionieren, aber Activiti wird hauptsächlich auf Tomcat getestet.

Jetzt müssen wir nur noch den Krieg auf Tomcat bereitstellen und mithttp://localhost:8080/activiti-app darauf zugreifen.

Die Homepage sollte folgendermaßen aussehen:

image

 

 

 

 

===

 

===

3.1. Datenbank

Standardmäßig wird die speicherinterne H2-Datenbank verwendet. Wenn wir die DB-Konfiguration ändern möchten, können wir diecode auschecken und dieactiviti-app.properties-Datei ändern.

Danach müssen wir die War-Datei neu generieren. Dies kann durch Ausführen des Skriptsstart.sherfolgen. Dadurch werden dieactiviti-app zusammen mit den erforderlichen Abhängigkeiten erstellt.

3.2. Kickstart App

Wenn wir auf die Kickstart-App klicken, erhalten wir die Optionen für die Arbeit mitProcess.. Wir können Prozesse erstellen / importieren und von hier aus ausführen.

Erstellen wir einen kleinen Prozess mit einem einzelnenUser Task, der eine Nachricht von einem Benutzer empfängt. Um in der Kickstart-App einen Prozess zu erstellen, wählen Sie die RegisterkarteProcesses und klicken Sie aufCreate Process:

image

Der Prozesseditor wird geöffnet, in dem wir verschiedene Symbole für Startereignisse, verschiedene Arten von Aufgaben und Endereignisse ziehen und ablegen können, um einProcess.zu definieren

Da wir unserem Prozess einUser Task hinzufügen, müssen wir es jemandem zuweisen. Wir können dies tun, indem wir in den Optionen für diese Aufgabe auf Zuweisungen klicken undAssignee. auswählen

Weisen Sie der Einfachheit halber die Aufgabe dem Prozessinitiator zu:

image

Wir möchten auch, dass dieseUser Task eine Eingabenachricht vom Benutzer erhalten. Um dies zu erreichen, müssen wir dieser Aufgabe einForm, einem einzelnen Textfeld zuordnen.

Wählen SieUser Task undReferenced Form. Derzeit sind der Aufgabe keineFormzugeordnet. Klicken Sie daher aufNew Formund fügen Sie die erforderlichen Details hinzu:

image

Danach gelangen wir zum AbschnittForms, in dem wir verschiedene Felder, die wir in unserem Formular haben möchten, per Drag & Drop verschieben und Beschriftungen für sie festlegen können:

image

Beachten Sie, dass wir dieRequired, angekreuzt haben, was bedeutet, dass die AufgabeUser nicht abgeschlossen werden kann, ohne dieMessage. einzugeben

Sobald dies erledigt ist, speichern wir es und wechseln zur RegisterkarteApps. Um den von uns erstellten Prozess ausführen zu können, müssen wir eine Prozess-App erstellen.

In der Prozess-App können wir ein oder mehrereProcess Definitions hinzufügen. Danach müssen wir diese App veröffentlichen, damit dieProcesses anderen Benutzern zur Verfügung gestellt werden:

image

3.3. Aufgaben-App

In der Aufgaben-App gibt es zwei Registerkarten:Tasks - für aktuell ausgeführte Aufgaben undProcesses - für aktuell ausgeführteProcesses.

Sobald wir auf die RegisterkarteStart Process inProcesses klicken, erhalten wir die Liste der verfügbaren Prozesse, die wir ausführen können. Aus dieser Liste wählen wir unseren Prozess aus und klicken auf die Schaltflächestart:

image

Unser Prozess enthält nur eine einzige Aufgabe und ist einUser Task. Daher wartet der Prozess darauf, dass ein Benutzer diese Aufgabe abschließt. Wenn wir auf die Aufgabe klicken, auf die der Prozess wartet, sehen wir das Formular, das wir erstellt haben:

image

Wenn wir aufShow Diagram klicken, wird nicht nur dasProcess-Diagramm angezeigt, sondern auch die abgeschlossenen und ausstehenden Aufgaben hervorgehoben. In unserem Fall stehtUser Task noch aus, was hervorgehoben wird:

image

Um diese Aufgabe abzuschließen, können wir aufComplete klicken, aber aufn.. Wie bereits erwähnt, müssen wirMessage, eingeben, da wir dies obligatorisch gehalten haben. Nach Eingabe derMessage, können wir alsoComplete die Aufgabe ausführen.

3.4. Identity Management App

Neben der Verwaltung eines Prozesses verfügen wir über eine Identity Management-App, mit der wir Benutzer und Gruppen hinzufügen können. Wir können auch Rollen für die Benutzer definieren.

4. Activiti REST

Activiti provides a REST API for the Activiti Engine, die installiert werden können, indem dieactiviti-rest.war-Datei in einem Servlet-Container wie Apache Tomcat bereitgestellt wird.

Standardmäßig stellt die Activiti Engine eine Verbindung zu einer speicherinternen H2-Datenbank her. Genau wie inactiviti-app, können wir hier die Datenbankeinstellungen in der Dateidb.properties im OrdnerWEB-INF/classes ändern und die War-Datei neu erstellen.

Wenn die App läuft, können wir diese Basis-URL für alle Anfragen verwenden:

http://localhost:8080/activiti-rest/service/

Standardmäßig erfordern alle REST-Ressourcen die Authentifizierung eines gültigen Activiti-Benutzers. Die grundlegende HTTP-Zugriffsauthentifizierung sollte für jeden REST-Aufruf verwendet werden.

4.1. Erstellen und Ausführen eines Prozesses

Um einen Prozess zu erstellen, benötigen wir zunächst die BPMN-Datei für unseren Prozess. Wir können die Datei entweder wie in unseren vorherigen Artikeln beschrieben basierend aufActiviti with Java erstellen oder sie kann aus dem Prozessprozess der Kickstart-App heruntergeladen werden.

Wir müssen eine POST-Anfrage zusammen mitcontentType: multipart/form-data stellen, in die wir die BPMN-Datei für unseren neuen Prozess hochladen:

POST repository/deployments

Wenn wir diesen Aufruf tätigen, indem wir die BPMN-Datei für den von uns erstellten Prozess übergeben, wird die folgende Ausgabe ausgegeben:

{
    "id": "40",
    "name": "user_msg.bpmn20.xml",
    "deploymentTime": "2017-10-04T17:28:07.963+05:30",
    "category": null,
    "url": "http://localhost:8080/activiti-rest/service/repository/deployments/40",
    "tenantId": ""
}

Jetzt können wir unsere Prozessdefinition aufgelistet sehen, wenn wir alle Prozessdefinitionen erhalten:

GET repository/process-definitions

Als nächstes können wir diesen Prozess mit denprocessKeyausführen, die wir in der BPMN-Datei erwähnt haben:

POST /runtime/process-instances

Mit diesem Anfragetext:

{
    "processDefinitionKey":"user_msg"
}

Die Antwort wird sein:

{
    "id": "44",
    "url": "http://localhost:8080/activiti-rest/service/runtime/process-instances/44",
    "businessKey": null,
    "suspended": false,
    "ended": false,
    "processDefinitionId": "user_msg:1:43",
    "processDefinitionUrl": "http://localhost:8080/activiti-rest/service/repository/process-definitions/user_msg:1:43",
    "processDefinitionKey": "user_msg",
    //other details...
}

Wir können das Diagramm unseres laufenden Prozesses anhand derid der Prozessinstanz sehen, die mit der vorherigen Antwort zurückgegeben wurden:

GET runtime/process-instances/44/diagram

Wie bereits erwähnt, wartet der Prozess auf den Abschluss der Benutzeraufgabe und wird daher im Diagramm hervorgehoben:

image

4.2. Eine Aufgabe erledigen

Werfen wir nun einen Blick auf unsere anstehende Aufgabe mit:

GET runtime/tasks

Die Antwort enthält eine Liste der ausstehenden Aufgaben. Derzeit gibt es nur eine Aufgabe - unsereUser Task:

{
    "data": [
        {
            "id": "49",
            "url": "http://localhost:8080/activiti-rest/service/runtime/tasks/49",
            "owner": null,
            "assignee": "$INITIATOR",
            "delegationState": null,
            "name": "User Input Message",
            "description": "User Task to take user input",
            "createTime": "2017-10-04T17:33:07.205+05:30",
            "dueDate": null,
            // other details...
        }
}

Zuletzt erledigen wir diese Aufgabe mit der Aufgabeid 49:

POST runtime/tasks/49

Dies ist eine POST-Anforderung, und wir müssen das Feldaction senden, das angibt, was wir mit der Aufgabe tun möchten. Wir können eine Aufgabe „lösen“, „erledigen“ oder „löschen“. Außerdem können wir ein Array von Variablen übergeben, die für die Ausführung der Aufgabe erforderlich sind.

In unserem Fall müssen wir ein Feld "message" übergeben, bei dem es sich um das Textfeld "out of User Message" handelt. Unser Anfragetext lautet also:

{
    "action": "complete",
     "variables": [{
         "name": "message",
         "value": "This is a User Input Message"
     }]
}

5. Fazit

In diesem Artikel wurde erläutert, wie die Activiti Kickstart-App und die bereitgestellte REST-API verwendet werden können.

Weitere Informationen zuactiviti-rest finden Sie in denhttps://www.activiti.org/userguide/#rest_api[User Guide], and _activiti-app Details finden Sie in dendocumentation by Alfresco.