Vue d'ensemble

Les principaux composants de SAINet sont présentés dans l’image ci-dessous:

Architecture de développement générale

Une série de tutoriels vidéo est disponible au bas de cette page. Pour les nouveaux, il est conseillé de :

  1. parcourir la présente page afin de se faire une idée d’ensemble de SAINet et de son fonctionnement, puis
  2. installer son espace de travail
  3. suivre les tutoriels)

Prérequis et recommandations

Les différents composants peuvent être compilés et lancés sur le poste en local. Pour cela il sera nécessaire d’avoir au préalable :

Note:

Ce guide présente de manière globale les différents composants de l’espace de travail ainsi que leur fonctionnement général. N’hésitez pas à cliquer sur les différents liens pour en savoir plus sur leur fonctionnement en détail.

Organisation de l’espace de travail

Organisation espace de travail de developpement

L’environnement de développement SAINet est composé de 3 parties.

  • La partie res_data qui contient les jeux de données pour le démarrage d’un serveur local, les tests et les demos.
  • La partie sainet qui contient le code du serveur.
  • La partie client riche.
Info:

Afin d’éviter d’avoir à installer un serveur de base de données sur la machine, SAINet utilise H2, qui est une base de données embarquées assez proche de MySQL/MariaDB.

Les différents éléments sont à récupérer dans son espace de travail local.

Note:

Pour faciliter l’installation, le lancement et le partage de scripts et d’alias, il est conseillé d’installer SAINet et ses différents composants conformément à ce qui est proposé dans ce document. Toutes les commandes et l’aide y feront référence. De plus, il est préférable d’installer SAINet et ses différents composants dans un répertoire situé à la racine du disque pour éviter les problèmes liés aux noms de chemin trop longs, surtout sous Windows.

Jeux de données res_data

Les projets du groupe res_data sont des jeux de données de référence qui permettent de lancer un serveur avec des données déjà préchargées. Elles sont aussi utilisées lors de l’exécution des tests d’intégration.

Il existe plusieurs bases de données de référence qui correspondent à chaque métier (régie, creche, …).

Exemple : récupération du jeu de données pour les créche

$~> cd /c/res_data
$/c/res_data> git clone ssh://git@git.admin.sai-erp.net:10022/res_data/cre.git

Serveur SAINet

Le serveur SAINet est une application Java EE qui peut être lancée en mode Embedded Server.

Exemple : récupération du server SAINet

$~> cd /c/Work1
$/c/Work1> git clone ssh://git@git.admin.sai-erp.net:10022/dev/sainet.git

Une fois récupéré en local, il est nécessaire de compiler le server avec maven.

$/c/Work1> cd sainet
$/c/Work1/sainet> mvn clean install -T2 -DuniqueVersion=false -P no-check

Une fois la compilation terminée, plusieurs fichiers/dossiers auront été créés, tels que:

  • l’EAR à déployer (server/SNV4SRV-ear/target/SNV4SRV.ear)
  • les librairies pour le code à chaud (server/libapps/static et server/libapps/dynamic)

L’exécution du serveur se fait à l’aide d’un shell à la base du projet.

Exemple: Lancement d’une instance de serveur avec le jeu de données crèche (cre)

$/c/Work1/sainet> ./run-server.sh --runtime .sai_runtime --import "C:\res_data\cre" --mailhog --start

A la fin de l’exécution des informations concernant le serveur et un prompt d’administration est affiché permettant de directement agir le serveur.

Since the embedded jar is not compiled, maven will be used (set USE_EMBEDDED=true to force compilation).
Debug port: 9009 (set DEBUG_PORT=<port> to force the debug port)
Admin port: 9019 (set ADMIN_PORT=<port> to force the admin port)
The local SAINet sources will be used to speedup bootstrap. (set USE_LOCAL_SOURCES=false to disable)
Listening for transport dt_socket at address: 9009
...
The installation dir is C:\Work1\sainet\.sai_runtime\glassfish\gfembed9125176816292457004tmp
The SAINet runtime dir is C:\Work1\sainet\.sai_runtime
The SAINet log dir is C:\Work1\sainet\.sai_runtime\edms\log
Database: jdbc:h2:C:/Work1/sainet/.sai_runtime/database/data.db;MODE=MariaDB;IGNORECASE=TRUE;WRITE_DELAY=0;OPTIMIZE_REUSE_RESULTS=0 (2.3.232)
JDBC driver: H2 JDBC Driver (2.3.232 (2024-08-11))
Ports used: HTTP=9090 (forwarded to 19090), HTTPS=9191
Client API: http://localhost:8090/SNV4SRV-ws-war/EPS
JSON API: http://localhost:9090/api/v1
Host: 192.168.0.x
================================================================================
SAINet server is now running !
SAINet console is accessible through port 9019
SAINet bootstrap completed in xxxms.
--------------------------------------------------------------------------------
SAINet admin console is ready.
You can type 'help' to list available commands.
>>

Dans cet exemple, un serveur est lancé en utilisant les ports par défaut :

  • SAINET_PORT_HTTP: 9090
  • SAINET_PORT_HTTPS: 9191
  • DEBUG_PORT: 9009
  • ADMIN_PORT: 9019

Client riche

Installation / Lancement

Une fois le serveur SAINet lancé, la procédure d’installation du client riche permet de récupérer l’installeur via le lien
https://localhost:<SAINET_PORT_HTTPS>/SNV4SRV-ws-war/installer?format=zip

