Développement d'une fonction

Développement d'une fonction

Une fonction est une méthode de traitement. Elle permet de récupérer des informations de YellowBox, depuis le contexte d’appel, et de réaliser un traitement de tout type.

Une fonction peut être explicitement applicable à une fiche YellowBox, auquel cas les paramètres d’entrée seront des informations de la fiche de lancement de l’appel et le ou les paramètres de sortie seront les champs d’informations automatiquement mis à jour à la fin du traitement.

L’intégration dans YellowBox d’une fonction se fait à travers une automatisation de processus ou via l’intégration automatique d’un bouton d’exécution.

Création de la classe principale

Pour créer une fonction, il faut créer une classe qui étend de la classe com.yellowbox.plugin.v3.Function.

Pour ce faire, il faut cliquer droit sur le projet puis “New” -> “Class”.
Saisir un nom de package, de la même manière que pour le Header. Dans notre cas com.dimosoftware.example.functions.
Saisir un nom pour la classe, par exemple “ExampleFunction”. Dans la zone Superclass, cliquer sur le bouton “Browse” et entrer “Function” puis sélectionner la classe com.yellowbox.plugin.v3.Function, cliquer sur le bouton “OK” puis “Finish”.

Création Function

Méthode getParams()

La méthode getParams() permet de définir l’ensemble des paramètres d’entrée et/ou de sortie nécessaires au traitement de la fonction. Elle retourne un objet Params.
L’objet Params contient une liste d’objet Param.
Pour ajouter un Param dans un Params, il est possible d’écrire le code suivant :

Params parameters = new Params();
Param param = parameters.addNew(Type.STRING, InOut.IN, "nom du param", VARNAME); 
param.setDescription("Description du param" ); 
param.setMandatory(true);

Les différents attributs d’un objet Param sont définis ci-dessous :

  • type peut prendre les valeurs suivantes :
    • Type.STRING : il s’agit d’une valeur alphanumérique qui sera récupérée dans ce paramètre
    • Type.INT : il s’agit d’une valeur de type entier qui sera récupérée dans ce paramètre
    • Type.FLOAT : il s’agit d’une valeur de type float qui sera récupérée dans ce paramètre
    • Type.BOOLEAN : il s’agit d’une valeur de type booléen qui sera récupérée dans ce paramètre
    • Type.COLOR : il s’agit d’une valeur de type couleur qui sera récupérée dans ce paramètre
    • Type.DATE : il s’agit d’une valeur de type date qui sera récupérée dans ce paramètre
    • Type.PHONENUMBER : il s’agit d’une valeur de type téléphone qui sera récupérée dans ce paramètre
    • Type.LONGTEXT : il s’agit d’une valeur de type zone de texte qui sera récupérée dans ce paramètre
    • Type.IDFIELD : ce paramètre récupère la référence interne du champ selectionné
    • Type.IDTABLE : ce paramètre récupère la référence interne de la table selectionnée
    • Type.IDRECHERCHE : ce paramètre récupère la référence interne de la recherche selectionnée
    • Type.MULTISELECTOR[DEPRECATED] : ce paramètre récupère la liste des références internes des champs selectionnés (séparés par des virgules). Le type Multiselector ne prend pas en compte l’attribut dependsOn. Ce type de paramètre est déprécié, lui préférer un paramètre de type IDFIELD avec l’attribut multi défini à true.
  • inOut : définit s’il s’agit d’un paramètre d’entrée (InOut.IN) ou de sortie (InOut.OUT)
  • name : nom du paramètre tel que présenté lors de l’instanciation du plugin
  • varName : nom de variable du paramètre. Utilisé pour récupérer la valeur dans le code de la fonction
  • mandatory : permet de définir si le paramètre est obligatoire lors du paramétrage du plugin
  • description : la description sera affichée dans la fenêtre de paramétrage du plugin dans YellowBox et est de ce fait destinée aux utilisateurs
  • dependsOn : il est possible d’utiliser la méthode setDependsOn(String) sur les paramètres de type Table, Champ ou Recherche avec pour effet de les rendre dépendant du paramètre de type Table fourni. Un paramètre de type Recherche dépendant d’un paramètre Table ne proposera que les recherches liées à cette table. Un paramètre de type Champ dépendant d’une table ne proposera que les champs de cette table. Un paramètre de type Table dépendant d’une table ne proposera que les tables liées à cette table. Un paramètre dépendant d’un champ de type IDFIELD proposera les valeurs issues de la liste de mots-clés dont il dépend, ou les valeurs résultant de la recherche liée dans le cas d’un champ capture, ou la liste des utilisateurs et des groupes dans le cas d’un champ gestionnaire.
  • multi : il est possible d’utiliser la méthode setMulti(boolean) sur les paramètres pour déclarer qu’ils acceptent plusieurs valeurs. Si l’attribut multi est déclaré true pour un paramètre, son sélecteur permettra la sélection de plusieurs valeurs et il sera possible de récupérer ces valeurs sous la forme d’une liste. Cette fonction n’est pas disponible pour les paramètres de type BOOLEAN et LONGTEXT.

