Application Activiti Kickstart et Activiti Rest Webapp

Activiti Kickstart App et Activiti Rest Webapp

1. Vue d'ensemble

Dans nos articles précédents (basés sur l'API Activiti avecJava etSpring), nous avons vu comment gérer les processus par programmation. Si nous voulons configurer une démonstration, avec l'interface utilisateur d'Activiti, nous avons deux applications Web qui nous permettront de le faire en quelques minutes.

activiti-app offers a user interface through which a user can perform any identity management and task management related operations, créez des utilisateurs et des groupes.

De même,activiti-rest is a webapp that provides the REST API for performing any operation on a process, task, process, etc.

Dans cet article, nous verrons comment utiliser ces applications Web et quelles fonctionnalités elles fournissent.

2. Téléchargements

Nous pouvons télécharger les fichierswar pour les deux applications Web à partir deActiviti Website lui-même.

Pour la v6.0.0, nous pouvons simplement télécharger lesactiviti-6.0.0.zip, les extraire et les fichierswar se trouvent dans le répertoireactiviti-6.0.0/wars.

3. Application Activiti Kickstart

Nous aurons besoin d'unJava runtime fonctionnel et d'une installationApache Tomcat pour déployer l'application. N'importe quel conteneur Web fonctionnerait, mais Activiti est principalement testé sur Tomcat.

Maintenant, nous devons juste déployer la guerre sur Tomcat et y accéder en utilisanthttp://localhost:8080/activiti-app.

La page d'accueil devrait ressembler à ceci:

image

 

 

 

 

===

 

===

3.1. Base de données

Par défaut, il utilise la base de données H2 en mémoire. Si nous voulons changer la configuration de la base de données, nous pouvons extraire lescode et modifier le fichieractiviti-app.properties.

Après cela, nous devons recréer le fichier war, ce qui peut être fait en exécutant le scriptstart.sh. Cela construira lesactiviti-app avec les dépendances requises.

3.2. Application Kickstart

Lorsque nous cliquons sur l'application Kickstart, nous obtenons les options pour travailler avec unProcess. Nous pouvons créer / importer des processus et les exécuter à partir d'ici.

Créons un petit processus qui a un seulUser Task, qui reçoit un message d'un utilisateur. Une fois dans l'application Kickstart, pour créer un processus, sélectionnez l'ongletProcesses, et cliquez surCreate Process:

image

L'éditeur de processus s'ouvre où nous pouvons faire glisser et déposer divers symboles pour les événements de début, divers types de tâches et les événements de fin pour définir unProcess.

Comme nous ajoutons unUser Task à notre processus, nous devons l'attribuer à quelqu'un. Nous pouvons le faire en cliquant sur les affectations parmi les options de cette tâche et en sélectionnant unAssignee.

Par souci de simplicité, assignons la tâche à l’initiateur du processus:

image

Nous voulons également que ceUser Task reçoive un message d'entrée de l'utilisateur. Pour y parvenir, nous devons associer unForm, à un seul champ de texte, à cette tâche.

Sélectionnez lesUser Task et sélectionnezReferenced Form. Actuellement, aucunForm n'est associé à la tâche, cliquez donc surNew Form et ajoutez les détails requis:

image

Après cela, cela nous mènera à la sectionForms où nous pouvons faire glisser et déposer divers champs que nous voulons dans notre formulaire et également définir des étiquettes pour eux:

image

Notez que nous avons coché lesRequired,, ce qui signifie que la tâcheUser ne peut pas se terminer sans entrer lesMessage.

Une fois terminé, nous l'enregistrerons et accéderons à l'ongletApps. Pour pouvoir exécuter le processus que nous avons créé, nous devons créer une application de processus.

Dans l'application Process, nous pouvons ajouter un ou plusieursProcess Definitions. Après cela, nous devons publier cette application, afin que lesProcesses soient mis à la disposition des autres utilisateurs:

image

3.3. Application de tâche

Dans l'application Tâche, il y a deux onglets:Tasks - pour les tâches en cours d'exécution, etProcesses - pourProcesses. en cours d'exécution

Une fois que nous cliquons sur l'ongletStart Process dans l'ongletProcesses, nous obtenons la liste des processus disponibles que nous pouvons exécuter. Dans cette liste, nous allons sélectionner notre processus et cliquer sur le boutonstart:

image

Notre processus ne contient qu'une seule tâche, et c'est unUser Task. Par conséquent, le processus attend qu'un utilisateur termine cette tâche. Lorsque nous cliquons sur la tâche en attente du processus, nous pouvons voir le formulaire que nous avons créé:

image

Si nous cliquons surShow Diagram, cela ne nous montrera pas seulement le diagramme deProcess mais mettra également en évidence les tâches qui sont terminées et celle qui est en attente. Dans notre cas, leUser Task est toujours en attente, ce qui est mis en évidence:

image

Pour terminer cette tâche, nous pouvons cliquer sur le boutonComplete pourn. Comme mentionné précédemment, nous devrons entrer lesMessage, car nous l'avons gardé obligatoire. Par conséquent, après avoir entré lesMessage,, nous pouvonsComplete la tâche.

3.4. Application de gestion des identités

Outre la gestion d'un processus, nous avons une application de gestion des identités, qui nous permet d'ajouter des utilisateurs et des groupes. Nous pouvons également définir des rôles pour les utilisateurs.

4. Activiti REST

Activiti provides a REST API for the Activiti Engine qui peut être installé en déployant le fichieractiviti-rest.war dans un conteneur de servlet comme Apache Tomcat.

Par défaut, le moteur Activiti se connecte à une base de données H2 en mémoire. Tout comme nous l'avons vu dansactiviti-app, nous pouvons ici modifier les paramètres de la base de données dans le fichierdb.properties du dossierWEB-INF/classes et recréer le fichier war.

Avec l'application en marche, nous pouvons utiliser cette URL de base pour toutes les demandes:

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

Par défaut, toutes les ressources REST nécessitent l'authentification d'un utilisateur Activiti valide. L'authentification d'accès HTTP de base doit être utilisée pour chaque appel REST.

4.1. Créer et exécuter un processus

Pour créer un processus, nous avons d’abord besoin du fichier BPMN. Nous pouvons soit créer le fichier comme décrit dans nos articles précédents sur la base deActiviti with Java, soit le télécharger à partir de la section Processus de l'application Kickstart.

Nous devons faire une requête POST, avec lescontentType: multipart/form-data, où nous allons télécharger le fichier BPMN pour notre nouveau processus:

POST repository/deployments

Lorsque nous effectuons cet appel en transmettant le fichier BPMN pour le processus que nous avons créé, il donnera le résultat suivant:

{
    "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": ""
}

Maintenant, nous pouvons voir notre définition de processus listée, si nous obtenons toutes les définitions de processus:

GET repository/process-definitions

Ensuite, nous pouvons exécuter ce processus en utilisant lesprocessKey que nous avons mentionnés dans le fichier BPMN:

POST /runtime/process-instances

Avec ce corps de requête:

{
    "processDefinitionKey":"user_msg"
}

La réponse sera:

{
    "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...
}

Nous pouvons voir le diagramme de notre processus en cours en utilisant lesid de l'instance de processus renvoyée avec la réponse précédente:

GET runtime/process-instances/44/diagram

Comme mentionné précédemment, le processus attend la fin de la tâche utilisateur et est donc mis en évidence dans le diagramme:

image

4.2. Terminer une tâche

Jetons maintenant un œil à notre tâche en attente en utilisant:

GET runtime/tasks

La réponse aura une liste de tâches en attente. Actuellement, il n'y a qu'une seule tâche - nosUser 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...
        }
}

Enfin, terminons cette tâche en utilisant la tâcheid 49:

POST runtime/tasks/49

Il s'agit d'une requête POST, et nous devons envoyer le champaction indiquant ce que nous voulons faire avec la tâche. Nous pouvons «résoudre», «compléter» ou «supprimer» une tâche. Nous pouvons également transmettre un tableau de variables, nécessaires à la tâche.

Dans notre cas, nous devons transmettre un champ "message", qui est le champ de texte "Message utilisateur". Notre corps de requête est donc:

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

5. Conclusion

Dans cet article, nous avons expliqué comment utiliser l'application Activiti Kickstart et l'API REST fournie.

Plus d'informations suractiviti-rest peuvent être trouvées dans les détails dehttps://www.activiti.org/userguide/#rest_api[User Guide], and _activiti-app peuvent être trouvées dans lesdocumentation by Alfresco.