Esup-Signature

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

[TextField]^(SIG_SIGNATURE|SIG_CACHET)$ : pour détecter les champs de type TextField avec les attributs "nom" ("name") SIG_SIGNATURE ou SIG_CACHET

...

Utiliser les classes workflow

Pour les cas les plus spécifiques, il est possible d'ajouter, au code source original d'esup-signature, 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. Cela nécessite d'avoir des compétences en développement et connaitre notamment le langage Java et le framework Spring

Une nouvelle classe workflow devra implémenter la classe "DefaultWorkflow". Des exemples sont déjà présents 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 :

Remarque

Le système des classes "workflow" a été revu en version 1.36.x. Le fonctionnement des anciennes versions n'est plus assuré.

Une refonte a été effectuée car l'ancien système n'apportait pas les fonctionnalités voulues. La nouvelle version est maintenant bien execuée à chaque nouvelle instance d'un workflow. De plus, ces workflows sont maintenant accessible en configuration (options et autorisations d'accès) au niveau de l'interface admin.

Pour les cas les plus spécifiques, il est possible d'ajouter, au code source original d'esup-signature, une classe qui construira un circuit de manière dynamique via du code java.

L’intérêt de cette solution est de permettre la mise en place de mécanismes complexes de calcul des participants et des paramètres des étapes. On peut par exemple imaginer de calculer le n+1 de l'utilisateur courant. Cela nécessite d'avoir des compétences en développement et connaitre notamment le langage Java et le framework Spring

Une nouvelle classe workflow devra étendre "ClassWorkflow" et implémenter la classe "ModelClassWorkflow". Des exemples sont déjà présents 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
languagejava
themeRDark
package org.esupportail.esupsignature.service.interfaces.workflow.impl;

Bloc de code
languagejava
themeRDark
package org.esupportail.esupsignature.service.workflow.impl;

import org.esupportail.esupsignature.entity.Data;
import org.esupportail.esupsignature.entitydto.json.UserWorkflowStepDto;
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.DefaultWorkflowUserService;
import org.springframeworkesupportail.stereotype.esupsignature.service.interfaces.workflow.ClassWorkflow;
import org.esupportail.esupsignature.service.interfaces.workflow.ModelClassWorkflow;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

@Component
public class BasicWorkflowCreatorAndManagerClassWorkflow extends DefaultWorkflowClassWorkflow implements ModelClassWorkflow {

   private Stringtransient namefinal =UserService "BasicWorkflow"userService;

   private String descriptionpublic = "Une signature";CreatorAndManagerClassWorkflow(UserService userService) {
   private List<WorkflowStep> workflowSteps;

    this.userService = userService;
    }

    @Override
    public String getName() {
        return name"CreatorAndManagerClassWorkflow";
    }

    @Override
    public String getDescription() {
        return description"Signature du créateur puis du responsable";
    }

    @Override
    public List<WorkflowStep> getWorkflowSteps() {
      if(this.workflowSteps == null) {  return generateWorkflowSteps("creator", null);
    }

    @Override
  try {
 public List<WorkflowStep> generateWorkflowSteps(String userEppn, List<WorkflowStepDto> workflowStepDto) throws EsupSignatureUserException {
     this.   List<WorkflowStep> workflowSteps = new generateWorkflowStepsArrayList<>(userService.getCurrentUser(), null, null);
         } catch (EsupSignatureUserException e) {//STEP 1
        WorkflowStep workflowStep1 =  return nullnew WorkflowStep();
         }
  workflowStep1.getUsers().add(userService.getCreatorUser());
    }
      return this.workflowStepsworkflowStep1.setDescription("Votre signature");
   }

   public void initWorkflowSteps() {
 workflowStep1.setSignType(SignType.signature);
     this.workflowSteps = new ArrayList<>workflowSteps.add(workflowStep1);
   }

     //STEP @Override2
   public List<WorkflowStep> generateWorkflowSteps(User user, Data data,WorkflowStep List<String>workflowStep2 recipentEmailsStep)= throws EsupSignatureUserException {new WorkflowStep();
      List<WorkflowStep> workflowSteps = new ArrayList<>( workflowStep2.setSignType(SignType.signature);
/* ici on construit la liste des étapes du circuit */
      WorkflowStep workflowStep = new WorkflowStep( workflowStep2.setDescription("Signature de votre supérieur hiérarchique (présélectionné en fonction de vos précédentes saisies)");
      workflowStep  workflowStep2.setStepNumbergetUsers(1);
      workflowStep.setSignType(SignType.pdfImageStamp.add(userService.getGenericUser());
      workflowStep.setDescription("Choix du signataire");
      workflowStep.setChangeable(true);
      if(data != null) {
         workflowStep.setRecipients(workflowService.getFavoriteRecipientEmail(1, data.getForm(), recipentEmailsStep, user)) //à remplacer par l'utilisateur n + 1 de l'utilisateur courant par ex
        //User userManager = calculManager(userEppn)
        //workflowStep2.getUsers().add(userManager);
        workflowStep2.setChangeable(false);
      } else { workflowSteps.add(workflowStep2);
         workflowStep.getRecipients().add(recipientService.createRecipient(null, userService.getGenericUser("Utilisateur issue des favoris", "")));
      }
      workflowSteps.add(workflowStep);
      return workflowSteps;
   }
}


return workflowSteps;
    }

}

Il faut donc a minima implémenter:

  • getName() : en inscrivant un nom unique qui est le même que le nom de la classe
  • getDescription() : qui sera visible au niveau de l'interface graphique.
  • generateWorkflowSteps() : qui
  • Préciser un nom et une description (dans name et description)
  • Implémenter la fonction generateWorkflowSteps() qui retournera une liste de WorkFlowStep (les étapes calculée calculées en fonction de l'utilisateur courant "user")userEppn"). Le deuxième paramètre "workflowStepDto" représente les éléments transmis par l'utilisateur au moment ou il démarre le workflow
Avertissement

Attention cette classe est un @Component donc c'est un singleton. Tout attribut déclaré en dehors de la fonction generateWorkflowSteps sera commun à tous les utilisateurs !

Vous pourrez, par exemple, utiliser RestTemplate restTemplate = new RestTemplate(); pour lancer des requetes API (ajouter "import org.springframework.web.client.RestTemplate;").

Votre configuration LDAP sera accessible en ajoutant

@Ressource
private final LdapTemplate ldapTemplate;

aux attributs de la classe et ensuite lancer une requete : List<PersonLightLdap> personLightLdaps = ldapTemplate.search("eduPersonPrincipalName=" + userEppn, new PersonLightLdapAttributesMapper())


WorflowStep est defini comme suit : https://github.com/EsupPortail/esup-signature/blob/master/src/main/java/org/esupportail/esupsignature/entity/WorkflowStep.java

WorkflowStepDto : https://github.com/EsupPortail/esup-signature/blob/master/src/main/java/org/esupportail/esupsignature/dto/json/WorkflowStepDto.java

User : https://github.com/EsupPortail/esup-signature/blob/master/src/main/java/org/esupportail/esupsignature/entity/User.java

PersonLightLdap : https://github.com/EsupPortail/esup-signature/blob/master/src/main/java/org/esupportail/esupsignature/service/ldap/entry/PersonLightLdap.java


...

Récupérer les données via Power Query

...