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