Files
Omika/docs/Documentation_WebService_License.md
T
2026-10-23 18:46:50 +02:00

70 KiB
Raw Blame History

DOCUMENTATION TECHNIQUE DU PROJET Batik_WS_Lic_Mob 12/08/2026

Partie 1 › Projet Partie 1 Projet

12/08/2026 Batik_WS_Lic_Mob 2

Partie 1 › Projet Projet Informations générales Batik_WS_Lic_Mob Web Serice de Licences Répertoire D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob Analyse associée D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda Projet Liste des éléments du projet Nom Libellé LIB_COMMUNE LIB_SOAP_CLIENT LIB_SOAP_MOB LIB_Structures Statistiques Nombre de collections de procédures : 4 Projet Code Initialisation de Batik_WS_Lic_Mob gcnxBaseLicence est une Connexion gcnxBaseLicence..Provider =hAccèsHFClientServeur gcnxBaseLicence..Utilisateur ="Admin" gcnxBaseLicence..MotDePasse ="ea0c6460faac5d87db47b4ca0147a34a" gcnxBaseLicence..Serveur = "127.0.0.1:4942"//4943 gcnxBaseLicence..BaseDeDonnées= "LICENCE_CLIENT"//BASE_LICENCES gcnxBaseLicence..Serveur = "127.0.0.1:4910" 12/08/2026 Batik_WS_Lic_Mob 3

Partie 1 › Projet › Code gcnxBaseLicence..BaseDeDonnées= "LICENCE_CLIENT" gcnxBaseLicence..Serveur = "127.0.0.1:4926" gcnxBaseLicence..BaseDeDonnées= "LICENCE_CLIENT" gcnxBaseLicence..Serveur = "127.0.0.1:4943" gcnxBaseLicence..BaseDeDonnées= "BASE_LICENCES" CONSTANT

cREP_OK ="E0000"
cERR_DATA_VIDE ="E1001"
cERR_FORMAT_JSON ="E1002"
cERR_CLI_INCONNU ="E2001"
cERR_CLI_LIC ="E2002"
cERR_CLI_CONFIG ="E2003" //Configuration incomplète
cERR_CLI_BADAPI ="E2004" //La clé API n'est pas correcte
cERR_LIC_INCONNUE ="E3001"
cERR_LIC_INACTIVE="E3002"
cERR_LIC_EXPIREE ="E3003"
------------------------- -------- --- ---
cERR_LIC_ATTRIBUEE ="E3004"
cERR_LIC_AUCUNE ="E3005"
cERR_CMD_INCONNUE="E4001"
cERR_HF_BLOCAGE ="E5001"
--------------- -------- --- ---
cERR_EXCEPTION ="E9000"
//Commandes utilisées par les mobiles
cMOB_LIC_INSCRIPTION ="W.LM.INS"
-------------------- ----------- --- ---
//Commandes utilisée par le back-office client
cCLI_LIC_ATTRIBUTION ="CLI.LM.ATT" //Déclaration de l'attribution d'une licence mobile
cCLI_LIC_ACTIVATION ="CLI.LM.ACT" //Activation
-------------------- -------------- ------------ ---
cCLI_LIC_DESACTIVATION ="CLI.LM.OFF" //Désactivation d'une licence sans la libérer
cCLI_LIC_LIBERE ="CLI.LM.RAZ"
--------------- -------------- --- ---
//Libération d'une licence.(Pour la réaffecter plus tard)
cCLI_LIC_LISTE ="CLI.LM.LISTE"
-------------- ---------------- --- ---
//Récupération de la liste des licences attribuées (Pour un contrôle de cohérence)
gcVersionNom ="Omika_WS_LICENCES_MOBILE"
------------ --------------------------- --- ---
FIN
Initialisation lors d'une connexion à une session prélancée de Batik_WS_Lic_Mob
//InitialiseFichierTrace("Trace_" + DateSys() +".txt")
HChangeConnexion("*",gcnxBaseLicence)
HPasse("*","FE3FAC084AEDB73B8006BB60D5E2A9C3")
//E8D1613B82CD4A23055BA5501A807DC0 FE3FAC084AEDB73B8006BB60D5E2A9C3
HPasse("*","FE3FAC084AEDB73B8006BB60D5E2A9C3")
//E8D1613B82CD4A23055BA5501A807DC0 FE3FAC084AEDB73B8006BB60D5E2A9C3
HPasse("*","E8D1613B82CD4A23055BA5501A807DC0")
//E8D1613B82CD4A23055BA5501A807DC0 FE3FAC084AEDB73B8006BB60D5E2A9C3
HPasse("*","4E4D1E5FB1CD92D29631B1568F230E6B")
//E8D1613B82CD4A23055BA5501A807DC0 FE3FAC084AEDB73B8006BB60D5E2A9C3
HOuvreConnexion(gcnxBaseLicence)
12/08/2026 Batik_WS_Lic_Mob 4
---------- --- ---------------- ---

Partie 1 › Projet › Erreurs, warnings et informations Projet Erreurs, warnings et informations ennoloC engiL Détail de l'erreur Localisation L'élément 'SRVHF_Adresse' est un élément zombie, il ne devrait plus être utilisé. LIB_SOAP_MOB.Inscription Procédure locale 108 39 Projet Statistiques sur le code ¹ .tiart/.giL ¹ .mmoc % ¹ sengiL

LIB_COMMUNE 83 8 7
LIB_SOAP_CLIENT 264 5 37
LIB_SOAP_MOB 180 6 60
LIB_Structures 78 6 78
Batik_WS_Lic_Mob 78 21 39
638 8 26
¹ Lignes : Nombre total de lignes de code. % comm. : Pourcentage de commentaires dans le code.
Lig./trait. : Nombre de lignes de code par traitement.
12/08/2026 Batik_WS_Lic_Mob 5
---------- ---------------- --- ---

Partie 2 › Analyse Partie 2 Analyse

12/08/2026 Batik_WS_Lic_Mob 6

Partie 2 › Analyse Analyse Graphe

12/08/2026 Batik_WS_Lic_Mob 7

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Graphe Analyse Informations générales Licence.wda Répertoire D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\

Répertoire des fichiers de données Répertoire de l'application
N°génération Nb. fichiers Nb. rubriques Nb. liaisons Nb. connexions Nb. groupes
46 10 137 8 0 0
---------- --- ---------------- --- --- --- ---
12/08/2026 Batik_WS_Lic_Mob 8

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Dictionnaire des rubriques Analyse Dictionnaire des rubriques nolbuoD élC euqinU élC

