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. |
-
Requis pour les notations
INSERT INTO Tbl(...) OUTPUT INSERTED.X VALUES(...)
etORDER BY x OFFSET y ROWS FETCH NEXT z ROWS ONLY
↩ -
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. ↩