Académique Documents
Professionnel Documents
Culture Documents
06/04/2021
GÉRER FACILEMENT UNE SAISIE
OBLIGATOIRE NON BLOQUANTE
WINDEV intègre "depuis toujours" une gestion des saisies obligatoires.
Cette fonctionnalité peut avoir un inconvénient : lorsque l'utilisateur est en
saisie dans un champ obligatoire, il doit le remplir, sans avoir la possibilité
de saisir un autre champ avant.
En version 26, il devient possible de gérer tout aussi simplement les saisies
obligatoires, mais sans bloquer l'utilisateur dans un champ.
G
râce au nouveau mode de saisie • la mise en avant des champs obligatoires est • la saisie bloquante, comme dans les versions
obligatoire, les utilisateurs peuvent réalisée par des nouveaux styles et options, précédentes de WINDEV.
passer librement d'un champ à un • la fonction SaisieInvalideDétecte permet Il suffit alors de vérifier la saisie lors de la vali-
autre et ainsi saisir dans un ordre de savoir si des champs ne sont pas correc- dation de la fenêtre par la fonction WLangage
quelconque. tement renseignés, SaisieInvalideDétecte.
Bien entendu, pour valider la fenêtre, • la fonction SaisieInvalideListeChamp La fonction SaisieInvalideDétecte renvoie Vrai
tous les champs en saisie obligatoire doivent permet d'obtenir la liste des champs qui ne si au moins un champ à saisie obligatoire n'est
être remplis ! sont pas correctement renseignés. pas renseigné ou si la saisie ne respecte pas
le masque ou les bornes définies.
Projet d'illustration Mise en œuvre Le traitement le plus simple est alors d'arrêter
Tout d'abord, il suffit d'activer l'option "Saisie
Le projet utilisé pour illustrer ce sujet est le traitement avec le mot-clé RETOUR.
obligatoire" dans les champs obligatoires de
l'exemple "WD SaisieObligatoire FicheContact Il est aussi possible de prévoir des traite-
la fenêtre.
WTT26". ments plus complets avec la nouvelle fonction
Astuce : il est possible de configurer la saisie
WLangage SaisieInvalideListeChamp qui
Principe obligatoire par programmation avec la pro-
priété WLangage SaisieObligatoire.
permet d'obtenir la liste de tous les champs
invalides.
Le principe de fonctionnement est très simple :
Lorsque la saisie obligatoire est activée pour
• l'option de saisie obligatoire est activée sur
un champ, deux choix sont proposés :
les champs obligatoires,
• la nouvelle méthode de validation,
1 Authentification oAuth
oAuth est un protocole d'authentification. Il permet à un
service, comme ici un serveur d'email de déléguer l'authenti-
fication des utilisateurs à un autre serveur : le serveur oAuth.
Cela permet de centraliser la gestion des comptes utilisateurs pour
plusieurs services. Par exemple, chez Microsoft, le serveur des
comptes Microsoft est un serveur oAuth.
Ce compte permet de se connecter aux emails Outlook.com, aux
données OneDrive, à Word, Excel, etc.
Pour accéder aux emails Outlook par programmation, il faut donc
gérer cette authentification oAuth.
2 Le token oAuth
Les étapes d'une authentification oAuth sont les suivantes :
1. L'application contacte le serveur oAuth et demande un
jeton d'identification / token (en WLangage à l'aide de la
fonction AuthIdentifie). Un token peut être vu comme une clé qui
permet à l'application de faire des actions au nom de l'utilisateur. En
programmation, un token, c'est une chaîne de caractères.
2. Le serveur renvoie vers une page Web dans laquelle l'utilisateur doit sai-
sir son login et son mot de passe (et une double authentification si besoin).
3. Si les informations saisies sont correctes, le serveur oAuth renvoie
le token : l'application n'a jamais connaissance du login ou du mot de
passe. Le token prouve que l'utilisateur a été identifié. C'est ce token
qui sera ensuite transmis au serveur de mail lors de la connexion.
3 Client ID Outlook
La fonction AuthIdentifie, nécessite deux paramètres spé-
cifiques au protocole oAuth : le ClientID et le ClientSecret.
L'obtention de ces paramètres dépend du fournisseur
(Outlook, GMail...) et s'effectue une seule fois.
Pour Outlook, il est nécessaire d'inscrire l'application "cliente" auprès
de la plateforme Azure Active Directory :
• se connecter sur le portail Azure à l'aide d'un compte développeur,
• accéder au composant Azure Active Directory,
• choisir "Nouvelle inscription" dans "Inscription d'applications",
• indiquer le nom de l'application, par exemple "WD Mail".
7 Exemple et utilisation
L'application (ici "WD Mail") est prête à gérer des comptes
Outlook. Lors du premier accès, l'utilisateur :
• saisit son adresse email dans l'application,
• saisit ses informations d'identifications dans le navigateur qui
s'ouvrira automatiquement (et éventuellement fera sa double authen-
tification par SMS ou authenticator),
• indique qu'il autorise l'application "WD Mail" à accéder à ses emails.
Cette phase d'authentification et d'autorisation, l'utilisateur final
l'effectue une seule fois. Ensuite, l'application renouvelle automati-
quement le token oAuth grâce à la fonction AuthRenouvelleToken.
WINDEV TECH TOUR 2021 - 5
SOYEZ ENCORE PLUS
EFFICACE :
LES ASTUCES DE MARC
1 Plusieurs volets
Il arrive fréquemment de vouloir effectuer plusieurs
recherches en parallèle, en conservant l'affichage des
résultats de chacune.
En cliquant sur la punaise d'un volet de recherche (en haut à
droite), le volet de recherche se verrouille .
En utilisant le raccourci Ctrl + F pour lancer une nouvelle recherche,
un deuxième volet de recherche va s'afficher. Le libellé de recherche
Ctrl
+
Shift
+
F
2 Raccourcis
• "Ctrl + Shift+ F" permet de forcer une recherche dans tout
le projet. Les fenêtres, les états, les requêtes, le code ... tout.
• "Ctrl + Alt + F" permet de limiter la recherche à l'élément
courant uniquement.
• "Alt + F" permet d'effectuer une recherche directement dans
l'aide de WINDEV. Un double-clic sur la ligne de résultat ouvre
la page d'aide.
4 Recherche avancée
d'éléments
La recherche d'éléments est une recherche avancée qui
peut s'avérer particulièrement utile dans certains cas.
Il est possible d'indiquer le type d'élément recherché (fenêtres, pages,
états, champs, ...) ainsi que plusieurs critères de recherche (parmi
plus de 80) combinables.
Par défaut, lorsque plusieurs éléments sont visualisés, ils sont tous visibles dans la barre de documents, situé en haut de l'éditeur.
Pour créer une nouvelle zone pour un élément (une fenêtre, son code, un test, etc.), vous pouvez :
• effectuer un "glisser-déposer" (Drag and Drop) depuis la barre de documents. Lors du survol, l'éditeur affichera, dans la zone de travail, un
cadre symbolisant la position où l'élément sera placé. Les zones peuvent être découpées de façon verticale ou horizontale.
• utiliser le menu contextuel sur la barre de documents. Les options "Créer un groupe à droite" et "Créer un groupe en dessous" permettent
de déplacer l'élément dans la zone souhaitée.
"Ctrl + Shift + T" : ré-ouvre le dernier élément fermé (très pratique après une fermeture non souhaitée).
U
ne infrastructure Docker permet de chaque container. On entend par ressource Avantages
de réaliser des environnements : la puissance CPU mais également la quantité Les avantages pour les équipes de déve-
• isolés, de mémoire. loppement d'une infrastructure Docker sont
• duplicables multiples :
• à ressources contrôlées. Swarm • Comme l'environnement d'exécution est
Isolé : quoi que fasse l'application, cela n'aura Un cluster Swarm est une technologie qui isolé, chaque application peut être codée
aucun impact sur les autres sites qui s'exé- permet de faire fonctionner plusieurs serveurs comme si elle était la seule sur le serveur. Cela
cutent sur le même serveur. L'application est Docker ensemble. Dans ce cas, chaque serveur simplifie le développement et le débogage.
"dans" un container. est appelé un nœud. • Comme le déploiement est duplicable, il est
possible d'absorber les montées en charge
Duplicable : il est possible d'exécuter une ou Le cluster Swarm gère la communication entre
"facilement". Il suffit d'ajouter de nouveaux
plusieurs centaines d'instances d'une applica- les conteneurs situés sur des nœuds différents.
nœuds dans le cluster et de déployer plus
tion facilement : elles seront toutes identiques. Docker Swarm est une technologie de clus- d'instances.
À ressources contrôlées : l'administrateur du ter, mais ce n'est pas la seule, il y a aussi • Comme vous contrôlez les ressources, il est
serveur contrôle précisément les ressources Kubernetes. possible d'exploiter plusieurs applications sur
minimales et maximales mises à disposition le même serveur sans risques de cannibalisme
4 Structure des
"pas gratuit" en termes de développement En effet, si votre conteneur s'arrête sur
et impose des "contraintes" au niveau du le nœud 1 et qu'il est relancé sur le 5 par
données
développement. Voici 8 conseils importants exemple, il va falloir qu'il "retrouve" ses fichiers
à respecter pour utiliser ou pouvoir utiliser de données alors qu'il s'exécute sur une autre
dans l'avenir une infrastructure Docker.
En Docker, il n'y a pas d'installation : machine physique.
1
il n'y a donc pas non plus de Synchronisation Ce conseil s'applique aussi pour le conteneur
Environnement des Données Déployées (Modification
Automatique des fichiers).
qui exécute votre serveur HFSQL !
Linux
Dans ce cas, il existe de nombreuses solutions
C'est donc aux développeurs, dans le code techniques, selon nos retours, les solutions
d'initialisation du projet, de vérifier la structure CephFS ou GlusterFS semblent de bonnes
L'exécution de Docker s'effectue sous des fichiers. Il est alors nécessaire de faire pistes si vous ne savez pas quel système de
un environnement Linux. évoluer la structure des fichiers déployés à fichiers choisir.
Les conteneurs Docker créés avec WEBDEV l'aide de la fonction HModifieStructure et
7
sont basés sur la distribution Debian. de gérer la version actuelle des données par
Il est donc fondamental de vérifier que l'option
"Activer les erreurs de compilation pour la
un moyen de votre choix. Cluster Swarm :
redondance
5
compatibilité Linux" est bien activée dans tous
les projets de sites ou Webservices destinés
à être exécutés sous Docker.
Agrégation Dans un cluster Swarm, certains
Dans le cas d'une architecture com- nœuds sont chargés de gérer le fonction-
De manière générale, cette option est conseil-
plexe, par exemple un ou plusieurs nement du cluster : ce sont les managers.
lée lors d'un nouveau développement pour
sites, des Webservices, une base de
prendre en compte les spécifications Linux et Pour que le cluster reste fonctionnel, plus de
données, il est souvent nécessaire de regrou-
ne pas se limiter à un hébergement Windows. la moitié des managers doivent être capables
per ces éléments pour les déployer ensemble.
de communiquer ensemble.
2 Répertoire des
Cette opération est réalisée avec la techno-
Donc lors de la mise en place d'un cluster
logie Docker Compose. Cela permet d'être
Swarm, pensez à ne pas mettre tous les mana-
données
sûr que tous les composants de l'application
gers dans le même datacenter ... l'histoire
sont synchronisés.
récente nous l'a encore montré.
Pour manipuler des fichiers, il faut Un fichier docker compose (docker-compose.
8
toujours utiliser le répertoire renvoyé par la yml) respecte une syntaxe stricte au format
fonction WLangage fRepDonnées. YAML (l'indentation est impérative) et spéci- Faites des
sauvegardes !
En effet, c'est le seul endroit accessible en fique, de la forme :
écriture pour votre conteneur dont le contenu services:
est conservé en cas de redémarrage ou de service1:
image: windev/hfsql Cela paraît évident, mais n'oubliez
nouvelle instance.
ports: pas que ce n'est pas parce que vous avez de
Par "fichiers", on parle ici des fichiers HFSQL - "4900:4900" la redondance que vous pouvez vous passer
Classic mais également des fichiers de para- de backups.
6
mètres, des fichiers manipulés par program-
Cluster Swarm :
En effet, avec la seule redondance, si un
mation... tout ce qui est écrit sur le disque.
bug "écrase" vos données, il les écrasera sur
3
système de
plusieurs machines à la fois !
Génération
fichiers
Lors de la génération du fichier
Dockerfile avec WEBDEV, il est impor-
tant de vérifier dans l'assistant que Un cluster Swarm est un ensemble de
tous les fichiers seront bien placés dans le machines qui exécutent le moteur Docker
Retrouvez dans la LST 122, une procédure détaillée de déploiement d'un site
WEBDEV avec Docker ainsi qu'un utilitaire permettant d'automatiser les princi-
pales opérations (build, tag, run, push...).
1 Activation de la
fonctionnalité
Pour qu'un projet WINDEV Mobile puisse être déployé en
mode MDM, il faut le déclarer lors du développement.
L'activation de la gestion du MDM s'effectue depuis le volet "Projet"
en cliquant sur le bouton "GPU/MDM".
Il faut en effet activer l'option "Activer les services MBaaS" (Mobile
Backend as a Service).
Ensuite, il suffit d'indiquer les services dont l'application doit bénéficier :
• Groupware Utilisateur (Gestion des utilisateurs),
• MDM (Gestion des applications).
2 Hébergement des
données
Pour pouvoir utiliser les services MBaaS, il est nécessaire de
disposer d'un serveur. Ce serveur va à la fois gérer les authentifications
et les droits des utilisateurs, mais aussi la distribution des applications.
Pour mettre en place un serveur MBaaS, et en particulier MDM,
la procédure d'installation sur un serveur dédié est indiquée dans
l'aide en ligne de WINDEV (https://doc.pcsoft.fr/fr-FR/?1410086652).
Bien entendu, PCSCloud propose une solution prête à l'emploi (en
utilisant une plateforme d'exploitation).
7 Installation des
applications
Lorsque l'application et le serveur sont configurés, les
utilisateurs peuvent installer l'application sur leurs périphériques.
Pour cela, un lien (et un QR Code) est disponible dans WINDEV Mobile
(étape 3). Ce lien d'installation doit être fourni aux utilisateurs par
le moyen de votre choix.
Les utilisateurs peuvent alors installer l'application correspondante.
Les mises à jour leur seront automatiquement proposées par la suite
lorsqu'une nouvelle version sera mise à disposition.
Résolution et PDF
Lors d'une demande de reconnaissance de caractères sur un
document au format PDF, le WLangage génère automatique-
ment en mémoire une image du PDF.
Lors de cette génération, afin d'obtenir la meilleure qua-
lité possible pour la reconnaissance des caractères,
le "dessin" est effectué avec une résolution élevée : 300 DPI.
Or, un écran d'ordinateur n'a pas une résolution de 300
DPI mais généralement de 96 DPI. Il est donc nécessaire de
convertir les coordonnées de la sélection par une simple règle
de trois. Dans le cas contraire, l'OCR ne sera pas exécuté sur
les éléments sélectionnés visuellement.
Il suffit donc de multiplier les valeurs par 300 et de les diviser
par 96.
Ci-contre, un exemple
de mesures sur un
71 % serveur réel.
Ce serveur traite environ 10 000 sessions
par jour.
Le graphe montre la charge moyenne de la
mémoire du serveur sur 24 heures :
• en haut, c’est le serveur d’application en
ancienne version 25, donc sans le mécanisme
de heartbeat. La charge moyenne s’établit
à 71 % de la mémoire totale de la machine.
32 %
• en bas, c’est le même serveur après son
passage en version 26. Automatiquement,
grâce au heartbeat de WEBDEV 26, la charge
est tombée à 32 %.