Skip to content

Commit

Permalink
Merge pull request #37 from Bonitasoft-Community/dev-2021.2
Browse files Browse the repository at this point in the history
Update: exercises FR
  • Loading branch information
dcoille authored Oct 7, 2021
2 parents cea8415 + 8e325b9 commit 83e2ce9
Show file tree
Hide file tree
Showing 37 changed files with 725 additions and 216 deletions.
11 changes: 9 additions & 2 deletions docs/fr/01-bpmn-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,18 @@ Le pool du processus devra contenir les éléments BPMN suivants :
## Instructions pas à pas
1. Démarrer le Studio Bonita
1. Sur la page d'accueil du Studio, cliquer sur **Nouveau projet** dans le menu Concevoir
1. Entrer le nom du projet *"DemandeConges"*
1. Entrer le nom du projet *"DemandeConges"* et cliquer sur **Créer**

> Note : Vous avez la possibilité de choisir dès la création du projet les extensions à intégrer. Cela peut être utile dans le cas d'un projet réel, mais dans notre exemple nous aborderons les extensions plus tard.
1. Créer un nouveau diagramme de processus
- Soit depuis la vue générale du projet, en cliquant sur **Créer**
![Creer diagramme](images/ex01/ex1_11.png)
- Soit depuis le menu
![Nouveau diagramme](images/ex01/ex1_10.png)

1. Spécifier le nom du diagramme et celui du processus :
- Cliquer sur le menu **Fichier / Renommer le diagramme...** en haut du Studio
- Cliquer à droite sur le nom du diagramme *MonDiagramme-1.0.proc* dans l'explorateur, **Renommer**
- Entrer *DiagrammeDemandeConges* pour le nom du diagramme et *DemandeConges* pour celui du pool et *1.0.0* pour la version du diagramme et du pool
![pop up de modification de nom et version de diagramme et pool](images/ex01/ex1_01.png)
1. Renommer l'événement de démarrage en *Saisir demande* :
Expand Down
37 changes: 7 additions & 30 deletions docs/fr/02-data-contract.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,6 @@ Déclarer une variable métier *demande* de type *DemandeConges* sur le pool.
- dateDebut
- nombreJours

Ajouter les deux contraintes suivantes sur le contrat d'instanciation :

- *dateDebut* doit être dans le futur
- *nombreJours* doit être strictement supérieur à zéro

Initialiser le BDM *demande* en utilisant la génération automatique à partir du contrat.

Ajouter un contrat sur l'étape *Valider demande* en utilisant l'assistant avec l'élément suivant :
Expand All @@ -47,10 +42,12 @@ Ajouter un contrat sur l'étape *Valider demande* en utilisant l'assistant avec
## Instructions pas à pas

1. Dupliquer le diagramme de processus existant pour créer une version *2.0.0* :
- Dans le menu supérieur du Studio, cliquer sur **Fichier / Dupliquer le diagramme...**
- Dans l'explorateur du projet, faire un clic droit sur le diagramme et **Dupliquer**
- Mettre à jour les numéros de version du diagramme ET du processus (pool)
1. Créer le BDM *DemandeConges* :
- Naviguer dans le menu **Développement / Modèle de Données Métier / Définir...** L'éditeur de Modèle de données métier s'ouvre.
- Cliquer sur l'icône **Vue d'ensemble** ![overview](images/ex02/ex2_13.png) du projet. Cliquer sur **Créer** de la section *Modèle de Données Métier*.

L'éditeur de Modèle de données métier s'ouvre.
- Renommer l'objet initialisé par défaut **BusinessObject** dans la liste d'objets métiers en *DemandeConges* (A) (il s'agit d'un nom technique, il faut donc omettre les espaces, accents et autres caractères spéciaux)
- Avec l'objet *DemandeConges* sélectionné, ajouter les attributs suivants (B) :

Expand Down Expand Up @@ -98,25 +95,6 @@ Ajouter un contrat sur l'étape *Valider demande* en utilisant l'assistant avec

![contrat défini pour le démarrage du processus](images/ex02/ex2_04.png)

