...
Pour autant, l'administrateur ne peut pas consulter les documents, il peut simplement vérifier la liste des événements et si besoin supprimer les demandes.
...
Les circuits
Info |
---|
Esup-signature permet de créer des circuits de signatures puissants dont les paramètres sont :
|
...
Configurer un circuit
Pour ajouter un nouveau circuit via l'interface graphique, cliquez sur le bouton bleu "+" puis saisissez un nom (unique). Vous serez redirigé vers la fiche correspondant à votre nouveau circuit. En cliquant sur le bouton bleu "3 points" vous pouvez modifier les paramètres généraux du circuit, ajouter des étapes ou supprimer le circuit.
Dans les paramètres généraux, vous pouvez:
- Modifier la description du circuit (pas défaut on y trouve le nom du circuit)
- Activer le système de permettant de scanner les méta-données des fichiers PDF (dans ce cas le ne sera pas nécessaire de définir les étapes du circuit)
- Définir la visibilité du circuit en choisissant parmi : une visibilité globale ou des rôles (rôles configurés via le fichier de configuration application.yml)
- Configurer la source des données si l'on souhaite qu' Esup-signature récupère automatiquement les documents.
Dans ce cas il faut choisir le protocole : smb pour les partages réseaux, cmis pour une GED compatible ou directement sur un dossier local de votre serveur Esup-signature,
puis saisir le chemin sous forme d'uri ex : smb://serveur_de_fichiers/bon_de_commandes/tosign - Idem pour la destination des documents
Pour définir un circuit il faut ensuite utiliser le bouton noir "Ajouter une étape" (les pas). Comme pour une demande signature simple, il faut sélectionner les participants concernés par cette étape, choisir si tous les participants doivent signer lors de cette étape et le définir le type (visa, calligraphique ou électronique)
De plus, il est possible d'ajouter un description de l'étape qui apparaîtra au moment où l'utilisateur validera sa demande. De même il est possible de permettre à l'utilisateur de modifier les participants d'une étape au moment de l'envoi de sa demande en cochant la case "L'utilisateur peut modifier les participants" de l'étape correspondante. Lorsque vous validez, un "bloc" étape est créer au niveau de la fiche du circuit. Dans ce bloc, vous avez la possibilité de modifier les informations précédemment saisies.
Remarque |
---|
Attention, il n'est pas possible de modifier l'ordre des étapes, il faudra supprimer puis recréer les étapes si besoin |
Définir un circuit via les métas-données des PDF
Dans certains cas, les participants à une étape donnée ne sont pas prédéfinis. Dans le cas concret des bons de commande à l'université de Rouen, les signataires sont détermines en fonction de l'unité budgétaire (donc par l'application métier).
Le cas d'usage à Rouen est que les utilisateurs génèrent des bon de commande "à signer" au format PDF et les déposent dans leur dossier de travail. Deux cas possible :
- Mettre en place un script qui va calculer le workflow, créer ce workflow dans esup-signature via les web-services puis injecter le document dans Esup-signature
- Mettre en place un script qui calcule le workflow, inscrit ce workflow dans les métas-données du document et le copie dans un dossier défini comme "source" au niveau d'Esup-signature
Pour cette dernière solution il faut donc créer un circuit comme vu précédemment, y cocher la case "Scanner les metadonnées des PDF" et définir une source pour la récupération des documents.
Les métas-données qui doivent être inscrite dans les document PDF sont les suivantes:
- sign_type_default_val : contenant le type de signature (visa, pdfImageStamp, certSign ou nexuSign)
- sign_step#<n> : contenant la liste des participant de l'étape n
- sign_target : contenant le chemin de dépot des documents après signature
Lorsque le scheduler passera pour importer les documents, ceux-ci seront analysés, le circuit sera généré en fonction des informations trouvées dans les métas-données.
Exemple de code java permettant d'ajouter les métas-données à un fichier pdf :
Bloc de code | ||||
---|---|---|---|---|
| ||||
PDDocument document = PDDocument.load(in);
PDDocumentInformation info = document.getDocumentInformation();
info.setCustomMetadataValue("sign_type_default_val", "pdfImageStamp");
info.setCustomMetadataValue("sign_step#1", "[machin@univ-ville.fr, truc@univ-ville.fr]");
info.setCustomMetadataValue("sign_target_key","smb://serveur_de_fichiers/la_destination/signed");
|
Créer une classe workflow
Pour les cas les plus spécifiques, il est possible d'ajouter, au sources originales, une classe qui décrira précisément un circuit.
Info |
---|
L’intérêt de cette solution est de pouvoir mettre en place des mécanismes complexes de calcul des participants. On peut par exemple imaginer de calculer le n+1 de l'utilisateur courant. |
Cette nouvelle classe devra implémenter la classe "DefaultWorkflow". Des exemples sont déjà présent dans le code source original d'Esup-signature dans le dossier
src/main/java/org/esupportail/esupsignature/service/workflow/impl/
Votre classe doit être construite comme suit :
Bloc de code | ||||
---|---|---|---|---|
| ||||
package org.esupportail.esupsignature.service.workflow.impl;
import org.esupportail.esupsignature.entity.Data;
import org.esupportail.esupsignature.entity.User;
import org.esupportail.esupsignature.entity.WorkflowStep;
import org.esupportail.esupsignature.entity.enums.SignType;
import org.esupportail.esupsignature.exception.EsupSignatureUserException;
import org.esupportail.esupsignature.service.workflow.DefaultWorkflow;
import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
@Component
public class BasicWorkflow extends DefaultWorkflow {
private String name = "BasicWorkflow";
private String description = "Une signature";
private List<WorkflowStep> workflowSteps;
@Override
public String getName() {
return name;
}
@Override
public String getDescription() {
return description;
}
@Override
public List<WorkflowStep> getWorkflowSteps() {
if(this.workflowSteps == null) {
try {
this.workflowSteps = generateWorkflowSteps(userService.getCurrentUser(), null, null);
} catch (EsupSignatureUserException e) {
return null;
}
}
return this.workflowSteps;
}
public void initWorkflowSteps() {
this.workflowSteps = new ArrayList<>();
}
@Override
public List<WorkflowStep> generateWorkflowSteps(User user, Data data, List<String> recipentEmailsStep) throws EsupSignatureUserException {
List<WorkflowStep> workflowSteps = new ArrayList<>();
/* ici on construit la liste des étapes du circuit */
WorkflowStep workflowStep = new WorkflowStep();
workflowStep.setStepNumber(1);
workflowStep.setSignType(SignType.pdfImageStamp);
workflowStep.setDescription("Choix du signataire");
workflowStep.setChangeable(true);
if(data != null) {
workflowStep.setRecipients(workflowService.getFavoriteRecipientEmail(1, data.getForm(), recipentEmailsStep, user));
} else {
workflowStep.getRecipients().add(recipientService.createRecipient(null, userService.getGenericUser("Utilisateur issue des favoris", "")));
}
workflowSteps.add(workflowStep);
return workflowSteps;
}
}
|
Il faut donc a minima :
...
Voir la page dédiée aux circuits : Gestion des circuits
...
Les formulaires
Info |
---|
L'autre fonction principale d'Esup-signature est la possibilité de mettre rapidement en ligne des formulaires. Cette fonction s'appuie sur les PDF Forms (formulaires présent dans les fichiers PDF). Esup-signature est capable d'analyser les formulaires PDF, d'en effectuer le rendu (via PDF.js) et de stocker les données saisies dans sa base de données. |
...