Skip to content

Ewt - Epilogic Web Toolkit

Introduction

Le moteur Ewt est une application java qui doit être déployée sur un serveur d'applications. Ewt se présente sous la forme d'un WAR comprenant les classes du moteur, ses dépendances et quelques éléments de configuration de base (web.xml, configuration du logger, configuration fop).

Pour mettre en œuvre Ewt, il suffit de déployer le WAR sur un serveur d'application (Tomcat, JBoss, etc.) fonctionnant avec java 11 ou supérieur. Le moteur s'appuie sur les standards Jakarta EE et doit par conséquent être déployé sur un serveur d'application compatible.

Compatibilité et prérequis

Ewt nécessite un serveur d'application et une jvm 17 ou supérieure. Il a été testé avec succès sur tomcat 10 avec une jvm OpenJDK 17.

Serveur d'application

Ewt s'appuie sur les standards Jakarta EE et nécessite par conséquent un serveur d'application compatible. Nous donnons ci-après à titre indicatif deux exemples de serveurs d'applications testés:

  • Tomcat 10.1
  • JBoss 7.4

Serveur de base de données

Une application Ewt peut exploiter une base de données utilisant les serveurs suivants:

  • Postgres versions 10 et suivantes
  • Oracle versions 12c et suivantes
  • MSSQL versions 2012 (11.x) et suivantes1
  • MySQL 5 et suivantes / MariaDB 10 et suivantes
  • HSQL 2.7 et suivantes
  • SQLite 3.35.0 ou sup.

Logging

Le moteur Ewt s'appuie sur slf4j. Il n'est pas directement lié à un backend de log en particulier.

Toutefois, le moteur intègre une fonctionnalité d'administration permettant de modifier le log level de chaque logger, c'est-à-dire le log level du logger propre à chaque classe du moteur.

Cette fonctionnalité nécessite un code spécifique à chaque backend. Dans la version actuelle, Ewt intègre un code réflexif qui détecte et supporte le changement de log level pour log4j2 et logback.

Arborescence d'une application Ewt

L'arborescence typique d'une application Ewt est la suivante2:

root
├───i18n            Dossier contenant les bundles de langue
│   ├───descript_fr.properties
│   ├───descript_en.properties
│   └───...
├───policies        Dossier contenant les policies
│   └───...
├───resources       Dossier contenant les ressources
│   └───...
├───scripts         Dossier contenant les scripts 
│   └───...
├───states          Dossier contenant les modèles d'états
│   └───...
├───stylesheets     Dossier contenant les feuilles de style
│   └───...
├───config.xml      Fichier de configuration
├───descript.xml    Fichier de description métier
└───schema.xml      Fichier de description du schéma de base DB

L'élément racine (root ci-dessus) est l'élément qui, d'une certaine manière, donne son nom à l'application, car c'est l'élément qui représente l'application au niveau de l'URL de connexion. Cet élément ne peut être constitué que des caractères parmi "a-z", "A-Z", "0-9", "_", "-" et ne peut pas commencer par un chiffre ou par "-".

Ce dossier contient tous les éléments métiers de l'application, c.-à-d. tous les éléments gérés par le moteur. On y trouve les fichiers de base (config.xml, descript.xml, schema.xml) et des répertoires contenant les traductions (i18n), les policies, les ressources, les scripts, les modèles d'états (states) et les feuilles de style (stylesheets).

D'autres répertoires ou fichiers peuvent être ajoutés dans l'arborescence. Dans la plupart des cas, ils seront ignorés.

Nomenclature

Ce chapitre présente quelques termes qui seront réutilisés dans la suite de cette documentation.

Terme Définition
modèle Un modèle est un type de dossier. Le modèle décrit la façon selon laquelle les données sont organisées.
dossier Un dossier est un ensemble de données structurées selon une forme bien établie. Un dossier est une instance de modèle.
groupe Un groupe est un ensemble de champs
tuple Un tuple est un regroupement de valeurs. Le tuple est une instance de groupe.
champ Un champ (field) est le contenant d'une valeur
view Une vue est un assemblage de groupes. Une vue permet de décrire quels éléments doivent être repris pour former un écran.
policy Une policy est un ensemble de règles de sécurité portant sur un sujet (login, role, groupe) ou une ressource (modèle, groupe, champ, etc.)
i18n Ce terme est une abréviation pour le mot "internationalisation". Il reprend la première et dernière lettre du mot et inscrit le nombre de caractères intermédiaires. Il désigne tout ce qui touche à la gestion des langues au sein d'une application.
sujet Le terme "sujet" désigne une donnée qui concerne un utilisateur. Il concerne donc soit un login, un rôle ou un groupe (ici le terme groupe désigne un groupe d'utilisateurs)
contexte Le contexte est un ensemble d'informations permettant d'identifier un objet géré par une application Ewt (nom de modèle, identifiant de dossier, nom de groupe, identifiant de tuple, nom de champ). Le contexte peut avoir différentes représentations: sous forme de chaîne de caractères (p.ex. vendeur[12].article[5].prix) ou sous forme de map (p.ex. { modelName: "vendeur", docId: 12, groupName: "article", tupleId: 5, fieldName: "prix" }).
mainfield Le mainfield est le champ qui identifie le tuple au sein de son groupe. Par exemple, dans l'expression de contexte donné ci-dessus, le mainfield du groupe "article" est le champ qui enregistre la valeur 5.
reffield Le reffield est le champ qui référence le dossier au sein d'un groupe autre que le groupe principal. Typiquement, une table multi devra posséder un champ ayant le rôle de reffield pour pouvoir lire le tuple multi au dossier.
primary key La primary key (ou clé primaire) est un concept spécifique à la base de données. La clé primaire est l'élément qui permet d'identifier de façon unique une entrée dans une table. La clé peut être constituée d'une ou plusieurs colonnes.

  1. Requis pour les notations INSERT INTO Tbl(...) OUTPUT INSERTED.X VALUES(...) et ORDER BY x OFFSET y ROWS FETCH NEXT z ROWS ONLY 

  2. En réalité, l'arborescence illustrée ici est l'arborescence complète. Le strict minimum nécessaire pour une application est le fichier config.xml et éventuellement des scripts responsables du traitement.