Rubrique Type Utilisée par...
elliaT
aa <Inutilisée>
--------------------- --- --------------------------- --- --- ------------ ---
ARVHF_Pass <Inutilisée>
CL_Actif Booléen ClientBase
CL_CleApiInstal <Inutilisée>
CL_CleAPIInstall UUID (128 bits) ClientBase
CL_CleLicenceDesk <Inutilisée>
CL_CleLicenceDesktop <Inutilisée>
CL_CleLicenceMob <Inutilisée>
CL_CleLicenceServeur <Inutilisée>
CL_ClePrivee Mémo texte ClientBase
CL_ClePublique Mémo texte ClientBase
CL_Code Chaîne 100 ClientBase
CL_IDClientAdm Entier sur 8 octets ClientBase
CL_IDLicenceDesktop Entier sur 8 octets ClientBase
CL_IDLicenceServeur Entier sur 8 octets ClientBase
CL_IDServeur <Inutilisée>
CL_IDServeurHF Entier sur 8 octets ClientBase
CL_IDWebServiceMobile Entier sur 8 octets ClientBase
CL_LicenceDesk <Inutilisée>
CL_LicenceMob <Inutilisée>
CL_NbLicenceDesk Chaîne 5 ClientBase
CL_NbLicenceMob Chaîne 5 ClientBase
CL_Nom Chaîne 100 ClientBase
CL_NomBase Chaîne 50 ClientBase
CL_PKID Identifiant automatique (8 ClientBase
CL_PortServeur <Inutilisée>
CL_ServeurClient <Inutilisée>
CL_WebServiceMobile <Inutilisée>
CLA <Inutilisée>
CLA_Actif Booléen ClientADM
CLA_Adresse Chaîne 200 ClientADM
CLA_Code Chaîne 50 ClientADM
CLA_CP Chaîne 10 ClientADM
CLA_Mails Chaîne 200 ClientADM
CLA_Nom Chaîne 50 ClientADM
CLA_Note Chaîne binaire 50 ClientADM
CLA_PKID Identifiant automatique (8 ClientADM
CLA_Ville Chaîne 50 ClientADM
CLAD_PKID <Inutilisée>
Date et Heure
DateCrea ClientBase
---------- --- -------------- ---------------- --- ------------ ---
Date et Heure Serveur
Date et Heure ServeurHFSQL
12/08/2026 Batik_WS_Lic_Mob 9

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Dictionnaire des rubriques nolbuoD élC euqinU élC

Rubrique Type Utilisée par...
elliaT
Date et Heure
Licence
Date et Heure
LoginHFSQL
Date et Heure ClientADM
--------- --- -------------- --- --- ----------- ---
Date et Heure Utilisateur
DateModif Date et Heure ClientBase
Date et Heure
Serveur
Date et Heure ServeurHFSQL
--- --- -------------- --- --- ------------ ---
Date et Heure Licence
Date et Heure LoginHFSQL
Date et Heure
ClientADM
Date et Heure Utilisateur
------------------- --- --------------------------- ---------------- --- ------------ ---
IDClient <Inutilisée>
IDClientADM <Inutilisée>
IDLicence <Inutilisée>
IDLicenceHisto <Inutilisée>
IDLoginHFSQL <Inutilisée>
IDParametre <Inutilisée>
IDServeur <Inutilisée>
IDServeurWebService <Inutilisée>
IDUtilisateur <Inutilisée>
LH_Auteur Chaîne 50 LicenceHisto
LH_CodeClient Chaîne 50 LicenceHisto
LH_Date Date et Heure LicenceHisto
LH_GUIDLicence Chaîne 50 LicenceHisto
LH_IDLicence Chaîne 50 LicenceHisto
LH_IdMobile Chaîne 50 LicenceHisto
LH_IDUser Chaîne 50 LicenceHisto
LH_Note Mémo texte LicenceHisto
LH_Operation Chaîne 50 LicenceHisto
LH_PKID Identifiant automatique (8 LicenceHisto
LHFSQL_IDClient Entier sur 8 octets LoginHFSQL
LHFSQL_IDServeurHF <Inutilisée>
LHFSQL_Login Chaîne 50 LoginHFSQL
LHFSQL_MDP Chaîne 50 LoginHFSQL
LHFSQL_PKID Identifiant automatique (8 LoginHFSQL
LI_Active Booléen Licence
LI_Attrib <Inutilisée>
LI_Attribue <Inutilisée>
LI_CleAPI Mémo texte Licence
LI_DateAttribution Date (aaaammjj) Licence
LI_DateExpiration Date (aaaammjj) Licence
LI_IDClient Entier sur 8 octets Licence
LI_IDCollaborateur Entier sur 8 octets Licence
LI_IDMobile Chaîne 50 Licence
LI_IDUser Entier sur 8 octets Licence
LI_InfoSupMob Mémo texte Licence
LI_Libre <Inutilisée>
LI_Numero Chaîne 50 Licence
12/08/2026 Batik_WS_Lic_Mob 10

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Dictionnaire des rubriques nolbuoD élC euqinU élC

Rubrique Type Utilisée par...
elliaT
Identifiant automatique (8
LI_PKID Licence
------------------- --- --------------------------- ---------------- --- ------------ ---
LI_Type Entier sur 8 octets Licence
LI_UserNom Chaîne 50 Licence
LI_UserPrenom Chaîne 50 Licence
LI_VersionMajeur Chaîne 20 Licence
PA_Code Chaîne 3 Parametre
PA_Libelle Chaîne 50 Parametre
PA_Ordre Entier sur 4 octets Parametre
PA_PKID Identifiant automatique (8 Parametre
PA_Systeme Booléen Parametre
PA_Valeur Chaîne 4 Parametre
SR <Inutilisée>
SR_PKID <Inutilisée>
SRHF_Admin <Inutilisée>
SRV_Actif Booléen Serveur
SRV_Adresse Chaîne 50 Serveur
SRV_Certificat Chaîne 50 Serveur
SRV_IDSRVPS <Inutilisée>
SRV_Login Chaîne 50 Serveur
SRV_Nom Chaîne 50 Serveur
SRV_OSVersion Entier sur 8 octets Serveur
SRV_Pass Chaîne 50 Serveur
SRV_PKID Identifiant automatique (8 Serveur
SRV_PKID1 <Inutilisée>
SRV_Port <Inutilisée>
SRV_Type Entier sur 8 octets Serveur
SRVHF_Actif Booléen ServeurHFSQL
SRVHF_Admin Chaîne 100 ServeurHFSQL
SRVHF_Adresse Chaîne 50 ServeurHFSQL
SRVHF_ADRReplic Chaîne 50 ServeurHFSQL
SRVHF_CleAPIInstall <Inutilisée>
SRVHF_IDClient <Inutilisée>
SRVHF_IDSRVPS Entier sur 8 octets ServeurHFSQL
SRVHF_Login <Inutilisée>
SRVHF_MDPReplic Chaîne 50 ServeurHFSQL
SRVHF_Nom Chaîne 50 ServeurHFSQL
SRVHF_Pass Chaîne 100 ServeurHFSQL
SRVHF_PKID Identifiant automatique (8 ServeurHFSQL
SRVHF_Port Entier sur 4 octets ServeurHFSQL
SRVHF_Portreplic Chaîne 50 ServeurHFSQL
SRVHF_Type Entier sur 8 octets ServeurHFSQL
SRVHF_Version Chaîne 50 ServeurHFSQL
UserCrea Entier sur 8 octets ClientBase
Entier sur 8 octets Serveur
Entier sur 8 octets ServeurHFSQL
Entier sur 8 octets Licence
Entier sur 8 octets LoginHFSQL
Entier sur 8 octets ClientADM
12/08/2026 Batik_WS_Lic_Mob 11

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Dictionnaire des rubriques nolbuoD élC euqinU élC

Rubrique Type Utilisée par...
elliaT
Entier sur 8 octets Utilisateur
------------- --- -------------------- --- --- ------------ ---
UserModif Entier sur 8 octets ClientBase
Entier sur 8 octets Serveur
Entier sur 8 octets ServeurHFSQL
Entier sur 8 octets Licence
Entier sur 8 octets LoginHFSQL
Entier sur 8 octets ClientADM
Entier sur 8 octets Utilisateur
UT_Actif Booléen Utilisateur
UT_Login Chaîne 250 Utilisateur
UT_MDP Chaîne 50 Utilisateur
UT_MDPaSaisir Booléen Utilisateur
UT_Nom Chaîne 250 Utilisateur
UT_Photo Image (mémo binaire) Utilisateur
Identifiant automatique (8
UT_PKID Utilisateur
-------------- --- --------------------------- --- --- ----------------- ---
UT_Prenom Chaîne 250 Utilisateur
UT_Superviseur Booléen Utilisateur
UT_Telephone Chaîne 50 Utilisateur
WS_AdresseAWP Mémo texte ServeurWebService
WS_IDServeur Entier sur 8 octets ServeurWebService
WS_Libelle Chaîne 50 ServeurWebService
WS_PKID Identifiant automatique (8 ServeurWebService
WS_ServeurID <Inutilisée>
Analyse
Liaisons
Contrainte_Client_Licence
Source Relié
Fichier ClientBase Licence
------------ -------------------------------- --- --- -------------- --- ---
Rubrique CL_PKID (<Mémo binaire inconnu>) LI_IDClient ()
Cardinalités 0,n 1,1
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_ClientADM_ClientBase
12/08/2026 Batik_WS_Lic_Mob 12
---------- --- --- ---------------- --- --- ---

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Liaisons Source Relié

Fichier ClientADM ClientBase
Rubrique CLA_PKID (<Mémo binaire inconnu>) CL_IDClientAdm ()
Cardinalités 0,n 0,1
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_ClientBase_LoginHFSQL
Source Relié
Fichier ClientBase LoginHFSQL
------------ ----------------------------------------------------- --- ------------------ ---
Rubrique CL_PKID (<Mémo binaire inconnu>) LHFSQL_IDClient ()
Cardinalités 0,n 0,1
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_Licence_LicenceHisto
Source Relié
Fichier Licence LicenceHisto
------- ------- --- ------------ ---
Rubrique LI_Numero (<Mémo binaire inconnu>) LH_GUIDLicence ()
Cardinalités 0,n 1,1
------------ ----------------------------------------------------- --- --- ---
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_Serveur_ServeurHFSQL
Source Relié
Fichier Serveur ServeurHFSQL
------------ ----------------------------------------------------- --- ---------------- ---
Rubrique SRV_PKID (<Mémo binaire inconnu>) SRVHF_IDSRVPS ()
Cardinalités 0,n 0,1
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_Serveur_ServeurWebSer
vice
12/08/2026 Batik_WS_Lic_Mob 13
---------- --- ---------------- --- ---

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Liaisons

Source Relié
Fichier Serveur ServeurWebService
Rubrique SRV_PKID (<Mémo binaire inconnu>) WS_IDServeur ()
Cardinalités 0,n 1,1
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_ServeurHFSQL_ClientBas
e
Source Relié
------- ------------ ------ --- ---------- ----- ---
Fichier ServeurHFSQL ClientBase
Rubrique SRVHF_PKID (<Mémo binaire inconnu>) CL_IDServeurHF ()
Cardinalités 0,n 0,1
------------ ----------------------------------------------------- --- --- --- --- ---
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Contrainte_ServeurWebService_Clie
ntBase
Source Relié
------- ----------------- ------ --- ---------- ----- ---
Fichier ServeurWebService ClientBase
Rubrique WS_PKID (<Mémo binaire inconnu>) CL_IDWebServiceMobile ()
Cardinalités 0,n 1,1
------------ ----------------------------------------------------- --- --- --- --- ---
Modification Modification uniquement si pas d'enregistrement relié
Suppression Suppression uniquement si pas d'enregistrement relié
Analyse
Fichiers et rubriques
somém .sserpmoC
seénnod .tpyrC
¹ * rcE/tceL .lnJ
noitarénég°N omém .tpyrC
--- ----------- ------------- ----------------------- ------------ ------------ ---
noitaivérbA .gerne elliaT xedni .tpyrC
¹ * secapsE noitacilpéR ¹ * étirucéS
¹ * rcE .lnJ
.otua .dI oG2 ed +
--- --- --------- -------- --- --- ---
epyT
ClientADM 7 669 HFSQL
--------- --- ------ --- --- --- ------
Classic
12/08/2026 Batik_WS_Lic_Mob 14
---------- --- --- ---------------- --- --- ---

Partie 2 › Analyse › D:\Projets Windev\Batik\WebServices\Batik_WS_Lic_Mob\Licence.ana\Licence.wda › Fichiers et rubriques › Analyse somém .sserpmoC ¹ * rcE/tceL .lnJ seénnod .tpyrC noitarénég°N omém .tpyrC

noitaivérbA .gerne elliaT noitacilpéR xedni .tpyrC
¹ * secapsE ¹ * étirucéS
¹ * rcE .lnJ
.otua .dI oG2 ed +
--- --- --------- -------- --- ---
epyT
ClientBase 20 389 HFSQL
---------- --- ------- --- --- ------
Classic
Licence 13 343 HFSQL
------- --- ------- --- --- ------
Classic
LicenceHisto 3 289 HFSQL
------------ --- ------ --- --- ------
Classic
LoginHFSQL 6 160 HFSQL
---------- --- ------ --- --- ------
Classic
Parametre 6 82 HFSQL
--------- --- ----- --- --- ------
Classic
Serveur 8 322 HFSQL
------- --- ------ --- --- ------
Classic
ServeurHFSQL 15 580 HFSQL
------------ --- ------- --- --- ------
Classic
ServeurWebService 3 84 HFSQL
----------------- --- ----- --- --- ------
Classic
Utilisateur 2 916 HFSQL
----------- --- ------ --- --- ------
Classic
¹ Espaces * : Complétion des chaînes par des espaces Jnl. Ecr * : Journalisation des écritures
Jnl. Lect/Ecr * : Journalisation des lectures et écritures Sécurité * : Mode sécurité renforcée
ClientADM
Fichiers et rubriques
Informations générales
ClientADM ClientADM
-------------- --- ------------- --- --- ---
Nom sur disque ClientADM.fic
Rubriques du fichier ClientADM
nolbuoD élC
euqinU élC tuaféd .laV
--- --- --- --- ---------- -----------
Libellé Type
elliaT
sneS
CLA_PKID Identifiant de Client aDMIN Identifiant automatique
(8 octets)
CLA_Nom Nom du client Chaîne 50
---------- -------------------- --- ---------------- --- ---
CLA_Code Code Admin du client Chaîne 50
12/08/2026 Batik_WS_Lic_Mob 15

Partie 2 › ... › Fichiers et rubriques › ClientADM › Fichiers et rubriques nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT
sneS
CLA_Mails Liste emails client Chaîne 200
--------- -------------------- -------------- --- ---
CLA_Actif Client Actif Oui/Non Booléen 1
CLA_Note Note client Chaîne binaire 50
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
----------- --------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
CLA_Adresse Adresse Chaîne 200
CLA_CP CP Chaîne 10
CLA_Ville Ville Chaîne 50
12/08/2026 Batik_WS_Lic_Mob 16

Partie 2 › ... › Fichiers et rubriques › ClientBase › Fichiers et rubriques ClientBase Fichiers et rubriques Informations générales ClientBase Client Base Nom sur disque ClientBase.fic Rubriques du fichier ClientBase nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
------- --------------------- ------------------------ ------ ----
CL_PKID Identifiant de Client Identifiant automatique
(8 octets)
CL_IDServeurHF ServeurHFSQL du client Entier sur 8 octets 0
-------------- ---------------------- ------------------- --- ---
CL_IDLicenceServeur Identifiant de licence Serveur Entier sur 8 octets 0
CL_IDLicenceDesktop Identifiant de Licence Desktop Entier sur 8 octets 0
CL_Nom Nom du client Chaîne 100
---------------- --------------------------- --------------- --- ---
CL_Code Code Client Chaîne 100
CL_NomBase Nom de la base Client Chaîne 50
CL_Actif Client Actif Booléen 1
CL_NbLicenceDesk Nb licences Desktop Chaîne 5
CL_NbLicenceMob Nb licences Mobile Chaîne 5
CL_CleAPIInstall Clé API pour l'installation UUID (128 bits)
CL_ClePrivee Clé Privée Mémo texte
CL_ClePublique Clé Publique Mémo texte
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
-------------- -------------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
CL_IDClientAdm CL_IDClientAdm Entier sur 8 octets
CL_IDWebServiceMobil
CL_WebServiceMobile Entier sur 8 octets 0
---------- ------------------- ------------------- --- ---
12/08/2026 Batik_WS_Lic_Mob 17

Partie 2 › ... › Fichiers et rubriques › Licence › Fichiers et rubriques Licence Fichiers et rubriques Informations générales Licence Licence Nom sur disque Licence.fic Rubriques du fichier Licence nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
------- ---------------------- ------------------------ ------ ----
LI_PKID Identifiant de Licence Identifiant automatique
(8 octets)
LI_IDClient Identifiant client Entier sur 8 octets 0
----------- ------------------ ------------------- --- ---
LI_IDCollaborateur Identifiant collaborateur Entier sur 8 octets 0
LI_IDUser Identifiant Utilisateur Entier sur 8 octets 0
----------- ---------------------------------- ------------------- --- ---
LI_Numero LI_Numero Chaîne 50
LI_IDMobile ID du Mobile Chaîne 50
LI_Type Type de licence Entier sur 8 octets 0
LI_UserNom Nom de l'utilisateur de la licence Chaîne 50
LI_UserPrenom Prénom de l'utilisateur de la licence Chaîne 50
LI_DateAttribution Date Attribution Licence Date (aaaammjj)
------------------ ----------------------------------- --------------- --- ---
LI_DateExpiration Date Expiration Licence Date (aaaammjj)
LI_VersionMajeur Version du logiciel Chaîne 20
LI_InfoSupMob Informations complémentaire sur le Mémo texte
LI_CleAPI Clé API pour notification Mémo texte
LI_Active Active Oui/Non Booléen 1
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
---------- --------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
12/08/2026 Batik_WS_Lic_Mob 18

Partie 2 › ... › Fichiers et rubriques › LicenceHisto › Fichiers et rubriques LicenceHisto Fichiers et rubriques Informations générales LicenceHisto LicenceHisto Nom sur disque LicenceHisto.fic Rubriques du fichier LicenceHisto nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
------- --------------------------- ------------------------ ------ ----
LH_PKID Identifiant de LicenceHisto Identifiant automatique
(8 octets)
LH_GUIDLicence GUID Licence Chaîne 50 0
-------------- ------------ -------------- --- ---
LH_Date Date Date et Heure
(aaaammjjhhmmssccc)
LH_Operation Operation Chaîne 50
------------- ----------- ---------------- --- ---
LH_Auteur Auteur Chaîne 50 0
LH_Note Note Mémo texte
LH_CodeClient Code Client Chaîne 50
LH_IdMobile Id Mobile Chaîne 50
12/08/2026 Batik_WS_Lic_Mob 19

Partie 2 › ... › Fichiers et rubriques › LoginHFSQL › Fichiers et rubriques LoginHFSQL Fichiers et rubriques Informations générales LoginHFSQL Login HFSQL Nom sur disque LoginHFSQL.fic Rubriques du fichier LoginHFSQL nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
--- --- --- ------ ----
LHFSQL_PKID Identifiant de LoginHFSQL Identifiant automatique
(8 octets)
LHFSQL_Login Login HFSQL Chaîne 50
------------ ------------------ -------------- --- ---
LHFSQL_MDP Mot de passe HFSQL Chaîne 50
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
--------------- --------------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
LHFSQL_IDClient LHFSQL_IDClient Entier sur 8 octets
12/08/2026 Batik_WS_Lic_Mob 20

Partie 2 › ... › Fichiers et rubriques › Parametre › Fichiers et rubriques Parametre Fichiers et rubriques Informations générales Parametre Parametre Nom sur disque Parametre.fic Rubriques du fichier Parametre nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
------- ------------------------ ------------------------ ------ ----
PA_PKID Identifiant de Parametre Identifiant automatique
(8 octets)
PA_Code PA_Code Chaîne 3
---------- --------------- ------------------- --- ---
PA_Libelle PA_Libelle Chaîne 50
PA_Valeur PA_Valeur Chaîne 4
PA_Ordre PA_Ordre Entier sur 4 octets 0
PA_Systeme Système Oui/non Booléen 0
12/08/2026 Batik_WS_Lic_Mob 21

Partie 2 › ... › Fichiers et rubriques › Serveur › Fichiers et rubriques Serveur Fichiers et rubriques Informations générales Serveur Serveur Nom sur disque Serveur.fic Rubriques du fichier Serveur nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
-------- ---------------------- ------------------------ ------ ----
SRV_PKID Identifiant de Serveur Identifiant automatique
(8 octets)
SRV_Nom Nom du serveur Chaîne 50
-------------- --------------------- ------------------- --- ---
SRV_Adresse Adresse du serveur Chaîne 50
SRV_Type Type de serveur Entier sur 8 octets 0
SRV_OSVersion OS version du serveur Entier sur 8 octets 0
SRV_Login Login du serveur Chaîne 50
SRV_Pass MDP du serveur Chaîne 50
SRV_Certificat Certificat du serveur Chaîne 50
SRV_Actif Actif Oui/Non Booléen 1
DateModif DateModif Date et Heure
(aaaammjjhhmmssccc)
DateCrea DateCrea Date et Heure
-------- -------- -------------- --- ---
(aaaammjjhhmmssccc)
UserModif UserModif Entier sur 8 octets 0
---------- --------- ------------------- --- ---
UserCrea UserCrea Entier sur 8 octets 0
12/08/2026 Batik_WS_Lic_Mob 22

Partie 2 › ... › Fichiers et rubriques › ServeurHFSQL › Fichiers et rubriques ServeurHFSQL Fichiers et rubriques Informations générales ServeurHFSQL ServeurHFSQL Nom sur disque ServeurHFSQL.fic Rubriques du fichier ServeurHFSQL nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
---------- ---------------------- ------------------------ ------ ----
SRVHF_PKID Identifiant de Serveur Identifiant automatique
(8 octets)
SRVHF_IDSRVPS Identifiant serveur VPS Entier sur 8 octets 0
---------------- ----------------------------- ------------------- --- ---
SRVHF_Nom Nom du Serveur HF Chaîne 50
SRVHF_Adresse SRVHF_Adresse Chaîne 50
SRVHF_Port Port du serveur Entier sur 4 octets 0
SRVHF_Actif Actif Oui/Non Booléen 1
SRVHF_Type Type de serveur Entier sur 8 octets 0
SRVHF_Version Version du serveur HFSQL Chaîne 50
SRVHF_ADRReplic Adresse IP Client Replication Chaîne 50
SRVHF_Portreplic Port Client Replication Chaîne 50
SRVHF_MDPReplic MDP pour la réplication Chaîne 50
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
----------- --------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
SRVHF_Admin Admin Chaîne 100
SRVHF_Pass Pass Chaîne 100
12/08/2026 Batik_WS_Lic_Mob 23

Partie 2 › ... › Fichiers et rubriques › ServeurWebService › Fichiers et rubriques ServeurWebService Fichiers et rubriques Informations générales ServeurWebService ServeurWebService Nom sur disque ServeurWebService.fic Rubriques du fichier ServeurWebService nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
--- --- --- ------ ----
WS_PKID Identifiant de ServeurWebService Identifiant automatique
(8 octets)
WS_IDServeur WS_ServeurID Entier sur 8 octets 0
------------- ------------ ------------------- --- ---
WS_AdresseAWP Adresse AWP Mémo texte
WS_Libelle Libellé Chaîne 50
12/08/2026 Batik_WS_Lic_Mob 24

Partie 2 › ... › Fichiers et rubriques › Utilisateur › Fichiers et rubriques Utilisateur Fichiers et rubriques Informations générales Utilisateur Utilisateur Nom sur disque Utilisateur.fic Rubriques du fichier Utilisateur nolbuoD élC

euqinU élC tuaféd .laV
Libellé Type
elliaT sneS
------- -------------------------- ------------------------ ------ ----
UT_PKID Identifiant de Utilisateur Identifiant automatique
(8 octets)
UT_Login UT_Login Chaîne 250
-------------- -------------- -------------------- --- ---
UT_Nom UT_Nom Chaîne 250
UT_Prenom UT_Prenom Chaîne 250
UT_MDP UT_MDP Chaîne 50
UT_Superviseur UT_Superviseur Booléen 0
UT_MDPaSaisir UT_MDPaSaisir Booléen 0
UT_Photo UT_Photo Image (mémo binaire)
UT_Telephone UT_Telephone Chaîne 50
UT_Actif UT_Actif Booléen 1
DateCrea DateCrea Date et Heure
(aaaammjjhhmmssccc)
DateModif DateModif Date et Heure
--------- --------- -------------- --- ---
(aaaammjjhhmmssccc)
UserCrea UserCrea Entier sur 8 octets 0
---------- --------- ------------------- --- ---
UserModif UserModif Entier sur 8 octets 0
12/08/2026 Batik_WS_Lic_Mob 25

Partie 3 › Collection de procédures Partie 3 Collection de procédures

12/08/2026 Batik_WS_Lic_Mob 26

Partie 3 › Collection de procédures LIB_Structures Code Déclaration de LIB_Structures <BLOC Structures utilisées pour le dialogue entre le mobile et le serveur de licences> ST_MOB_DMD_INSCRIPTION est une Structure nIdUser est un entier sur 8 octets saIdMobile est une chaîne ANSI saCodeClient est une chaîne ANSI saOS_Type est une chaîne ANSI saOS_Version est une chaîne ANSI saNumLicence est une chaîne ANSI saVersionExe est une chaîne ANSI saOS_Info est une chaîne ANSI saNotifKey est une chaîne ANSI FIN //Exemple : {"saIdMobile":"1233","saIdClient":"BOUVARD.01","saOS_Type":"ANDROID","saOS_Version":"5.02","saNumLi cence":"f71919f4f9974d70967014fbbefabf9d","saVersionExe":"1.0.255.0"} ST_MOB_REP_INSCRIPTION est une Structure saNomSociete est une chaîne ANSI saServeurIP est une chaîne ANSI saServeurPort est une chaîne ANSI saWSadresse est une chaîne ANSI saNom est une chaîne ANSI saPrenom est une chaîne ANSI nIdUser est un entier sur 8 octets nIdClb est un entier sur 8 octets FIN <BLOC Structures utilisées pour le dialogue entre le Back-Office client et le serveur de licences> //Bo Client Demande Licence Mobile ST_CLI_DMD_LM est une Structure saCodeClient est une chaîne ANSI saNom est une chaîne ANSI saPrenom est une chaîne ANSI nIdUser est un entier sur 8 octets nIdClb est un entier sur 8 octets FIN //Bo Client Réponse à demande Licence Mobile ST_CLI_REP_DMD_LM est une Structure saNumLicence est une chaîne ANSI saDateAttrib est une chaîne ANSI saDateExpir est une chaîne ANSI FIN //Bo Client Action sur Licence Mobile ST_CLI_ACTION_LM est une Structure saCodeClient est une chaîne ANSI saNumLicence est une chaîne ANSI FIN 12/08/2026 Batik_WS_Lic_Mob 27

Partie 3 › Collection de procédures › LIB_Structures › Code //Bo Client Demande Liste licences mobile ST_CLI_DMD_LISTE_LM est une Structure saCodeClient est une chaîne ANSI FIN ST_WS_VERIF_LM est une Structure saCodeClient est une chaîne ANSI saLicence est une chaîne ANSI saIdMobile est une chaîne ANSI FIN 12/08/2026 Batik_WS_Lic_Mob 28

Partie 3 › Collection de procédures › LIB_SOAP_MOB › Code LIB_SOAP_MOB Code Déclaration de LIB_SOAP_MOB ST_CMD_MOB est une Structure saCMD est une chaîne ANSI saJSON est une chaîne ANSI FIN ST_REP_MOB est une Structure saEtatReponse est une chaîne ANSI saRepJSON est une chaîne ANSI FIN Procédure globale Inscription PROCÉDURE PRIVÉ Inscription(saData est une chaîne ANSI) QUAND EXCEPTION DANS stRep est une ST_REP_MOB TraceINFO("MOB_Inscription :" + saData) SI saData<>"" ALORS stIns est une ST_MOB_DMD_INSCRIPTION Désérialise(stIns,saData,psdJSON) SI ErreurDétectée() ALORS stRep.saEtatReponse=cERR_FORMAT_JSON TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN saCodeClient est une chaîne ANSI = stIns.saCodeClient SI PAS HLitRecherchePremier(ClientBase,CL_Code,stIns.saCodeClient) ALORS //Client Inconnu stRep.saEtatReponse=cERR_CLI_INCONNU TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI ClientBase.CL_IDServeurHF=Null ALORS stRep.saEtatReponse=cERR_CLI_CONFIG TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI PAS HLitRecherchePremier(ServeurHFSQL,SRVHF_PKID,ClientBase.CL_IDServeurHF) ALORS stRep.saEtatReponse=cERR_CLI_CONFIG TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI PAS ServeurHFSQL.SRVHF_Actif ALORS stRep.saEtatReponse=cERR_CLI_CONFIG TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI ClientBase.CL_IDWebServiceMobile=Null ALORS stRep.saEtatReponse=cERR_CLI_CONFIG 12/08/2026 Batik_WS_Lic_Mob 29

Partie 3 › Collection de procédures › LIB_SOAP_MOB › Code TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI PAS HLitRecherchePremier(ServeurWebService,WS_PKID,ClientBase.CL_IDWebServiceMobile) ALORS stRep.saEtatReponse=cERR_CLI_CONFIG TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN //Vérification de l'existence de la Licence dont le numéro est présenté //Elle doit correspondre au client et être active SI PAS HLitRecherchePremier(Licence,LI_Numero,stIns.saNumLicence) ALORS stRep.saEtatReponse=cERR_LIC_INCONNUE TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI Licence.LI_IDClient<>ClientBase.CL_PKID ALORS stRep.saEtatReponse=cERR_CLI_LIC //Le client ne correspond pas TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI PAS Licence.LI_Active ALORS stRep.saEtatReponse=cERR_LIC_INACTIVE //La licence est désactivée TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI Licence.LI_DateExpiration<>"" ET Licence.LI_DateExpiration<DateSys() ALORS stRep.saEtatReponse=cERR_LIC_EXPIREE //La licence est expirée TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI Licence.LI_IDMobile <>"" ET Licence.LI_IDMobile <>stIns.saIdMobile ALORS stRep.saEtatReponse=cERR_LIC_ATTRIBUEE //La licence est déjà attribuée à un autre mobile TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI stIns.nIdUser<>0 ET Licence.LI_IDUser<>stIns.nIdUser ALORS stRep.saEtatReponse=cERR_LIC_ATTRIBUEE //La licence est déjà attribuée à un autre mobile ou a été libérée TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN SI Licence.LI_IDMobile <> stIns.saIdMobile ALORS //Inscription Licence.LI_IDMobile = stIns.saIdMobile Licence.DateModif = DateHeureSys() Licence.UserModif = 1 HModifie(Licence) FIN stRep.saEtatReponse =cREP_OK stRepIns est un ST_MOB_REP_INSCRIPTION stRepIns.saNomSociete=ClientBase.CL_Nom stRepIns.saNom =Licence.LI_UserNom stRepIns.saPrenom =Licence.LI_UserPrenom stRepIns.nIdUser =Licence.LI_IDUser stRepIns.nIdClb =Licence.LI_IDCollaborateur stRepIns.saServeurIP =ServeurHFSQL.SRVHF_Adresse 12/08/2026 Batik_WS_Lic_Mob 30

Partie 3 › Collection de procédures › LIB_SOAP_MOB › Code stRepIns.saServeurPort =ServeurHFSQL.SRVHF_Port stRepIns.saWSadresse =ServeurWebService.WS_AdresseAWP Sérialise(stRepIns,stRep.saRepJSON,psdJSON) HRAZ(LicenceHisto) LicenceHisto.LH_Date=DateHeureSys() LicenceHisto.LH_Auteur ="WS.MOB" //WebService Mobile LicenceHisto.LH_Operation ="MOB.INSCRIPTION" LicenceHisto.LH_GUIDLicence =Licence.LI_Numero LicenceHisto.LH_CodeClient =ClientBase.CL_Code LicenceHisto.LH_IdMobile =Licence.LI_IDMobile LicenceHisto.LH_Note =stRep.saRepJSON HAjoute(LicenceHisto) TraceINFO(stRep.saRepJSON) RENVOYER stRep SINON stRep.saEtatReponse=cERR_DATA_VIDE TraceDEBUG(stRep.saEtatReponse) RENVOYER stRep FIN FAIRE TraceERREUR(ExceptionInfo(errComplet)) stRep.saEtatReponse=cERR_EXCEPTION TraceERREUR(stRep.saEtatReponse) RENVOYER stRep FIN Procédure globale MOB_CMD PROCÉDURE MOB_CMD(stCMD est un ST_CMD_MOB) TraceDébut(trFichier, ComplèteRep(fRepDonnées()) + "Trace_" + stCMD.saCMD + "_" + DateSys() + ".txt") stRep est un ST_REP_MOB TraceINFO("MOB_CMD") TraceINFO(stCMD.saCMD) TraceINFO(stCMD.saJSON) QUAND EXCEPTION DANS SELON stCMD.saCMD CAS cMOB_LIC_INSCRIPTION //Inscription d'un mobile stRep=Inscription(stCMD.saJSON) AUTRE CAS stRep.saEtatReponse = cERR_CMD_INCONNUE FIN TraceINFO("Réponse : " + stRep.saEtatReponse) RENVOYER stRep FAIRE TraceERREUR(ExceptionInfo(errComplet)) stRep.saEtatReponse = cERR_EXCEPTION TraceERREUR("Réponse : " + stRep.saEtatReponse) RENVOYER stRep FIN 12/08/2026 Batik_WS_Lic_Mob 31

Partie 3 › Collection de procédures › LIB_COMMUNE › Code LIB_COMMUNE Code Déclaration de LIB_COMMUNE CONSTANT gsCleCryptage ="" cTrace_Info =0 cTrace_Debug =1 cTrace_Erreur =2 FIN gnNiveauTraceMini est un entier = cTrace_Info gsaCumulTrace est une chaîne ANSI gbTraceBufferReception est un booléen gnNbJoursLog est un entier Procédure globale InfoWS PROCÉDURE PRIVÉ InfoWS() saREP est une chaîne ANSI saREP="-----------------------------------------------" saREP+=RC+"Executable :" + ExeInfo(exeNom) + " version :" + ExeInfo(exeVersion) saREP+=RC+"Date serveur :" + DateVersChaîne(DateHeureSys(),"JJ/MM/AAAA HH:mm:SS") saREP+=RC+"Analyse :" + Remplace(HInfoAnalyse(),RC," N° :") saREP+=RC+"Rep Données :" + fRepDonnées() saREP+=RC+"Rep Web :" + fRepWeb() saREP+=RC+"Ini :" + NomDuFichierIni() saREP+=RC+"IP Client :" + WebserviceAdresseIPClient(Vrai) saREP+=RC+"-----------------------------------------------" RENVOYER saREP Procédure globale LitConfigurationINI PROCÉDURE PRIVÉ LitConfigurationINI() saFicIni est une chaîne = NomDuFichierIni() SI PAS fFichierExiste(saFicIni) ALORS INIEcrit("DEBUG","NIVEAU","0",saFicIni) FIN // Lit la valeur du niveau de trace par défaut gnNiveauTraceMini = Val( INILit("DEBUG", "NIVEAU", "0",saFicIni) ) gbTraceBufferReception = Val(INILit("DEBUG","TRACE BUFFER","0",saFicIni))=1 gnNbJoursLog = Val( INILit("LOG", "NB JOURS", "10",saFicIni) ) Procédure globale NomDuFichierIni PROCÉDURE PRIVÉ NomDuFichierIni() RENVOYER ComplèteRep(fRepDonnées()) + "Config" + gcVersionNom +".ini" Procédure globale ParametreSQLCorrect 12/08/2026 Batik_WS_Lic_Mob 32

Partie 3 › Collection de procédures › LIB_COMMUNE › Code PROCÉDURE PRIVÉ ParametreSQLCorrect(LOCAL saParam chaîne ANSI) //Vérifie si la chaine ne contient pas d'instruction SQL injectées //Test à minima SI saParam="" ALORS RENVOYER Vrai FIN tabChaine est un tableau de chaînes = ["SELECT","INSERT","UPDATE","DELETE","WHERE","INNER"] SI Contient(saParam,tabChaine,SansCasse) ALORS RENVOYER Faux RENVOYER Vrai Procédure globale Tesla PROCÉDURE Tesla() //T'es là TraceDébut(trFichier, ComplèteRep(fRepDonnées()) + "Trace_Test_" + DateSys() + ".txt") TraceDEBUG("Demande TESLA") HLitPremier(ClientBase) TraceDEBUG("Client Code :" + ClientBase.CL_Code) RENVOYER "OUI" Procédure globale TraceCUMUL PROCÉDURE PRIVÉ TraceCUMUL(s) //Stock un message de trace pour l'écrire quand la trace sera ouverte saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info + TAB + Remplace(s,TAB,"") gsaCumulTrace += [RC] + saTxt Procédure globale TraceDEBUG PROCÉDURE RESTREINT TraceDEBUG(s) saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Debug + TAB + Remplace(s,TAB,"") SI gnNiveauTraceMini <= cTrace_Debug ALORS SI gsaCumulTrace<>"" ALORS Trace(gsaCumulTrace) gsaCumulTrace="" FIN Trace(saTxt) SINON gsaCumulTrace += RC + saTxt FIN Procédure globale TraceERREUR PROCÉDURE RESTREINT TraceERREUR(s) //EN cas d'erreur, on trace le contenu du Cumul de trace de tout niveau SI gsaCumulTrace<>"" ALORS Trace(gsaCumulTrace) gsaCumulTrace="" FIN Trace(DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Erreur + TAB + Remplace(s, TAB,"")) Procédure globale TraceINFO PROCÉDURE RESTREINT TraceINFO(s) saTxt est une chaîne ANSI = DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info + 12/08/2026 Batik_WS_Lic_Mob 33

Partie 3 › Collection de procédures › LIB_COMMUNE › Code TAB + Remplace(s,TAB,"") SI gnNiveauTraceMini <= cTrace_Info ALORS Trace(saTxt) SINON gsaCumulTrace += RC + saTxt FIN Procédure globale TraceTOUT //Trace quelque soit le niveau de trace courant PROCÉDURE PRIVÉ TraceTOUT(s) Trace(DateVersChaîne(DateHeureSys(),"JJ/MM/AA HH:mm:SS")+ TAB + cTrace_Info + TAB + Remplace(s,TAB, "")) 12/08/2026 Batik_WS_Lic_Mob 34

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code LIB_SOAP_CLIENT Code Déclaration de LIB_SOAP_CLIENT ST_CMD_CLIENT est une Structure saCMD est une chaîne ANSI saCodeClient est une chaîne ANSI saCleAPI est une chaîne ANSI saJSON est une chaîne ANSI FIN ST_REP_CLIENT est une Structure saEtatReponse est une chaîne ANSI saRepJSON est une chaîne ANSI FIN Procédure globale BOCLI_CMD PROCÉDURE BOCLI_CMD(stCMD est un ST_CMD_CLIENT) stRep est un ST_REP_CLIENT TraceINFO(stCMD.saCMD + " " + stCMD.saCodeClient) TraceINFO(stCMD.saJSON) QUAND EXCEPTION DANS SELON stCMD.saCMD CAS cCLI_LIC_ATTRIBUTION //Attribut une licence à un utilisateur stRep=LicenceLibreAttribution(stCMD.saJSON) CAS cCLI_LIC_ACTIVATION //Activation/ désactivation d'une licence stRep=LicenceActivation(stCMD.saJSON,Vrai) CAS cCLI_LIC_DESACTIVATION stRep=LicenceActivation(stCMD.saJSON,Faux) CAS cCLI_LIC_LIBERE //Libère une licence mobile stRep=LicenceLibere(stCMD.saJSON) CAS cCLI_LIC_LISTE stRep=LicenceListe(stCMD.saJSON) AUTRE CAS stRep.saEtatReponse = cERR_CMD_INCONNUE FIN TraceINFO("Reponse :" + stRep.saEtatReponse ) TraceINFO(stRep.saRepJSON) RENVOYER stRep FAIRE TraceERREUR(ExceptionInfo(errComplet)) stRep.saEtatReponse = cERR_EXCEPTION RENVOYER stRep FIN Procédure globale LicenceActivation 12/08/2026 Batik_WS_Lic_Mob 35

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code PROCÉDURE PRIVÉ LicenceActivation(LOCAL saJSON est une chaîne ANSI,bEtat est un booléen) TraceDEBUG("LicenceActivation : " + saJSON) stRep est une ST_REP_CLIENT stDMD est un ST_CLI_ACTION_LM QUAND EXCEPTION DANS Désérialise(stDMD,saJSON,psdJSON) SI PAS HLitRecherchePremier(ClientBase, CL_Code, stDMD.saCodeClient) ALORS stRep.saEtatReponse=cERR_CLI_INCONNU SINON SI PAS HLitRecherchePremier(Licence,LI_Numero,stDMD.saNumLicence) ALORS stRep.saEtatReponse=cERR_LIC_INCONNUE SINON SI Licence.LI_IDClient<>ClientBase.CL_PKID stRep.saEtatReponse=cERR_CLI_LIC SINON Licence.LI_Active = bEtat Licence.DateModif=DateHeureSys() Licence.UserModif=1 HModifie(Licence) HRAZ(LicenceHisto) LicenceHisto.LH_Date =DateHeureSys() LicenceHisto.LH_Auteur ="WS.CLI" //WebService Client LicenceHisto.LH_Operation ="CLI.LICMOB.ACTIVE" LicenceHisto.LH_GUIDLicence =Licence.LI_Numero LicenceHisto.LH_CodeClient =ClientBase.CL_Code LicenceHisto.LH_IdMobile =Licence.LI_IDMobile LicenceHisto.LH_Note ="" HAjoute(LicenceHisto) stRep.saEtatReponse=cREP_OK FIN TraceDEBUG("Réponse :" + stRep.saEtatReponse) FAIRE stRep.saEtatReponse=cERR_EXCEPTION TraceERREUR("ActiveLicence(" + saJSON +"," + bEtat +")"+RC + ExceptionInfo(errComplet)) FIN RENVOYER stRep Procédure globale LicenceLibere PROCÉDURE PRIVÉE LicenceLibere(LOCAL saJSON est une chaîne ANSI) stRep est une ST_REP_CLIENT stDMD est un ST_CLI_ACTION_LM QUAND EXCEPTION DANS Désérialise(stDMD,saJSON,psdJSON) 12/08/2026 Batik_WS_Lic_Mob 36

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code SI PAS HLitRecherchePremier(ClientBase, CL_Code, stDMD.saCodeClient) ALORS stRep.saEtatReponse=cERR_CLI_INCONNU SINON SI PAS HLitRecherchePremier(Licence,LI_Numero,stDMD.saNumLicence) ALORS stRep.saEtatReponse=cERR_LIC_INCONNUE SINON SI Licence.LI_IDClient<>ClientBase.CL_PKID stRep.saEtatReponse=cERR_CLI_LIC SINON sa est une chaîne ANSI eLI est un Enregistrement de Licence eLI=Licence Sérialise(eLI,sa,psdJSON) HRAZ(LicenceHisto) LicenceHisto.LH_Date =DateHeureSys() LicenceHisto.LH_Auteur ="WS.CLI" //WebService Client LicenceHisto.LH_Operation ="CLI.LICMOB.LIBERE" LicenceHisto.LH_GUIDLicence =Licence.LI_Numero LicenceHisto.LH_CodeClient =ClientBase.CL_Code LicenceHisto.LH_IdMobile ="" LicenceHisto.LH_Note =sa HAjoute(LicenceHisto) //Libération de la licence Licence.LI_Active = Vrai Licence.LI_IDCollaborateur =0 Licence.LI_IDUser =0 Licence.LI_InfoSupMob ="" Licence.LI_UserNom ="" Licence.LI_UserPrenom ="" Licence.LI_IDMobile ="" Licence.LI_VersionMajeur ="" Licence.DateModif =DateHeureSys() Licence.UserModif =1 HModifie(Licence) stRep.saEtatReponse=cREP_OK FIN FAIRE stRep.saEtatReponse=cERR_EXCEPTION TraceERREUR("LicenceLibere(" + saJSON +")"+RC + ExceptionInfo(errComplet)) FIN RENVOYER stRep Procédure globale LicenceLibreAttribution PROCÉDURE PRIVÉ LicenceLibreAttribution(LOCAL saJSON est une chaîne ANSI) stRep est un ST_REP_CLIENT stDMD est un ST_CLI_DMD_LM stLIC est un ST_CLI_REP_DMD_LM bLicOk est un booléen QUAND EXCEPTION DANS Désérialise(stDMD,saJSON,psdJSON) SI PAS HLitRecherchePremier(ClientBase, CL_Code, stDMD.saCodeClient) ALORS stRep.saEtatReponse=cERR_CLI_INCONNU SINON 12/08/2026 Batik_WS_Lic_Mob 37

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code //Recherche d'une licence déjà attribuée à cet utilisateur rqLU est une Requête SQL = [ SELECT * FROM Licence where Licence.LI_IDClient={pIdClient} AND Licence.LI_IDUser={pIdUser} AND Licence.LI_Type= 5 ] rqLU.pIdClient = ClientBase.CL_PKID rqLU.pIdUser =stDMD.nIdUser HExécuteRequête(rqLU) SI HLitPremier(rqLU) ALORS stLIC.saNumLicence = rqLU.LI_Numero //Le numéro de licence mobile est renvoyé stLIC.saDateAttrib = rqLU.LI_DateAttribution stLIC.saDateExpir = rqLU.LI_DateExpiration bLicOk=Vrai FIN //Recherche d'une licence libre SI PAS bLicOk ALORS POUR TOUT Licence AVEC LI_IDClient=ClientBase.CL_PKID SI Licence.LI_IDMobile="" ET Licence.LI_Type=5 ET Licence.LI_Active=1 ET Licence .LI_IDUser=0 ALORS Licence.LI_IDUser = stDMD.nIdUser //La licence n'est plus libre car LI_IdUser <>0 Licence.LI_IDCollaborateur = stDMD.nIdClb Licence.LI_UserNom = stDMD.saNom Licence.LI_UserPrenom = stDMD.saPrenom HModifie(Licence) stLIC.saNumLicence = Licence.LI_Numero //Le numéro de licence mobile est renvoyé stLIC.saDateAttrib = Licence.LI_DateAttribution stLIC.saDateExpir = Licence.LI_DateExpiration bLicOk=Vrai SORTIR FIN FIN FIN SI bLicOk ALORS stRep.saEtatReponse=cREP_OK Sérialise(stLIC,stRep.saRepJSON,psdJSON) HRAZ(LicenceHisto) LicenceHisto.LH_Date =DateHeureSys() LicenceHisto.LH_Auteur ="WS.CLI" //WebService Client LicenceHisto.LH_Operation ="CLI.LICMOB.ATTRIB" LicenceHisto.LH_GUIDLicence =Licence.LI_Numero LicenceHisto.LH_CodeClient =ClientBase.CL_Code LicenceHisto.LH_IdMobile ="" LicenceHisto.LH_Note =stRep.saRepJSON HAjoute(LicenceHisto) SINON stRep.saEtatReponse=cERR_LIC_AUCUNE FIN FIN FAIRE stRep.saEtatReponse=cERR_FORMAT_JSON 12/08/2026 Batik_WS_Lic_Mob 38

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code FIN RENVOYER stRep Procédure globale LicenceListe PROCÉDURE PRIVÉE LicenceListe(LOCAL saJSON est une chaîne ANSI) stRep est un ST_REP_CLIENT RENVOYER stRep Procédure globale LicenceVerifie PROCÉDURE LicenceVerifie(LOCAL saJSON est une chaîne ANSI) TraceDEBUG("LicenceVerifie :" +saJSON) QUAND EXCEPTION DANS stDMD est un ST_WS_VERIF_LM stRep est un ST_REP_CLIENT Désérialise(stDMD,saJSON,psdJSON) SI ErreurDétectée ALORS stRep.saEtatReponse=cERR_FORMAT_JSON SINON saCodeClient est une chaîne ANSI = stDMD.saCodeClient saLicence est une chaîne ANSI = stDMD.saLicence saIdMobile est une chaîne ANSI = stDMD.saIdMobile SI HLitRecherchePremier(ClientBase,CL_Code,saCodeClient) ALORS SI PAS HLitRecherchePremier(Licence,LI_Numero,saLicence) ALORS stRep.saEtatReponse=cERR_LIC_INCONNUE SINON SI ClientBase.CL_PKID<>Licence.LI_IDClient ALORS stRep.saEtatReponse=cERR_CLI_LIC SINON SI Licence.LI_IDMobile<>saIdMobile ALORS stRep.saEtatReponse=cERR_LIC_ATTRIBUEE SINON SI Licence.LI_Active=Faux ALORS stRep.saEtatReponse=cERR_LIC_INACTIVE SINON SI PAS Licence.LI_DateExpiration..Null ET Licence.LI_DateExpiration< DateHeureSys() ALORS stRep.saEtatReponse=cERR_LIC_EXPIREE SINON stRep.saEtatReponse=cREP_OK FIN FIN SINON stRep.saEtatReponse=cERR_CLI_INCONNU FIN FIN TraceDEBUG("Réponse :" + stRep.saEtatReponse) RENVOYER stRep 12/08/2026 Batik_WS_Lic_Mob 39

Partie 3 › Collection de procédures › LIB_SOAP_CLIENT › Code FAIRE TraceERREUR("ERREUR dans LicenceVerifie" + RC + ExceptionInfo(errComplet)) stRep.saEtatReponse= cERR_EXCEPTION RENVOYER stRep FIN 12/08/2026 Batik_WS_Lic_Mob 40

Partie 4 › Table des matières Partie 4 Table des matières

12/08/2026 Batik_WS_Lic_Mob 41

Partie 4 › Table des matières Projet Batik_WS_Lic_Mob Partie 1 Projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Liste des éléments du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 Erreurs, warnings et informations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Statistiques sur le code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Partie 2 Analyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Graphe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 Informations générales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 Dictionnaire des rubriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 Liaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 Fichiers et rubriques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 ClientADM 15 ClientBase 17 Licence 18 LicenceHisto 19 LoginHFSQL 20 Parametre 21 Serveur 22 ServeurHFSQL 23 ServeurWebService 24 Utilisateur 25 Partie 3 Collection de procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 LIB_Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Code 27 LIB_SOAP_MOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Code 29 LIB_COMMUNE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Code 32 LIB_SOAP_CLIENT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Code 35 12/08/2026 Batik_WS_Lic_Mob 42