Permettre à un groupe de voir juste la liste et le détail des cas

Bonjour,

J'ai un processus qui implique 4 enseignants et 30 étudiants. Les enseignants valident des tâches (saisie de donnée, traduction... sur un processus Bonita). Ils peuvent renvoyer le travail aux étudiants. Le processus est décrit dans l'image ci-après. Chaque étudiant ouvre deux cas.

Pour faciliter le travail des enseignants, j'aimerai leur permettre de savoir où en est chaque cas, c'est à dire à quelle étape (02, 04, 05,...?)

Lorsque je me connecte moi-même en tant qu'Administrateur, je peux pour chaque cas voir les détails, dans une page dont l'URL se termine par: portal/homepage#?id=XXXXX&_p=casemoredetailsadmin&_pf=2

(avec XXXXX l'id du cas).

Cela montre notamment la liste des Tâches en attente et  l'historique des Tâches terminées (avec date, heure, description, acteur...).

J'aimerai que les enseignants (qui sont dans un groupe) puisse avoir accès à cela (liste des cas et détails de chaque cas), mais à aucune autre fonction d'administration. Par exemple, je ne veux PAS qu'ils puissent changer l'organisation, supprimmer un cas ni désactiver un processus.

Idéalement je voudrais faire cela juste avec le portail, sans re-déploiement, sur le processus actuellement en production.

Question subsidiaire: permettre aux étudiants de voir tous les cas auxquels ils participent (les étudiants travaillent en binôme avec les rôles "translator" ou "reviewer"; NB: les enseignants agissent dans la lane "supervisor").

Est-ce possible en attribuant des droits spécifiques aux groupes enseignant et etudiant? Ou sinon, en créant un login spécifique avec juste ces droits là? (j'ai déjà un compte spécifique d'administrateur, pour moi)

Merci pour toute aide!

Mayeul

PS: à des fins de suivi, j'ai déjà fait une requête SQL accédant directement à la base de données métier (Bonita utilise l'API pour accès à PostgeSQL) et j'arrive à extraire et afficher aux utilisateurs les dernières données et une valeur persistenceid qui indique un numéro de version (le dernier), mais je n'arrive pas à accéder aux autres informations (date-heure, nom d'étape et acteur des étapes précédentes). Si j'avais cela, cela pourraît aussi me suffir.

Screenshot_Bonita_Gnad.png

Mayeul,

Vous avez la page d'aperçu du processus qui vous montrera les informations sur le cas. Vous aurez probablement une page générée automatiquement dans votre processus en ce moment, mais il sera intéressant de la modifier pour les nouvelles versions.

/bonita/portal/form/processInstance/XXXXX

Vous avez également la possibilité de générer une page pour afficher des informations sur les cas les récupérant à partir des API

https://documentation.bonitasoft.com/bonita/7.10/bpm-api#toc6

 

Autres liens utiles:

https://documentation.bonitasoft.com/bonita/7.10/bonita-bpm-portal-urls

Cdt

 

Bonjour,

Merci beaucoup pour cette réponse.

Je ne suis pas certain d'avoir une page générée automatiquement dans mon processus en ce moment .

 

Pour avoir une réponse type 200 avec une adresse de ce type:

/bonita/portal/form/processInstance/3009

deux conditions doivent être réunies:

- je dois être connecté comme administrateur (sinon j’ai 403 Forbidden)

- je dois connaître le numéro de cas (ici 3009)

 

Si je vais en tant qu’administrateur sur la page monsite.fr/bonita/portal/form/processInstance/3009

Alors bonita réécrit l’URL ainsi:

monsite.fr/bonita/portal/resource/processInstance/nom du processus/1.2.3/content/?id=3009

(avec 1.2.3=version du processus)

La réponse de type 200 est une page vide. Les outils web développer de Firefox indiquent un status 200, des response headers (230 bits) et un Content-length: 0.

 

Si par contre en tant qu’administrateur je mets un numéro de ‘case’ qui n’existe pas, comme 123:

monsite.fr//bonita/portal/form/processInstance/123

Alors j’ai erreur 404 – not found.

 

J’arrive à avoir quelques informations un peu utiles (mais codées, peu utiles aux humains) par l’API mais seulement si je suis connecté comme administrateur, avec des URLS du type:

bonita/API/bpm/humanTask?p=0&c=100

/bonita/API/bpm/activity?p=0

bonita/API/bpm/case?p=0

 

Si je ne suis pas connecté comme administrateur, la réponse aux requêtes par l'API est: Vous n'êtes pas autorisé à consulter cette page. HTTP ERROR 403

Mon problème n'est peut-être pas tant de construire une page (avec l'API) avec les bonnes informations que de donner à certains utilisateurs l'accès à une page qui existe déjà (sans eur donner tous les droits administrateurs).

Avec portal/homepage#?id=XXXXX&_p=casemoredetailsadmin&_pf=2 je peux voir ce qui suit, mais les non-administrateurs ne peuvent pas.

Mayeul,

La page que je fais référence est la "page de synthese" et il est configuré au niveau du pool. Pour y accéder en tant qu'utilisateur, vous pouvez le faire à partir de la liste des tâches ou de la liste des cas.