- Toujours dans l'onglet **Exécution / Contrat**, basculer dans l'onglet **Contraintes**
- Ajouter la contrainte suivante :

Propriété | Valeur
--------- | ------
Nom | dateDebutDansFutur
Expression | `demandeInput.dateDebut.isAfter(java.time.LocalDate.now())`
Message d'erreur | La date de début doit être dans le futur

- Ajouter une seconde contrainte :

Propriété | Valeur
--------- | ------
Nom | auMoinsUnJour
Expression | `demandeInput.nombreJours > 0`
Message d'erreur | Le nombre de jours doit être supérieur à zéro

![définition de contraintes](images/ex02/ex2_05.png)

1. Modifier l'initialisation de la variable métier *demande* pour pouvoir récupérer l'initiateur de la nouvelle demande :
- Sélectionner le pool du processus et naviguer dans l'onglet **Données / Variables du pool**
- Sélectionner la variable *demande*
Expand Down Expand Up @@ -147,17 +125,16 @@ Ajouter un contrat sur l'étape *Valider demande* en utilisant l'assistant avec
- Sélectionner la transition *Oui*
- Naviguer dans l'onglet **Général / Général**
- Cliquer sur l'icône crayon à côté du champ **Condition** pour ouvrir l'éditeur d'expression
- Dans l'éditeur d'expression, sélectionner **Java** comme type d'expression
- Sélectionner la variable *demande* et la méthode *isEstAprouvee*
- Dans l'éditeur d'expression, sélectionner **Variables métier/estApprouvee** et le glisser dans l'éditeur d'expression à la place de `true`