Note:

L’installeur n’est pas signé sur la version de développement locale. Il est nécessaire d’ajouter le paramètre format=zip dans l’url pour éviter que le fichier soit bloqué par l’antivirus.

Exemple de récupération de l’installeur du client riche pour un serveur lancé dans l’espace de travail avec les ports par défaut (9090/9191).
Une fois téléchargé, installez-le dans le répertoire de travail correspondant au serveur. Après l’installation, le client est automatiquement préconfiguré pour accéder au serveur via le fichier SAINETV4.ini.

Installation et lancement partie client

Info:

Une fois téléchargé et installé une première fois, le client riche se met à jour automatiquement au lancement. Il n’est pas nécessaire de le re-télécharger

Note:

Dans le répertoire SAINetV4Client se trouve un fichier SAINETV4.ini qui contient l’url pour se connecter au serveur ainsi que les différents paramètres du client

Résumé du fonctionnement

  1. Récupération/préparation des sources:
    • récupération res_data.
    • récupération sainet.
    • compilation sainet.
  2. Lancement du serveur en mode embedded.
  3. Lancement du client.

Recommandations et alias pour faciliter le développement

Il est possible d’avoir plusieurs espaces de travail ainsi que des clients/serveurs sains lancés en parallèle sur la même machine (ex. : C:\Works1, C:\Works2, …). Concernant les res_data, il n’est pas nécessaire de les dupliquer, car ils peuvent être partagés entre les différents espaces de travail.

C:
|-- res_data
|   |-- cre
|   |-- reg
|   `-- ...
|-- Work1
|   |-- SAINetV4Client
|   `-- sainet
|-- Work2
|   |-- SAINetV4Client
|   `-- sainet
|-- Work3
|   |-- SAINetV4Client
|   `-- sainet

Chargement des variables d’environnements

Afin de faciliter le lancement des différents serveurs, il est recommandé de créer un fichier run-env.sh à l’intérieur de chaque repertoire sainet où est téléchargé le serveur.

Par exemple

C:\Work1\sainet\run-env.sh C:\Work2\sainet\run-env.sh C:\Work3\sainet\run-env.sh
export DEBUG_PORT='7009'
export ADMIN_PORT='7019'
export SAINET_PORT_HTTP='7090'
export SAINET_PORT_HTTPS='7191'
export DEBUG_PORT='8009'
export ADMIN_PORT='8019'
export SAINET_PORT_HTTP='8090'
export SAINET_PORT_HTTPS='8191'
export DEBUG_PORT='9009'
export ADMIN_PORT='9019'
export SAINET_PORT_HTTP='9090'
export SAINET_PORT_HTTPS='9191'

Alias

Voici quelques exemples d’alias/scripts qu’il est possible de mettre en place (dans le .bashrc de git bash). Pour cela il faut éditer le fichier ~/.bashrc et y ajouter ces commandes :

## permet de définir le répertoire où se trouve les jeux de données <res_data>
export RES_DATA_HOME='C:/res_data'

## permet de se mettre dans un des espace de travail
alias ws1="cd /c/Work1/sainet"
alias ws2="cd /c/Work2/sainet"
alias ws3="cd /c/Work3/sainet"

## alias à utiliser dans le répertoire sainet
alias _buildSainet="mvn clean install -T2 -DuniqueVersion=false -P no-check" ## permet de builder le serveur sainet
alias _tailServerLog="tail -f ./.sai_runtime/edms/log/sailog-snv4srv-i0_0-default-NA.log" ## tail des logs du serveur
alias _tailServerLog200="tail -200 ./.sai_runtime/edms/log/sailog-snv4srv-i0_0-default-NA.log" ## affiche les 200 dernière lignes des logs
alias _admClient="java -jar tools/AdminClient.jar" ## lancement de la console d'administration

## chargement des variables d'environnements puis lancement avec le <res_data> passé en paramètre
_runServer () {
  source run-env.sh;
  rm -Rf .sai_runtime;
  ./run-server.sh --runtime .sai_runtime --import $RES_DATA_HOME/$1 --mailhog --start
}

Le lancement de la commande _runServer <res_data> dans le répertoire sainet d’un espace de travail permettra ainsi de lancer facilement différent serveurs SAInet (sur différents ports) avec le jeu de données passé en paramètre.

Exemple: Lancement du deuxième espace de travail avec le jeu de données régie

$/c/Work2/sainet> _runServer reg

Info:

Permet de lancer le serveur sainet de l’espace de travail 2 sur les ports 8090/8191/8009/8019 avec le jeux de données reg.

Paramétrage pour IntelliJ

Il est recommandé d’utiliser IntelliJ comme environnement de développement.

Chaque répertoire de travail peut être ouvert en parallèle dans différentes instances d’IntelliJ.

Pour lancer les tests JUnit dans IntelliJ, il est nécessaire d’ajouter en paramètre le répertoire runtime choisi. Le fait d’utiliser un répertoire dans le projet (ex: ./sainet/.sai_runtime) permet de le définir une seule fois.

Pour plus d’informations : Lancer les tests à partir de l’IDE.

Tutoriaux

Note:

Il est possible que certaines informations présentes dans ces vidéos aient évolué. Référez-vous à la documentation pour avoir des informations à jour.