Si aucun page de synthese n'est défini, il sera utilisé un page de synthese généré automatiquement.
La vue d'administration affiche plus d'informations dont vos utilisateurs n'auront pas besoin, comme l'exécution automatique des tâches, les erreurs, etc. et ce n'est pas personnalisable comme la page de synthese

Au final j'ai créé un script en bash qui s'exécute réguilièrement et appelle deux vues Postgresql puis enregistre le résultat dans un tableau html accessible aux utilisateurs. Au cas où cela peut être utile à d'autres:

#!/bin/bash
# Ecrire le contenu des principales donnees metiers (Bonita) dans un tableau html
echo "<head><meta charset='UTF-8'></head>" > /espace/de/telechargement/process_contrib2.html
# FIXME: sed 's/+01:00//' ne marche que durant l'heure d'hiver; l'été: +02:00
echo "Date et heure: $(date --iso-8601=minutes)" | sed 's/+02:00//' >> /espace/de/telechargement/process_contrib2.html
# NB: docker exec -it is for interactive mode, not for cron
/usr/bin/docker exec  bonita_db_postgres psql -H -P pager=off -d  businessDB -U bonitaUser -c 'SELECT * FROM bonita_vers_html' >> /espace/de/telechargement/process_contrib2.html
# # # # # # # #  STATUS (summary)
echo "<head><meta charset='UTF-8'></head>" > /espace/de/telechargement/process_status_temp.html
echo "Date et heure: $(date --iso-8601=minutes)" | sed 's/+02:00//' >> /espace/de/telechargement/process_status_temp.html
/usr/bin/docker exec  bonita_db_postgres psql -H -P pager=off -d  bonitadb -U login_utilisateur -c 'SELECT * FROM my_task_history' >> /espace/de/telechargement/process_status_temp.html
mv /espace/de/telechargement/process_status_temp.html /espace/de/telechargement/process_status.html

Ma première vue PostgreSQL est spécifique à mes données métiers. La seconde, ci-dessous, est un peu plus générique (mais son utilité tient au fait que le second caractère du nom de chaque étape contient le numéro d'ordre de la tâche, cf. le diagramme du processus métier).

-- Décommenter la ligne 'CREATE OR REPLACE VIEW....' pour créer une vue:
-- CREATE OR REPLACE VIEW my_task_history AS
-- Historique de toutes les tâches (avec une seule ligne par tâche,
-- celle correspondant au stateid le plus avancé)
WITH task_history AS
(SELECT rootcontainerid as case_id, sourceobjectid, "name",
min(stateid) as current_status
FROM arch_flownode_instance
where kind = 'user'
GROUP BY rootcontainerid, sourceobjectid, "name"
ORDER BY rootcontainerid, sourceobjectid),

-- Idem pour les tâches finies, avec numéros concaténés dans un seul string
-- Nota: le nom des tâches d'origine est de la forme "02. Nom de la tâche";
-- on extrait ce numéro avec substring
tasks_done_query AS
(SELECT case_id,
concat('1-', string_agg(substring(name from 2 for 1), '-')) AS tasks_done
FROM task_history
WHERE current_status = 2
GROUP BY 1),

-- Idem pour les tâches à faire
tasks_to_do_query AS
(SELECT case_id,
string_agg(substring(name from 2 for 1), '-' ORDER BY name) AS tasks_to_do
FROM task_history
WHERE current_status IN (32, 4)
GROUP BY 1),

-- Une seule ligne par cas, avec les tâches faites et à faire
-- Si rien à faire, tasks_to_do vaut null
tasks_list_2 AS
(SELECT tasks_done_query.*, tasks_to_do_query.tasks_to_do
FROM tasks_done_query LEFT JOIN tasks_to_do_query
ON tasks_done_query.case_id = tasks_to_do_query.case_id),

-- La description des tâches seule
tasks_description AS
(SELECT rootcontainerid as case_id, displaydescription
FROM arch_flownode_instance
where kind = 'user' AND statename = 'ready'
GROUP BY rootcontainerid, displaydescription
order by rootcontainerid)

-- Fusion de tout ce qui précède, un cas par ligne.
SELECT tasks_description.displaydescription as case_description, tasks_list_2.*
FROM tasks_list_2 LEFT JOIN tasks_description
ON tasks_list_2.case_id = tasks_description.case_id
ORDER BY displaydescription
;

Merci beaucoup Pablo! Je craignais un peu cette réponse. J'avais vu l'icone de l'oeil (et son infobulle "Afficher la page de synthèse du cas"). Elle conduit à une page qui indique " Aucune page de synthèse n'a été définie pour ce processus.".

J'imagine qu'il n'est pas possible de créer une page de synthèse sans redéployer une version du processus? (ce qui est exclu dans les conditions actuelles "covid-19": connexion au serveur très instable). J'utilise Bonita 7.9.3 community déployé avec docker, et la REST API Postgres (chaque re-déploiment me prend 1 à 2 heures au bureau... la journée à la maison)... Donc, sauf autre solution, pour le prochain cycle dév-test-production sans doute.

EDIT: je viens de voir le bouton (pour l'admin sys) permettant d'installer des composants... Et j'ai trouvé comment créer une page de synthèse avec le studio et le UI designer. J'imagine que je peux l'importer. Cela répond à ma question, merci! (reste à faire le dév' et, que, avec un accès encore plus compliqué au serveur de staging - sur intranet, ce n'est pas gagné, mais c'est un autre sujet).