![utilisation de variable métier pour définir la condition d'une transition](images/ex02/ex2_07.png)

1. Enregistrer le processus :
- Cliquer sur le bouton **Enregistrer** de la barre de menu supérieur du Studio
1. Exécuter le processus et tester les contraintes des contrats :
1. Exécuter le processus :
- Lancer le processus et remplir les formulaires automatiquement générés

> ℹnformation :
> ℹ Information :
> - pour le champ *dateDebut*, le format de date attendu est AAAA-MM-JJ
> - pour le champ *estApprouvee*, une valeur booléenne est attendue : soit `true` ou `false`
Expand Down
54 changes: 9 additions & 45 deletions docs/fr/03-forms.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ title: Exercice 3 - Création de formulaires

## Objectif

L'objectif de cet exercice est de fournir des formulaires conviviaux et adaptés pour l'exécution du processus.
L'objectif de cet exercice est de fournir des formulaires simplifiés conviviaux et adaptés pour l'exécution du processus.

## Instructions résumées

Expand Down Expand Up @@ -58,18 +58,6 @@ Créer les formulaires suivants :
Libellé | Nombre de jours
Placeholder | Nombre de jours de congés
Valeur minimum (à ne pas confondre avec la propriété **Longueur minimum de la valeur**) | 1

1. Supprimer les valeurs initiales des champs (cela permettra d'afficher les placeholders lors du rendu final) :
- Dans la partie inférieure de l'écran, sous l'onglet **Variables**, cliquer sur l'icône **Crayon** situé à droite de la ligne contenant la variable *formInput*
- Remplacer la valeur du JSON par ceci :
```json
{
"demandeInput" : {
"dateDebut" : null,
"nombreJours" : null
}
}
```

1. Changer le widget **Button** *Submit* :
- Sélectionner le widget *Submit*
Expand Down Expand Up @@ -111,6 +99,7 @@ Créer les formulaires suivants :
- Cliquer sur le bouton **Créer une nouvelle variable** pour définir une variable avec les propriétés suivantes :

![propriétés variable demandeur](images/ex03/ex3_03.png)
> **Note :** vous pouvez utiliser les exemples qui vous permettent de récupérer automatiquement des modèles d'appels API. Ici on va récupérer `identity API` car on cherche les informations liées à un utilisateur.
1. Modifier le titre du formulaire
- Sélectionner le widget de type **Titre** situé en haut du formulaire
Expand All @@ -121,39 +110,14 @@ Créer les formulaires suivants :
Texte | Valider une demande de congés
Niveau du titre | Niveau 2

1. Supprimer le widget *Id demandeur* et mettre à la place un widget pour présenter le prénom et nom du demandeur :
- Faire glisser un widget de type **Text**
- Configurer le widget comme ceci : `<b>Demandeur : </b>{{firstname}} {{lastname}}`

![propriétés texte demandeur](images/ex03/ex3_04.png)

1. Ajouter un widget pour refuser la demande:
- Faire glisser un widget de type **Button** et l'ajouter dans le form container (zone délimitée par une ligne pointillée épaisse)
- Configurer le widget comme ceci :

Propriété | Valeur
--------- | ------
largeur | 6
Libellé | Refuser
Alignement | à droite
Style | danger
Données envoyées au clic | `{"demandeInput":{"estApprouvee":false}}`
Valeur de réponse en cas d'échec | `formOutput._submitError`
URL cible en cas de succès | `/bonita`

1. Ajouter un widget pour approuver la demande
- Faire glisser un widget de type **Button** dans la zone "6 colonnes" à droite du bouton *Refuser*
- Configurer le widget comme ceci :

Propriété | Valeur
--------- | ------
Libellé | Approuver
Style | success
Données envoyées au clic | `{"demandeInput":{"estApprouvee":true}}`
Valeur de réponse en cas d'échec | `formOutput._submitError`
URL cible en cas de succès | `/bonita`
1. Modifier le widget *Id demandeur* pour p`résenter le prénom et nom du demandeur :
- Changer la valeur du libellé du widget **Texte** et indiquer *Demandeur*
- Configurer le champ **Texte** avec les variables : `{{demandeur.firstname}} {{demandeur.lastname}}`
![propriétés texte demandeur](images/ex03/ex3_04.png)

1. Supprimer la case à cocher *Est Approuvee* et le bouton *Submit*
1. Changer le widget **Button** *Submit* :
- Sélectionner le widget *Submit*
- Changer son libellé en *Soumettre*

1. Vérifier le formulaire :
- S'assurer que le formulaire ressemble à ceci :
Expand Down
57 changes: 39 additions & 18 deletions docs/fr/04-actors.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,54 +4,75 @@ title: Exercice 4 - Gestion d'acteurs

## Objectif

L'objectif de cet exercice est d'apporter une notion de collaboration au processus existant en distribuant les tâches entre deux acteurs : le demandeur et le validateur.
L'objectif de cet exercice est d'apporter une notion de collaboration au processus existant en distribuant les tâches entre deux acteurs : le demandeur et l'approbateur.

## Instructions résumées

Dupliquer le diagramme de processus de l'exercice précédent pour créer une version *3.0.0*.

Ajouter une lane *Validateur* au diagramme et y déplacer la tâche *Valider demande*.
Ajouter une lane *Approbateur* au diagramme et y déplacer la tâche *Valider demande*.

Configurer un filtre d'acteur de type **Manager de l'initiateur du processus** sur la lane *Validateur*.
Définir un rôle *approbateur* dans l'organisation et l'associer à l'acteur de la lane *Approbateur*.

## Instructions pas à pas

1. Dupliquer le diagramme de processus de l'exercice précédent pour créer une version *3.0.0*

1. Ajouter une lane *Validateur* au diagramme :
1. Ajouter une lane *Approbateur* au diagramme :
- Sélectionner l'élément lane à partir de la palette d'éléments BPMN présente sur le côté gauche du Studio :

![élément lane dans la palette BPMN](images/ex04/ex4_01.png)

- Cliquer dans le pool du processus pour ajouter la lane
- Sélectionner la lane
- Naviguer dans l'onglet **Général / Lane**
- Modifier le nom en *Validateur*
- Modifier le nom en *Approbateur*

1. Renommer l'autre lane en *Demandeur*

1. Faire glisser la tâche *Valider demande* dans la lane *Validateur*

1. Configurer un filtre d'acteur de type **Manager de l'initiateur du processus** sur la lane *Validateur* :
- Sélectionner la lane *Validateur*
- Naviguer dans l'onglet **Général / Acteurs**
- Sélectionner l'acteur *Employee actor* à partir du menu déroulant
- Cliquer sur le bouton **Définir...** associé au filtre
- Sélectionner un filtre de type **Manager de l'initiateur du processus**
- Cliquer sur **Suivant**
- Nommer le filtre *managerInitiateur*
- Cliquer sur **Terminer**
1. Faire glisser la tâche *Valider demande* dans la lane *Approbateur*

1. Vérifier que le diagramme ressemble à ceci :

![diagramme avec deux lanes](images/ex04/ex4_02.png)

1. Créer un rôle *approbateur* dans l'organisation :
- Dans l'explorateur du projet, cliquer sur **Organisation** et sélectionner l'organisation de test *ACME.organisation*.
L'éditeur d'organisation s'ouvre, avec la vue d'ensemble sur les groupes, les rôles et les utilisateurs.
![éditeur organisation](images/ex04/ex4_03.png)
- Cliquer sur le crayon pour éditer les rôles.
- Cliquer sur **Ajouter un rôle** (A) puis éditer (B) le nom technique du rôle (en cliquant sur le crayon) pour indiquer *approbateur*.
- Nommer le rôle *Approbateur*.
![ajouter un rôle](images/ex04/ex4_04.png)
Associer ce nouveau rôle à l'utilisateur *Helen Kelly* qui est en charge de la validation des congés de notre utilisateur par défaut *Walter Bates*.
- Aller dans l'onglet **Utlisateur** et sélectionner *Helen Kelly*.
- Dans la section **Adhésion**, modifier le rôle de *member* à *approbateur*
![ajouter une adhésion](images/ex04/ex4_09.png)
- Déployer l'organisation pour prendre en compte les changements en cliquant sur l'icône **Déployer**.
>**Note** Pour aller plus loin, il est aussi possible de définir un filtre d'acteur. Cette méthode est décrite dans un prochain exercice.
1. Définir les acteurs du processus
- Revenir sur le diagramme et sélectionner la lane *Approbateur*
- Naviguer dans l'onglet **Général / Acteur**
- Cliquer sur le bouton **Ajouter**
![ajouter un acteur](images/ex04/ex4_05.png)
- Dans le champ **Nom** indiquer *approbateur*. Ne pas cocher la case **Initiateur** car l'initiateur est le demandeur.
- Cliquer sur **Terminer**
- Vérifier que l'acteur défini dans la lane *Demandeur* est bien l'acteur par défaut *Employee actor*

1. Lier l'organisation aux acteurs du processus :
- Cliquer sur l'icône *Configurer* ![configurer](images/ex04/ex4_06.png) qui va permettre d'associer les acteurs aux bons rôles dans l'organisation.
- Dans l'éditeur, sélectionner **Association acteurs/utilisateurs**. L'employee actor est déjà associé à un groupe, il faut donc faire de même avec l'acteur **approbateur**
- Sélectionner l'acteur **approbateur** (A) puis cliquer sur le bouton **Rôles** (B)
- Dans la fenêtre, sélectionner le rôle **approbateur** (C)
![mapping acteur](images/ex04/ex4_07.png)

1. Exécuter le processus avec les deux acteurs :
- Lancer le processus à partir du Studio (l'utilisateur Walter Bates sera utilisé)
- Soumettre le formulaire de *Saisie demande congés*. Si les acteurs sont correctement configurés, la tâche *Valider demande de congés* ne devrait pas être proposée
- Se déconnecter du portail en naviguant sur le nom d'utilisateur dans le coin supérieur droit puis **Déconnexion** :
- Se déconnecter de l'application utilisateur en naviguant sur le nom d'utilisateur dans le coin supérieur droit puis **Déconnexion** :

![déconnexion du portail](images/ex04/ex4_03.png)
![déconnexion du portail](images/ex04/ex4_08.png)

- Se connecter avec l'utilisateur *helen.kelly* et le mot de passe *bpm*
- Si le filtre d'acteur s'est bien exécuté, la tâche *Valider demande de congés* devrait être disponible dans la liste des tâches à faire
Expand Down
49 changes: 15 additions & 34 deletions docs/fr/05-connectors.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ Le code ci-dessous sera utilisé pour récupérer l'email du demandeur dans le c
```groovy
BonitaUsers.getProcessInstanceInitiatorProfessionalContactInfo(apiAccessor,processInstanceId).email
```

## Instructions pas à pas

1. Mise en place de FakeSMTP :
Expand All @@ -33,47 +32,29 @@ BonitaUsers.getProcessInstanceInitiatorProfessionalContactInfo(apiAccessor,proce

1. Dupliquer le diagramme de processus de l'exercice précédent pour créer une version *3.1.0*

1. Tester le connecteur d'envoi d'email pour obtenir la bonne configuration SMTP :
- Naviguer dans le menu **Développement / Connecteurs / Tester un connecteur...** de la barre supérieur du Studio
- Sélectionner un connecteur de type **Courriel** à partir du filtre ou depuis la catégorie **Communications**
1. Ajouter un connecteur d'envoi d'email sur la tâche *Notifier approbation* :
- Sélectionner la tâche *Notifier approbation*
- Naviguer dans l'onglet **Exécution / Connecteurs en entrée**
- Cliquer sur **Ajouter\...**
Un avertissement indique qu'aucun connecteur n'a été préalablement installé dans le projet et invite à le faire.

![avertissement connecteur](images/ex05/ex5_00.png)
>**Note** : Les extensions peuvent être récupérées depuis le Bonita MarketPlace ou depuis des répertoires distants privés ou publiques. Si vous souhaitez aller plus loing, le développement et la gestion de ces extensions sont abordées dans un prochain exercice.
- Cliquer sur OK pour accéder au MarketPlace et sélectionner le connecteur **Email** dans la liste.
![MarketPlace](images/ex05/ex5_02.png)
- Cliquer sur **Installer**
- Sélectionner la définition de connecteur de type **Courriel**
- Cliquer sur le bouton **Suivant**
- Spécifier *envoiEmailApprobation* comme nom
- Passer à la page suivante
- Remplir les paramètres de connexion suivants :

Propriété | Valeur
--------- | ------
Hôte SMTP | *localhost*
Port SMTP | *2525* (le port spécifié dans FakeSMTP)
SSL (sous l'onglet **Sécurité**) | décoché
SSL (sous l'onglet **Sécurité**) | décoché

- Passer à la page suivante
- Entrer des emails (pas nécessairement existants) en tant que destinataire et expéditeur
- Passer à la page suivante
- Entrer *Bonita test* comme sujet
- Cliquer le bouton **Test**
- Confirmer sans cocher de dépendance
- Un message similaire à celui ci-dessous devrait s'afficher, cliquer sur le bouton **OK** :

![message avertissement sortie non-sérialisable](images/ex05/ex5_00.png)

- S'assurer que l'email est bien reçu par FakeSMTP comme illustré ci-dessous :

![Fake SMTP avec un message reçu](images/ex05/ex5_01.png)

- Une fois la configuration validée, cliquer sur ![bouton enregistrer](images/ex05/ex5_02.png)
- Nommer la configuration *configEmail* et la sauvegarder
- Fermer l'interface de test du connecteur

1. Ajouter un connecteur d'envoi d'email sur la tâche *Notifier approbation* :
- Sélectionner la tâche *Notifier approbation*
- Naviguer dans l'onglet **Exécution / Connecteurs en entrée**
- Cliquer sur **Ajouter\...**
- Sélectionner un connecteur de type **Courriel**
- Cliquer sur le bouton **Suivant**
- Spécifier *envoiEmailApprobation* comme nom
- Passer à la page suivante
- Ne pas remplir les paramètres de la page
- Cliquer sur ![bouton charger](images/ex05/ex5_03.png)
- Sélectionner la configuration *configEmail*
- Passer à la page de configuration du destinataire
- Entrer *[email protected]* comme adresse email dans le champ expéditeur **De**
- Utiliser l'icône **crayon** pour éditer l'expression sur le champ destinataire **A**
Expand Down
Loading

0 comments on commit 83e2ce9

Please sign in to comment.