Delegates

    FlowerDocs simplifie les tâches personnalisées en mettant à disposition des ServiceTask.

    Principe

    Que ce soit pour des questions de traçabilité ou de suivi, certains processus requièrent la conservation de certaines informations au-delà de la vie d’un processus. Pour cela, FlowerDocs fournit un Delegate permettant de générer une empreinte d’un processus à partir de la tâche stockée dans la variable Camunda ${component} mise à jour automatiquement au fur et à mesure des étapes utilisateurs.

    Configuration

    La configuration de la génération d’empreinte est basée sur l’identifiant d’une classe de tâches. Lors de la génération de l’empreinte, les informations de la tâche sont automatiquement filtrées en fonction de la configuration de la classe de tâches.

    Paramètre Valeur Obligatoire Description
    Name Expression Non Nom de la tâche empreinte créée
    Component Expression Oui Composant à partir duquel la tâche est créée (exemple : ${component})
    classId String Oui classId de la tâche Empreinte


    Exemple BPMN

    <bpmn:endEvent id="fingerPrint" camunda:modelerTemplate="fingerPrint">
          <bpmn:extensionElements>
            <camunda:inputOutput>
              <camunda:inputParameter name="component">${component}</camunda:inputParameter>
              <camunda:inputParameter name="name">fingerprint task name</camunda:inputParameter>
              <camunda:inputParameter name="classId">FingerPrint</camunda:inputParameter>
            </camunda:inputOutput>
            <camunda:executionListener event="start">
              <camunda:script scriptFormat="JavaScript">${saveFingerPrintDelegate.execute(execution)};</camunda:script>
            </camunda:executionListener>
          </bpmn:extensionElements>
          <bpmn:incoming>Flow_1gpxbbi</bpmn:incoming>
    </bpmn:endEvent>


    L’empreinte générée est stockée comme une tâche avec le statut CLOSE interdisant toute modification de cette tâche par les utilisateurs.

    Modification d’un tag

    Extraction d’un tag

    A partir d’un composant, ce délégué permet d’extraire la valeur d’un de ses tags. La valeur extraite est stockée dans une variable et peut ainsi être exploitée dans la suite du processus.

    Si le tag est monovalué, la valeur extraite est une chaîne de caractères. Si le tag est multi-valué, la valeur extraite est une liste de chaînes de caractères contenant les différentes valeurs.

    Paramètre Valeur Obligatoire Description
    Name String Oui Nom du tag
    Component Expression Oui Composant à partir duquel le tag doit être extrait (exemple : ${component})
    Output variable String Oui Nom de la variable de sortie dans laquelle est stockée la valeur du tag extraite


    Exemple BPMN

    <bpmn:serviceTask id="ServiceTask_23thl7w" name="Get tag value" camunda:delegateExpression="${getTagValueDelegate}">
        <bpmn:extensionElements>
            <camunda:field name="tagName">
                <camunda:expression>${tagNameExp}</camunda:expression>
            </camunda:field>
            <camunda:field name="output">
                <camunda:expression>tagResult</camunda:expression>
            </camunda:field>
            <camunda:field name="component">
                <camunda:expression>${componentExp}</camunda:expression>
            </camunda:field>
        </bpmn:extensionElements>
    </bpmn:serviceTask>

    Ajout d’un composant dans un dossier

    Ce délégué permet d’ajouter un composant dans un dossier.

    Paramètre Valeur Obligatoire Description
    Folder identifier String Oui Identifiant du dossier auquel ajouter un composant
    Child category String Oui Catégorie du composant à ajouter au dossier
    Child identifier Expression Oui Identifiant du composant à ajouter au dossier (exemple: ${component.getId().getValue()})


    Exemple BPMN

    <bpmn:serviceTask id="ServiceTask_23thl7w" name="Add folder child" camunda:delegateExpression="${addFolderChildDelegate}">
        <bpmn:extensionElements>
        <camunda:field name="id">
            <camunda:expression>${folderId}</camunda:expression>
        </camunda:field>
        <camunda:field name="category">
            <camunda:expression>DOCUMENT</camunda:expression>
        </camunda:field>
        <camunda:field name="childId">
            <camunda:expression>${documentId}</camunda:expression>
        </camunda:field>
        </bpmn:extensionElements>
    </bpmn:serviceTask>

    Génération de contenu

    Ce délégué permet de générer un fichier HTML à partir d’un template HTML.

    Le fichier généré est stocké comme un fichier temporaire et est donc accessible pendant une durée limitée. Son identifiant est de la forme tmp_<uuid>.

    Paramètre Valeur Obligatoire Description
    Template String Oui Nom du template à utiliser
    Name String Oui Nom du fichier généré
    Output variable String Oui Nom de la variable de sortie dans laquelle est stockée l’identifiant du fichier généré


    Exemple BPMN

    <bpmn:serviceTask id="ServiceTask_23thl7w" name="Generate HTML File" camunda:delegateExpression="${generateFileDelegate}">
        <bpmn:extensionElements>
            <camunda:field name="template">
                <camunda:expression>document-template.html</camunda:expression>
            </camunda:field>
            <camunda:field name="outputFormat">
                <camunda:expression>HTML</camunda:expression>
            </camunda:field>
            <camunda:field name="name">
                <camunda:expression>generated-document.html</camunda:expression>
            </camunda:field>
            <camunda:field name="outputVariable">
                <camunda:expression>output</camunda:expression>
            </camunda:field>
        </bpmn:extensionElements>
    </bpmn:serviceTask>

    Export des résultats de recherche

    Ce délégué permet d’exporter les résultats d’une recherche au format CSV. En sortie, l’identifiant du fichier temporaire contenant les résultats de recherche est fourni dans une variable.

    Paramètre Valeur Obligatoire Description
    Search Search Oui Recherche utilisée
    Locale String Oui Locale à laquelle les resultats s’adaptent
    Output variable String Oui Nom de la variable de sortie dans laquelle est stocké l’identifiant du fichier d’exportation généré


    Exemple BPMN

    <bpmn:serviceTask id="Task_9cu64ie" name="Export search results" camunda:modelerTemplate="com.flower.docs.bpmn.ExportSearchResults" camunda:delegateExpression="${exportSearchResultsDelegate}">
    	<bpmn:extensionElements>
    		<camunda:field name="search">
    			<camunda:expression>${search}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="locale">
              <camunda:string>fr</camunda:string>
            </camunda:field>
    		<camunda:field name="output">
              <camunda:expression>fileId</camunda:expression>
    		</camunda:field>
    	</bpmn:extensionElements>
    </bpmn:serviceTask>

    Ce délégué nécessite un objet Search en entrée. Cet objet peut être instancié depuis une tâche de type Script avec le code Javascript suivant :

    var name = com.flower.docs.domain.FlowerFields.NAME;
    var creationDate = com.flower.docs.domain.FlowerFields.CREATION_DATE;
    var documentCategory = com.flower.docs.domain.component.Category.DOCUMENT;
    var request = com.flower.docs.common.search.SearchRequestBuilder.init().display(name).display(creationDate).start(0).max(10).build();
    var search = com.flower.docs.common.virtualfolder.SearchBuilder.init(documentCategory).build();
    search.setRequest(request);
    search
    

    Conversion PDF

    Contenu de document

    Ce délégué permet de convertir le contenu (ou fichier) d’un document au format PDF. Le fichier converti au format PDF est stocké comme un fichier temporaire et son identifiant est stocké dans une variable du processus.

    Paramètre Valeur Obligatoire Description
    Document identifier String Oui Identifiant du document à convertir
    File identifier String Oui Identifiant du fichier à convertir
    Locale String Oui Locale utilisée pour la conversion
    Output variable String Oui Nom de la variable de sortie dans laquelle est stocké l’identifiant du fichier converti


    Exemple BPMN

    <bpmn:serviceTask id="ServiceTask_89ald2t" name="Convert document file" camunda:delegateExpression="${convertDocumentFileDelegate}">
    	<bpmn:extensionElements>
    		<camunda:field name="documentId">
    			<camunda:expression>${documentIdExp}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="fileId">
    			<camunda:expression>${fileIdExp}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="locale">
    			<camunda:expression>${localeExp}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="output">
    			<camunda:expression>convertResult</camunda:expression>
    		</camunda:field>
    	</bpmn:extensionElements>
    	<bpmn:incoming>SequenceFlow_56thj6z</bpmn:incoming>
    	<bpmn:outgoing>SequenceFlow_73dtn5i</bpmn:outgoing>
    </bpmn:serviceTask>

    Fichier temporaire

    Ce délégué permet de convertir un fichier temporaire au format PDF. Le fichier converti au format PDF est stocké comme un fichier temporaire et son identifiant est stocké dans une variable du processus.

    Paramètre Valeur Obligatoire Description
    File identifier String Oui Identifiant du ficher temporaire à convertir
    Locale String Oui Locale utilisée pour la conversion
    Output variable String Oui Nom de la variable de sortie dans laquelle est stocké l’identifiant du fichier converti


    Exemple BPMN

    <bpmn:serviceTask id="ServiceTask_89ald2t" name="Convert temporary file" camunda:delegateExpression="${convertTempFileDelegate}">
    	<bpmn:extensionElements>
    		<camunda:field name="fileId">
    			<camunda:expression>${fileIdExp}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="locale">
    			<camunda:expression>${localeExp}</camunda:expression>
    		</camunda:field>
    		<camunda:field name="output">
    			<camunda:expression>convertResult</camunda:expression>
    		</camunda:field>
    	</bpmn:extensionElements>
    	<bpmn:incoming>SequenceFlow_56thj6z</bpmn:incoming>
    	<bpmn:outgoing>SequenceFlow_73dtn5i</bpmn:outgoing>
    </bpmn:serviceTask>

    Configuration d’un serveur email

    Ce délégué nécessite au préalable la configuration d’un EmailServer. Cette configuration d’un serveur email s’appuie sur les deux protocoles suivants :

    • SMTP/SMTPS pour l’envoi d’email
    • IMAP/IMAPS pour la réception et récupération d’email

    Cette configuration peut être réalisée directement à travers la console d’administration dans la section Configuration > Email.

    Envoi d’un email

    Informations d’envoi

    Paramètre Valeur Obligatoire Description
    From Adresse email Oui Expéditeur
    To Adresse email Oui Destinataire
    Subject String Oui Sujet
    Cc Adresse email Non Destinataire en copie
    Bcc Adresse email Non Destinataire en copie cachée
    Text String Oui Corps de l’email

    Ces paramètres peuvent être valorisés à l’aide de variables du processus telles que ${variable}.

    Templating du corps

    Afin de générer le corps de l’email à partir d’un template HTML, il est nécessaire de remplir le champ Template avec son nom. Dans ce cas, le corps de l’email sera ajouté dans la variable content pour être utilisée avec le template configuré.

    Pièces jointes

    Lors de l’envoi d’un email, des fichiers peuvent être ajoutés en pièce jointe de celui-ci. Ces fichiers peuvent être soit le contenu de documents soit des fichiers temporaires.

    Afin d’ajouter des fichiers en pièce jointes, renseignez le champ Document identifier to attach avec les identifiants à ajouter (séparés par des virgules).

    Poll d’email

    Informations d’envoi

    Paramètre Valeur Obligatoire Description
    Folder INBOX Oui Dossier ou libellé
    Download Option No downloads Oui Option de téléchargement
    Output Variable emails Oui Nom de la variable stockant les courriers reçus

    Ces paramètres peuvent être valorisés à l’aide de variables du processus telles que ${variable}.

    Poll de Gmail

    Il faut activer l’option Autoriser les applications moins sécurisées pour Consulter GMail.

    Envoie d’une requête HTTP

    Informations d’envoie

    Paramètre Obligatoire Description
    URL Oui URL HTTP
    Expected response type Oui Format attendu de la réponse HTTP
    Path Oui Sélecteur utilisé pour extraire la partie de la réponse à conserver
    Response Variable Non Nom de la variable utilisée pour stocker la partie sélectionnée de la réponse HTTP
    Save as temp file Oui Détermine si la réponse HTTP est stockée en tant que fichier temporaire
    Temporary file Variable Non Nom de la variable utilisée pour stocker l’identifiant du ficher temporaire

    Ces paramètres peuvent être valorisés à l’aide de variable du processus tel que ${variable}.

    Sélecteur de réponse

    Afin de conserver uniquement une ou plusieurs parties de la réponse obtenue, il est possible de définir un sélecteur. Ce sélecteur doit être adapté en fonction du format de la réponse HTTP.

    XPath

    XPath est un langage permettant de localiser des noeuds au sein d’un document XML. Un chemin XPath peut être utilisé pour conserver une ou plusieurs portions d’une réponse HTTP obtenue au format XML.

    JSONPath

    Les expressions JSONPath peuvent être utilisées pour des réponses au format JSON.

    Les expressions JSONPath peuvent être utilisées tel que :

    • la notation par points :

      $ .store.book [0] .title
    • la notation entre parenthèses :

      $ ['store'] ['book'] [0] ['title']

    Pour plus d’informaion, veuillez consulter la spécification JSONPath