6. Gestion des comportements

Le métier d’une application est représenté à travers des comportements et des règles. C’est ainsi qu’ontomantics introduit la notion de comportements et de règles dans son moteur d’exécution.

La gestion des comportements et des règles est accessible depuis l’onglet Conception, en cliquant sur l’icône (Gérer les comportements).

6.1. Présentation du module

Le module présente la liste de tous les comportements présents dans l’application via la liste à gauche de l’écran.

_images/Liste_comportements.png

C’est à travers les comportements qu’est réalisé le métier de l’application :

  • Un comportement décrit un ensemble de règles

  • L’ordre des règles peut être défini au sein du comportement

  • Lorsqu’un comportement fait appel à un modèle de données, ce dernier est automatiquement lié à l’application du comportement (s’il ne l’est pas déjà)

  • Un comportement peut être rattaché à un ou plusieurs déclencheurs (Au démarrage de l'application, Au clic…)

Lors de la création assistée de formulaires, les comportements basiques (remplissage / affichage / modification / suppression du formulaire) sont générés automatiquement (cf. section sur les IHM).

La partie gauche de l’écran liste l’ensemble des comportements de l’application. Ces comportements peuvent être regroupés par dossiers.

6.2. Création d’un comportement

Depuis la liste des comportements, cliquer sur le bouton .

_images/Nouveau_comportement1.png

Renseigner le nom du comportement, sa description (optionnelle) et le dossier (optionnel) puis cliquer sur Sauvegarder.

6.2.1. Création d’une règle

La création de la première règle du comportement se fait dans la foulée, après avoir cliqué sur Sauvegarder.

_images/Nouvelle_regle.png

Saisir le nom de la règle, sa description puis cliquer sur Sauvegarder.

Les options suivantes sont disponibles :

  • Capturer les erreurs : permet d’exécuter la règle si une erreur est détectée

  • Les requêtes utilisent les transactions dans cette règle

  • N’est exécutée qu’une seule fois en même temps : lorsque cette case est cochée, la règle est exécuté une seule fois en même temps entre toutes les sessions de l’application ouvertes

Au sens Ontomantics, une règle est un ensemble de conditions et d’actions :

  • Conditions → préparer l’environnement pour les actions

  • Actions → effectuer des opérations sur l’application en se basant sur les résultats des conditions

_images/Structure_regle.png

Remarque

Il est impératif de déployer un modèle de données avant de l’utiliser dans une règle.

Les conditions et actions sont créées via les boutons Nouvelle condition et Nouvelle action.

6.2.2. Ajout d’une règle

Il est possible de rattacher plusieurs règles à un comportement. Pour en ajouter, faire un clic droit sur le comportement puis cliquer sur Ajouter une règle.

_images/Ajout_regle.png

Renseigner le formulaire : la nouvelle règle s’ajoute à la suite des règles existantes.

6.3. Utilisation du clic droit

Il est possible de faire un clic droit sur les comportements, les règles, les actions, les conditions, les expressions, etc. :

_images/Clic_droit_regle.png
_images/Clic_droit_action.png
_images/Clic_droit_condition_1.png

Copier, Couper, Coller

Il est possible de copier, couper, coller un comportement, une règle, une action, une condition, une expression. Faire un clic droit sur l’élément et sélectionner l’opération souhaitée. L’option Coller est disponible aux endroits « compatibles ».

Remarque

Certaines actions ne peuvent être collées en dehors d’une règle, en particulier si elles sont attachées à une sélection de données.

Désactiver

Pour empêcher l’exécution d’une action ou d’une règle, il est possible de la désactiver. Faire un clic droit dessus puis cliquer sur Désactiver.

Supprimer

Il est possible de supprimer un comportement, une règle, une action, une condition, une expression, etc. Faire un clic droit dessus, puis cliquer sur Supprimer.

Trier des entités

Certaines entités telles que les conditions et les actions peuvent être triées. Faire un clic droit sur une entité pour ouvrir un menu permettant de la positionner dans la liste d’exécution, via les options Monter, Descendre, Premier, Dernier.

_images/Trier_action_1.png

Cela est également valable pour l’ordre des comportements attachés à un déclencheur, pour l’ordre des règles dans un comportement, ou pour l’ordre des colonnes d’un jeu de données.

Déplier, Replier

Il est possible de replier ou déplier une action, une condition, etc. Les boutons Plier et Déplier du bandeau supérieur permettent de plier et déplier l’ensemble des conditions et des actions.

_images/Plier.png

Il est également possible de plier et déplier uniquement les conditions en faisant un clic droit sur Liste des conditions.

_images/Plier_conditions.png

Même chose pour les actions en faisant un clic droit sur Liste des actions.

_images/Plier_actions.png

Rafraîchir

Si la liste des comportements, la liste des actions, ou celle des conditions ne s’affiche pas correctement, il est possible de les recharger en cliquant sur le bouton Rafraîchir.

Renommer un dossier

Il est possible de renommer un dossier en faisant un clic droit dessus puis en cliquant sur Renommer.

Nouvelle condition

Pour créer une nouvelle condition, il suffit de faire un clic droit sur Liste des Conditions et de sélectionner Nouvelle condition.

Nouvelle action

Pour créer une nouvelle action, faire un clic droit sur Liste des actions si conditions vérifiées pour la créer dans la liste des actions qui s’exécutent lorsque les conditions sont remplies, ou faire un clic droit sur Liste des actions si conditions non vérifiées pour la créer dans la liste des actions qui s’exécutent en cas d’échec de vérification des conditions.

Insérer une expression parente

Lors de la création d’une expression, il est parfois nécessaire de créer une expression parente. Pour cela, il faut faire un clic droit sur un opérande ou une expression, puis cliquer sur**Insérer une expression parente**.

6.4. Notions de composants, d’expressions et d’opérandes

Un composant est une entité sur laquelle se base la condition ou l’action. Au niveau des conditions, il a pour rôle de fournir des valeurs en entrée. Au niveau des actions, le composant sera à l’inverse une entité de sortie. Un composant peut être une table du modèle de données ou un jeu de données pour les conditions. Pour les actions, un composant peut être de n’importe quel type, à partir du moment où il est géré par le type d’action choisi.

Une expression permet d’effectuer des traitements en prenant des opérandes en entrée. Une expression peut être vide (pas d’opérateur), auquel cas elle prend la valeur de l’opérande choisi.

_images/Expression.png

Types d’expressions :

  • Logique → comparaisons entre opérandes (=, = ignore case, <, <=, >, >=, <>, AND, OR, NOT, BETWEEN, etc.)

  • Arithmétique → opérations arithmétiques sur les opérandes (Valeur absolue", ``Addition, Division, Modulo, Multiplication, Puissance", ``Racine carrée, Soustraction)

  • Chaînes de caractères → opérations sur des chaînes de caractères (CONCAT, LOWER, REPLACE, TRIM, UPPER)

  • Date → opérations sur les dates (ADD DAY, ADD HOUR, ADD MINUTE, ADD MONTH, ADD SECOND, ADD WEEK, ADD YEAR, etc.)

  • Ensemble → opérations sur les ensemble (DECODE, GREATEST, LEAST)

  • Agrégat → opérations de rassemblement des données (AVG, COUNT, MAX, MIN, SUM)

  • Librairies → diverses fonctions développées (sur les dates, les emails, etc.)

Pour avoir plus de détails sur le fonctionnement d’un opérateur, il suffit de le sélectionner pour voir la description apparaître en dessous.

Un opérande est une entité basique qui peut être utilisée dans les expressions.

Types d’opérandes :

  • Contrôle

    Cet opérande permet de récupérer la valeur de n’importe quel contrôle de l’application. En plus des valeurs, il est possible de récupérer :

    • sa visibilité (true ou false)

    • son état (actif - inactif)

    • son style CSS

    • ses classes de style CSS

    • sa marge à gauche

    • sa marge en haut

    • sa marge à droite

    • sa marge en bas

    • le message d’aide

    • le message contenu dans la bulle d’aide

    • sa hauteur en pixels

    _images/Controle.png
  • Variable

    Cet opérande permet de récupérer la valeur d’une variable, d’une variable en lecture seule ou d’une variable prédéfinie.

    _images/Variable.png
    _images/Variable_predef.png
  • Champ d’un jeu de données

    Cet opérande permet de récupérer le champ d’un jeu de données, le champ d’un jeu de données en lecture seule ou d’un jeu de données prédéfini.

    _images/Champ_JDD.png
    _images/Champ_JDD_predef.png
  • Constante

    Cet opérande permet de créer une constante et de lui affecter une valeur.

    _images/Constante.png
  • Paramètre utilisateur d’un verrou déjà pris

    Cet opérande permet de récupérer des informations sur un verrou déjà pris. Il est possible de récupérer :

    • le nom de la personne qui a pris le verrou

    • la date et heure du verrouillage

    • l’identifiant de la personne qui a pris le verrou

    • l’adresse email de la personne qui a pris le verrou

    • la valeur verrouillée.

    _images/Verrou.png

Pour plus d’informations sur les verrous, se référer à la section Gestion des verrous.

  • Créer des expressions avancées (opérandes « Expression »)

Dans un cas classique, une expression est composée uniquement d’un ou deux opérandes. Mais certaines fonctionnalités requièrent des expressions plus complexes. Il est donc possible, dans une expression, de créer un nouvel opérande qui sera lui-même une expression. On peut ensuite à nouveau créer un opérande « expression », et ainsi de suite… Une telle structuration au sein d’une règle permet alors de résoudre des problèmes extrêmement complexes.

6.5. Conditions

Pour créer une condition, dans une règle, faire un clic droit sur Liste des conditions puis cliquer sur Nouvelle condition, ou cliquer sur le bouton Nouvelle condition dans le bandeau supérieur.

_images/Ajout_condition.png

6.5.1. Sélection de données

Permet d’effectuer une requête sur une table du modèle de données et de sélectionner les colonnes de retour, ou même de filtrer et classifier une valeur de retour.

_images/Selection_donnees.png
  • Sélectionner un modèle de données puis une entité du modèle de données.

_images/Selection_donnees_1.png
  • Sélectionner les attributs de l’entité qui seront retournés.

_images/Selection_donnees_2.png
  • Sélectionner ensuite un opérateur logique.

_images/Selection_donnees_3.png
  • Sélectionner ensuite les opérandes désirées. En général, la première opérande sélectionnée est Colonne d’une table, puis une constante ou un

contrôle.

_images/Selection_donnees_4.png

Il est possible d’ordonner les résultats d’une sélection de données (ce qui correspond à l?order by en SQL) en fonction d’un attribut. Cliquer sur le nom de la condition puis sur l’icône située à droite de l’écran ou faire un clic droit sur le nom de la condition, et sélectionner Ordonner par.

_images/Ordonner_1.png
_images/Ordonner.png

Sélectionnez la valeur retournée ou l’attribut sur lequel trier, puis le sens du tri (croissant ou décroissant).

_images/Ordonner_2.png

Le groupement se fait automatiquement en V4 (ce qui correspond au group by en SQL).

6.5.2. Si données existent

Teste l’existence d’une ligne de la table choisie dans le modèle de données.

_images/Si_existe.png
  • Sélectionner un modèle de données puis une table du modèle de données.

_images/Si_existe_1.png
  • Sélectionner un opérateur logique.

_images/Si_existe_2.png
  • Sélectionner ensuite les opérandes.

_images/Si_existe_3.png
_images/Si_existe_4.png

L’expression est ainsi créée.

_images/Si_existe_5.png

6.5.3. Si

Conditionnelle classique permettant la comparaison entre les différents opérandes de l’application.

_images/Si.png
  • Sélectionner un opérateur logique.

_images/Si_1.png
  • Sélectionner les opérandes.

_images/Si_2.png
_images/Si_3.png

L’expression est créée.

_images/Si_4.png

6.5.4. Pour chaque

S’effectue sur un jeu de données ou un contrôle à choix multiple, et permet de déclencher une action pour toutes les valeurs du jeu de données (possibilité, à l’aide d’une expression, de sélectionner les valeurs à traiter dans le jeu de données).

La condition Pour chaque correspond à une Sélection de données, mais appliquée à un jeu de données.

  • Sélectionner un jeu de données ou un contrôle à choix multiple.

_images/Pour_chaque.png
  • Créer une expression logique et sélectionner les opérandes.

_images/Pour_chaque_1.png
_images/Pour_chaque_2.png
_images/Pour_chaque_3.png

L’expression est créée.

_images/Pour_chaque_4.png

6.5.5. Pour

Permet de compter d’une valeur A vers une valeur B avec un pas prédéfini.

Cette condition correspond à une fonction For en programmation.

Lors de la création, renseigner le titre, le pas et une description.

_images/Pour.png

Ensuite, il est nécessaire de renseigner une variable ou un contrôle où sera affectée la valeur retournée par le Pour. La variable peut être créé en cliquant sur – Créer une nouvelle variable –.

_images/Pour_1.png

Puis, la première et la dernière valeur sont demandées.

_images/Pour_2.png
_images/Pour_3.png

L’expression est ainsi créée.

_images/Pour_4.png

Dans l’exemple, la règle va boucler de 1 à 100. La valeur courante sera retournée dans Temp i.

Remarque

Pour éviter les boucles infinies, le Pour est désactivé lors de sa création. Penser à le réactiver une fois la règle terminée. Pour cela, faire un clic droit sur la condition puis cliquer sur Activer.

6.5.6. Tant que

Boucle s’exécutant tant que la comparaison entre les différents opérandes de l’application est vraie.

  • Renseigner un titre et une description.

    _images/Tant_que.png
  • Ensuite, il faut renseigner une expression. Cliquer sur Créer l’expression, puis sélectionner un opérateur.

_images/Tant_que_1.png
  • Renseigner les opérandes.

_images/Tant_que_2.png
_images/Tant_que_3.png

Si l’expression retourne la valeur Vrai, alors la boucle continue après l’éxécution des actions contenues dans Liste des Actions (Conditions vérifiées). Dans le cas contraire, la boucle s’arrête.

_images/Tant_que_4.png

6.5.7. Si prendre le verrou

Condition permettant de savoir si le verrou est pris par l’utilisateur, et de l’affecter s’il n’est pas pris.

La condition prend en paramètre la valeur du verrou (ici l’Id de la personne).

_images/If_lock.png
_images/If_lock_2.png
_images/If_lock_3.png

Si :

  • la valeur a déjà été affectée au verrou, alors le Si renvoie Faux : le verrou a déjà été pris pour cette valeur.

  • la valeur n’a pas été affectée au verrou, alors le Si renvoie Vrai et la valeur est affectée au verrou : il est pris pour cette valeur.

_images/If_lock_1.png

6.5.8. Pour chaque feuille valide

Condition permettant d’appliquer un import à toutes les feuilles valides d’un fichier

_images/Pour_chaque_feuille.png

La variable contiendra le numéro de la feuille valide.

6.5.9. Selon

La condition Selon permet d’exécuter des actions en en définissant les cas possibles. Là où une condition de type Si offre un choix binaire Condition vérifiée / Condition non-vérifiée, la condition Selon permet une multitude d’actions possibles selon les cas explicités.

_images/Selon.png

Dans l’exemple, l’opérande est une variable Statut dont la valeur par défaut est En cours.

_images/Selon_1.png

Cliquer sur la condition puis sur Ajouter un cas. L’exemple présente trois cas sous la forme de variables : En cours (par défaut), Nouveau et Terminé.

_images/Selon_2.png

Une fois les cas définis, cliquer sur Nouvelle action et définir, pour chaque cas, l’action à effectuer.

_images/Selon_3.png

Ici, le statut Terminé redirige vers l’écran des services

_images/Selon_4.png

Exemple de condition Selon

6.5.10. Conditions Sélectionner les données imbriquées

Il est possible d’effectuer deux conditions (ou plus) de type Sélectionner les données l’une à la suite de l’autre. Deux éventualités peuvent se présenter :

  • si le connecteur logique entre les deux conditions est un AND, alors une requête de jointure sera effectuée entre elles (la deuxième condition s’appuie uniquement sur les résultats de la première, et non sur l’ensemble des valeurs de la table traitée).

  • si le connecteur logique entre les deux conditions est un OR, un produit cartésien entre les deux résultats sera obtenu (pour chaque ligne retournée dans la première condition, toutes celles de la seconde condition sont considérées).

Les conditions imbriquées sont très utilisées en présence de jointures entre les tables de la base. Il existe toutefois une limite à cette fonctionnalité : bien que les différentes conditions imbriquées peuvent se baser sur différents modèles de données, la source de données doit être unique car le système effectue des requêtes qui ne peuvent pas s’interconnecter entre différentes bases.

6.5.11. Conditions Pour chaque imbriquées

Ce cas est géré exactement de la même manière que Sélectionner les données, à la différence près que le composant utilisé ici est un jeu de données (DataSet) et non une table de base de données.

Nous retrouvons donc les opérateurs AND et OR qui pourront effectuer une jointure ou un produit cartésien entre les deux jeux de données.

6.6. Actions

Une condition retourne la valeur Vrai ou la valeur Faux. Cette valeur est calculée différemment selon le type de condition. Pour les conditionnelles, seul le résultat (vrai ou faux) est retourné, tandis que pour les sélections de données ou les Pour chaque, la condition retourne la présence ou l’absence de valeur.

Cela a une importance pour l’exécution des actions, puisque celle-ci dépend de la valeur retour du booléen de la condition.

6.6.1. Actions sur les IHM

6.6.1.1. Affectation d’un contrôle

  • Choisir un écran dans la liste des écrans, puis choisir un contrôle de cet écran.

_images/Affectation_controle.png
  • Créer une expression (souvent vide dans ce cas puisqu’il s’agit d’une affectation)

  • Choisir un nouvel opérande (à affecter au contrôle) en cliquant sur Ajouter un opérande.

_images/Ajouter_operande.png
_images/Ajouter_operande_1.png

6.6.1.2. Redirection vers un écran

  • Choisir un écran dans la liste des écrans.

    _images/Redirection_ecran.png

6.6.1.3. Réinitialiser les contrôles d’un écran ou d’une boîte de dialogue

  • Choisir un écran dans la liste des écrans.

    _images/Reinitialiser_controles.png

6.6.1.4. Afficher une boîte de dialogue

  • Sélectionner une boîte de dialogue dans la liste proposée.

_images/Afficher_boite_dialogue.png

6.6.1.5. Fermer une boîte de dialogue

  • Sélectionner une boîte de dialogue dans la liste proposée.

_images/Fermer_boite_dialogue.png

6.6.1.6. Afficher une boîte de message ou de notification

  • Choisir une boîte de message dans la liste proposée.

_images/Afficher_boite_message.png
  • Il est possible de personnaliser le message contenu dans une boîte de message en créant une expression, et en choisissant un nouvel opérande.

6.6.1.7. Charger une application

  • Sélectionner l’application à exécuter parmi la liste d’applications disponibles sur la plateforme.

_images/Charger_appli.png

6.6.1.8. Ouvrir une URL web

  • Renseigner un titre, une description optionnelle et l’URL web.

    _images/Ouvrir_url.png

Il est possible de choisir d’ouvrir l’URL dans un nouvel onglet ou dans l’onglet courant.

6.6.2. Actions sur les bases de données

6.6.2.1. Insertion de ligne dans une base de données

  • Sélectionner un modèle de données, puis sélectionner une table du modèle.

_images/Insertion_BDD.png
  • Sélectionner les colonnes (à renseigner).

_images/Insertion_BDD_1.png
  • Sélectionner une colonne dans la liste des colonnes de la règle, puis créer une expression (souvent vide dans ce cas). Choisir un nouvel opérande (à

insérer dans la base) ; en règle générale, un contrôle d’écran (depuis un formulaire d’insertion) est utilisé.

_images/Insertion_BDD_2.png

6.6.2.2. Mise à jour de ligne dans une base de données

  • Sélectionner un modèle de données, puis une table du modèle où une ligne est à mettre à jour.

_images/Maj_BDD.png
  • Sélectionner les attributs (qui pourront faire l’objet d’une modification).

_images/Maj_BDD_1.png
  • Filtrer les résultats pour sélectionner la ligne à mettre à jour, en sélectionnant l’opérateur et les opérandes pour l’expression.

    _images/Maj_BDD_2.png
  • Choisir une colonne à mettre à jour dans la liste des colonnes, puis créer une expression et choisir un nouvel opérande (à insérer dans la base).

    _images/Maj_BDD_3.png

Dans l’exemple, un opérateur de chaîne de caractères UPPER est utilisé pour mettre automatiquement les mots saisis en majuscule.

6.6.2.3. Suppression de ligne dans une base de données

  • Sélectionner un modèle de données, puis sélectionner la table du modèle dans laquelle une ligne est à supprimer.

_images/Suppression_BDD.png
  • Créer une expression logique pour comparer la valeur à supprimer. Se positionner sur l’expression et sélectionner les opérandes (le premier pointant sur une colonne de la table, et le deuxième indiquant la valeur de la colonne de laquelle la ligne sera supprimée).

_images/Suppression_BDD_1.png

6.6.3. Actions sur les jeux de données

6.6.3.1. Effacer un jeu de données (efface toutes les lignes contenues dans le jeu de données)

  • Sélectionner un jeu de données à effacer.

    _images/JDD_effacer.png

6.6.3.2. Sélection d’une ligne d’un jeu de données

  • Sélectionner un jeu de données.

_images/JDD_Selection.png
  • Créer une expression et sélectionner un nouvel opérande.

_images/JDD_Selection_1.png

6.6.3.3. Trier un jeu de données

  • Sélectionner le jeu de données à trier.

_images/JDD_tri.png

Cliquer sur Ordonner par à droite de l’écran. Sélectionner le champ du jeu de données sur lequel effectuer le tri, ainsi que le sens du tri.

_images/JDD_tri_1.png

6.6.3.4. Insertion de données dans un jeu de données

  • Sélectionner un jeu de données.

_images/JDD_Insertion.png
  • Sélectionner les champs à renseigner dans le jeu de données.

_images/JDD_Insertion_1.png
  • Sélectionner un champ dans le jeu de données de l’action créée, et choisir le type d’expression (pas d’opérateur recommandé dans ce cas).

  • Sélectionner un nouvel opérande dont la valeur sera affectée au champ sélectionné.

_images/JDD_Insertion_2.png

6.6.3.5. Mise à jour de données dans un jeu de données

  • Sélectionner un jeu de données.

_images/JDD_maj.png
  • Sélectionner les champs à mettre à jour dans le jeu de données.

_images/JDD_maj_1.png
  • Créer une expression pour sélectionner la ligne à mettre à jour. Cliquer sur Filtrer les lignes pour sélectionner l’opérateur, puis les opérandes pour l’expression (Id et constante).

_images/JDD_maj_2.png

Sélectionner l’opérateur = et le champ Id de l’entité à mettre à jour

  • Sélectionner un champ dans le jeu de données de l’action créée. Choisir le type d’expression (pas d’opérateur recommandé dans ce cas). Sélectionner un nouvel opérande (à insérer dans le jeu de données).

_images/JDD_maj_3.png

6.6.3.6. Suppression de données dans un jeu de données

  • Sélectionner le jeu de données où la ligne est à supprimer.

_images/JDD_Suppr.png
  • Créer une expression logique pour comparer la valeur à supprimer. Sélectionner les opérandes (le premier pointant sur une colonne du jeu de données, et le deuxième pour indiquer la valeur de la colonne de laquelle la ligne est supprimée).

_images/JDD_Suppr_1.png

6.6.4. Actions sur les fichiers

6.6.4.1. Télécharger un fichier

Voici un exemple servant à illustrer cette action. Un fichier est envoyé au serveur, puis celui-ci est ensuite téléchargé sur le poste client.

  • L’interface de démonstration est la suivante :

_images/Upload_fichier.png

Le composant Table Upload envoie le fichier au serveur, puis le bouton Télécharger récupère le fichier sur ce serveur.

  • Téléchargement du fichier uploadé.

    L’action Télécharger un fichier permet de télécharger un fichier sur le poste client. Elle prend en paramètre l’identifiant du fichier. Il faut rattacher au déclencheur À la validation du bouton Télécharger le comportement adéquat.

_images/Upload_fichier_1.png

La première action de la règle du comportement rattaché au bouton permet d’affecter une variable au contrôle Table upload. La variable contient l’identifiant du fichier envoyé. La seconde action de la règle permet de télécharger le fichier en récupérant la variable précédemment affectée.

Remarque

Seul l’identifiant du fichier est supporté par l’action « Télécharger un fichier ». Il n’est pas possible de renseigner à l’action le chemin (/mondossier/monfichier.ext) vers un fichier quelconque sur le serveur.

6.6.4.2. Sauvegarder un fichier

Par défaut, les fichiers uploadés ne sont disponibles que pour la durée de la session. Ensuite, ils sont supprimés du serveur.

Pour éviter cela, il est possible de les sauvegarder. Utiliser l’action « Sauvegarder un fichier » et passer en paramètre l’identifiant du fichier à sauvegarder.

_images/Upload_fichier_2.png

Si on prend l’exemple précédent (partie Télécharger un fichier), le fichier uploadé est sauvegardé sur le serveur.

Remarque

Penser à sauvegarder l’identifiant du fichier (en base de données par exemple) sinon le fichier sauvegardé sur le serveur ne sera plus récupérable.

6.6.4.3. Supprimer un fichier

Il est possible de supprimer du serveur un fichier sauvegardé. Pour cela, il faut utiliser l’action Supprimer un fichier et lui passer en paramètre l’identifiant du fichier à supprimer.

_images/Upload_fichier_3.png

6.6.4.4. Générer un rapport

Cette action permet de générer un rapport (cf. partie Gestion des rapports).

  • Remplir les différents jeux de données et variables nécessaires au rapport.

  • Utiliser l’action :

    _images/Generer_rapport.png

    Plusieurs options sont disponibles :

    • Un rapport peut être généré en différents formats (PDF, XLS, XLSX, DOCX, HTML, etc.). Pour cela, il suffit de choisir le bon format dans la

    liste Type. * L’identifiant du rapport peut être récupéré dans une variable. Il est ainsi possible de le sauvegarder sur le serveur (non sauvegardé par défaut). * Le rapport peut porter un nom dynamique. Pour ce faire, utiliser l’option Nommer le fichier généré située en haut à droite.

    Si cette option n’est pas renseignée, alors le fichier généré a le format suivant : nomrapport_num.type

    Une fois l’action exécutée, le rapport est téléchargé sur le poste client (sauf dans le cas des services métiers et des planifications).

6.6.4.5. Lire un fichier

Cette action permet de Lire un fichier, c’est à dire de transférer les données d’un fichier Excel, CSV ou Access vers un jeu de données. Pour cela, des imports créés dans le module Gérer les imports de fichier sont utilisés (cf. partie Gestion des imports).

_images/Lire_fichier.png

Lors de la création, il faut renseigner :

  • L’import désiré dans la liste des imports

  • S’il s’agit d’un import de fichier Excel (créé dans le module import), il est nécessaire de renseigner : * le type du numéro de feuille : il s’agit soit une variable, soit une constante. Si c’est une variable, elle est en général remplie grace à la condition Pour chaque feuille valide * la variable ou la constante contenant le numéro de la feuille : renseigner 0 pour la première feuille, 1 pour la deuxième, etc.

  • L’identifiant du fichier à importer. Il provient généralement de la valeur d’un composant Upload.

6.6.5. Actions d’appel externes

6.6.5.1. Appeler une méthode métier

Cette action permet d’appeler une méthode métier (cf. partie Conception : Création de services métiers).

  • Sélectionner le service métier puis la méthode métier désirés :

    _images/Methode_metier.png
  • Une fois cette étape validée, sélectionner les attributs passés afin de renseigner les paramètres de la méthode :

    _images/Methode_metier_1.png
  • Ensuite, sélectionner les attributs retournés pour renseigner les attributs retournés de la méthode :

    _images/Methode_metier_2.png
  • Renseigner les attributs passés et retournés :

    _images/Methode_metier_3.png

6.6.5.2. Appeler une méthode web

Cette action permet d’appeler une méthode web (cf. partie Conception : Gérer les services web).

  • Sélectionner le service web puis la méthode web désirés.

  • Une fois cette étape validée, cliquer sur Sélectionner les attributs passés pour renseigner les paramètres de la méthode.

  • Ensuite, cliquer sur Sélectionner les attributs retournés pour renseigner les attributs retournés de la méthode.

  • Puis, renseigner les attributs passés et retournés.

6.6.5.3. Exécuter une fonction

Cette action permet de faire appel à une librairie intégrée à la plateforme.

  • Sélectionner l’action créée.

  • Sélectionner une librairie et un opérateur.

    _images/Fonction.png
  • Sélectionner un nouvel opérande.

    _images/Fonction_1.png

6.6.6. Actions sur les utilisateurs et groupes

6.6.6.1. Ajouter un utilisateur à un groupe

Cette action permet d’ajouter un utilisateur déclaré dans la plateforme, à un groupe d’utilisateurs.

  • Sélectionner le groupe auquel ajouter l’utilisateur.

    _images/Adduser.png
  • Créer une expression contenant le login de l’utilisateur à ajouter.

    _images/Adduser_1.png

    Utilisation d’une opérande de type Constante contenant l’identifiant de l’utilisateur

6.6.6.2. Retirer un utilisateur d’un groupe

Cette action permet de retirer un utilisateur d’un groupe.

  • Sélectionner le groupe duquel retirer l’utilisateur.

    _images/Deluser.png
  • Créer une expression contenant le login de l’utilisateur à retirer.

    _images/Deluser_1.png

    Utilisation d’une opérande de type Constante contenant l’identifiant de l’utilisateur

6.6.6.3. Mettre à jour les paramètres d’un utilisateur

Cette action permet de modifier les paramètres d’un utilisateur suivants :

  • Nom

  • Prénom

  • Adresse email

  • Ancien mot de passe

  • Mot de passe

  • Numéro de téléphone

  • Adresse postale

  • Code postal

  • Ville

  • Langue

  • État (actif / inactif)

  • Sélectionner les attributs à modifier.

    _images/Modifuser.png

Remarque

Pour sélectionner plusieurs attributs, laisser la touche Ctrl du clavier enfoncée lors du clic.

  • Créer pour chaque attribut, une expression contenant les modifications à apporter.

    _images/Modifuser_1.png

6.6.7. Autres actions

6.6.7.1. Affectation d’une variable

  • Choisir la variable dans la liste des variables.

    _images/Affectation_variable.png
  • Créer une expression (souvent vide dans ce cas), puis choisir un nouvel opérande (à affecter à la variable).

    _images/Affectation_variable_1.png
    _images/Affectation_variable_2.png

    Vue d’ensemble d’une règle d’affectation de variable

6.6.7.2. Exécuter une sous-règle

Une sous-règle fonctionne de la même façon qu’une règle. Elle possède :

  • une partie Liste des conditions

  • une partie Liste des conditions vérifiées

  • une partie Liste des conditions non vérifiées

_images/Sous_regle.png

6.6.7.3. Exécuter un comportement

Il est possible d’appeler un autre comportement à travers une règle.

_images/Comportement.png

Remarque

La plate-forme Ontomantics gère la récursivité, c’est-à-dire qu’il est possible d’appeler le comportement dans lequel l’action est située.

6.6.7.4. Interrompre l’exécution des comportements

_images/Interrompre.png

Cette action permet d’interrompre l’exécution opérationnelle selon plusieurs niveaux :

  • Tous les comportements de l’événement en cours en levant une exception : interrompt l’exécution de tous les comportements rattachés au déclencheur appelé et déclenche une exception.

  • Tous les comportements de l’événement en cours : interrompt l’exécution de tous les comportements rattachés au déclencheur appelé.

  • Comportement en cours (Actions): interrompt uniquement l’exécution du comportement en cours. Les comportements qui suivent sont exécutés.

  • Toutes les règles parentes (Autres) : interrompt l’exécution de toutes les règles dont la règle en cours est l’enfante.

  • Règle parente uniquement : interrompt l’exécution de la règle parente.

  • Itération de la règle parente :

  • Sous-Règle en cours : interrompt uniquement l’exécution de la règle en cours. Les autres règles du comportement sont exécutées, ainsi que tous les autres comportements rattachés au déclencheur.

6.6.7.5. Afficher un log

Cette action permet d’afficher un message dans le journal d’information système.

  • Choisir le niveau de log dans lequel afficher le message :

  • Trace : niveau le plus fin de granularité du journal. Attention, le fichier de log à ce niveau de détail peut être très volumineux.

  • Debug : affiche les informations de débogage.

  • Info : affiche les informations.

  • Alerte : affiche uniquement les informations de type alerte.

  • Erreur : affiche uniquement les informations de type erreur.

Attention

L’action Afficher un log n’a pas pour effet d’afficher le contenu du journal, mais uniquement d’écrire un message dedans.

  • Créer l’expression contenant le message à afficher.

_images/Log.png
  • Le message s’affichera ensuite dans la console de débogage de la plateforme.

_images/Log_1.png

6.6.7.6. Prendre le verrou

Cette action permet de prendre un verrou (cf. partie Conception : Gérer les verrous).

Pour prendre un verrou, il faut sélectionner le verrou désiré et lui affecter une valeur. S’il est déjà pris, une exception est levée et l’exécution du comportement est interrompue.

_images/Prendre_lock.png

6.6.7.7. Libérer le verrou

Cette action permet de libérer un verrou (cf. partie Conception : Gérer les verrous).

Pour libérer un verrou, il suffit de le sélectionner et lui spécifier la valeur à libérer. Si le verrou ne connait pas cette valeur, une alerte est levée dans les logs de la plateforme mais l’exécution de la règle ou du comportement n’est pas interrompue.

_images/Liberer_lock.png

6.6.7.8. Utilisation de fonctions sur les dates

Ontomantics permet d’utiliser diverses fonctions sur les dates. Elles sont disponibles lors de la création d’une expression, dans le menu Librairies (il s’agit de librairies importées dans Ontomantics). Dans la liste des librairies, sélectionner le sous-menu library.Date. Ce sous-menu donne accès à toutes les fonctions portant sur les dates. Chacune de ces fonctions prend un ou plusieurs arguments à renseigner, et retourne une valeur calculée à partir de ces arguments.

L’exemple ci-dessous consiste à insérer une heure dans une table de la base de données. La fonction stringtoDate permet, à partir d’une chaîne de caractère (utilisée dans un contrôle d’écran), d’obtenir un format date (utilisé dans la base de données). Dans les paramètres de la fonction, il faut sélectionner le contrôle concerné (qui renvoie un VarChar), et le format dans lequel la date est construite (comme il s’agit ici d’une heure, le format HH:mm:ss est utilisé). La fonction renvoie alors une heure au format date, exploitable par la base de données.

_images/Librairie.png

Remarque

Il est à noter que toutes les utilisations de fonctions, quelles qu’elles soient, sont basées sur un modèle similaire, à savoir : la création d’une expression, la sélection de la fonction dans une librairie, et la sélection des arguments pour la fonction.

6.7. Gestion des erreurs

Les erreurs peuvent être gérées de plusieurs façons.

Un déclencheur En cas d'erreur est disponible pour les applications. Il s’agit d’un des déclencheurs qu’il est possible de rattacher à une application. Ce déclencheur est utile pour le traitement des exceptions qui ne sont pas interceptées par le moteur de règles Ontomantics.

_images/Erreur.png

Pour empêcher les exceptions de se propager, il existe une option à cocher dans les propriétés des règles d’un comportement : Capturer les erreurs.

_images/Erreur_1.png

Lorsque cette case est cochée, un nouveau type d’action apparaît sous le titre Liste des actions en cas d’erreur. Ces actions sont alors exécutées lorsqu’une erreur est interceptée.

_images/Erreur_2.png

Pour créer une action de type En cas d’erreur, cocher En cas d’erreur dans le champ Action exécutée.

Dans ce type d’action, une variable prédéfinie Dernière erreur est disponible. Il est également possible de repropager l’exception avec une action de type Interrompre l’exécution des comportements en sélectionnant Interrompre l’exécution de tous les comportements de l’événement en cours en levant une exception.

_images/Erreur_3.png