Méthode getName()

Il s’agit ici de fournir le nom de la fonction sans espace ni caractères spéciaux qui sera utilisé comme ID de la fonction.

Méthode getTitle()

Il s’agit ici de fournir la traduction de la fonction, telle qu’elle sera présentée lors de la sélection de la fonction, en instanciation du plugin dans YellowBox.
Si la méthode n’est pas implémentée, la méthode getName() sera utilisée à la place.

Méthode getDescription()

Il s’agit de fournir une description à la fonction. Cette description sera visible dans la fiche détaillée d’information du plugin.

Méthode call()

Cette méthode contient l’exécution du traitement correspondant à votre fonction.
Elle retourne un objet ParamValues à utiliser pour récupérer les valeurs de sortie.

La méthode getParamValues() permet de récupérer les valeurs contenues dans les paramètres.

La classe ParamValues contient un ensemble de méthode pour récupérer les valeurs des paramètres en fonction du type. Par exemple, il existe les méthodes getStringValue(String varName), getPhoneNumberValue(String varName), getIdFieldValue(String varName)

Pour récupérer le paramètre précédemment défini, il faut appeler la méthode suivante :

String valeurParam = getParamValues().getStringValue(VARNAME);

Méthode getParamInstanceUI()

Cette méthode permet de définir l’interface de paramétrage du plugin dans YellowBox. Par défaut, si cette méthode n’est pas implémentée, le paramétrage d’une instance du plugin affichera les paramètres les uns en dessous des autres dans l’ordre de définition de la méthode getParams.

Des objets sont disponibles pour implémenter cette méthode. On retrouve les objets associés dans la librairie yellowbox_plugin dans le package com.yellowbox.plugin.v3.ui.

  • Librairie d’objets UI

    • UIRow : Définition d’une ligne (contexte de grille Bootstrap). Une méthode ‘add’ permet d’insérer des objets dans cette ligne. Le nombre de colonnes disponibles est de 12. La répartition du nombre de colonnes se fait sur le nombre d’objets insérés
    • UICol : Généré par défaut lors de l’insertion d’un objet dans une Row. Il est possible de la prédéfinir et de lui associer sépcifuquement un nombre de colonne
    • UIPanel : Permet de décrire un cadre dans lequel insérer des objets.
    • UIHtml : Objet d’affichage de son contenu, écrit au format HTML
    • UILink : Définition d’un lien vers une url. Possibilité de proposer un lien URL ou un appel de méthode javascript (propriété Javascript à définir à true dans ce cas)
    • UIText : Permet l’écriture d’un texte brut
    • UIParamDefault : Utilisé pour insérer un paramètre. L’affichage comprendra alors le titre, la description et à droite le paramètre
    • UIParamName : Utilisé pour insérer le titre d’un paramètre, indépendamment de ce paramètre.
    • UIParamDescription : Utilisé pour insérer la description d’un paramètre, indépendamment de ce paramètre.
    • UIParamField : Utilisé pour insérer le paramètre lui-même, indépendamment de son titre et description.

    Méthode getParamServlets()

    Cette méthode permet d’associer à l’interface de paramétrage du plugin des méthodes exécutées suite à des interactions utilisateur définies via des liens dans la méthode getParamInstanceUI(). Elle recence les classes Java qui étendent de ParamServlet qui implémentent les traitements de chaque interaction.