Vous êtes sur la page 1sur 104

TDF Tech 2009


Support de cours

TDF TECH 2009 - www.pcsoft.fr - 1


2 - TDF TECH 2009 - www.pcsoft.fr
Le document que vous avez entre les mains n’a
pas la finalité de remplacer les documentations
techniques ou commerciales livrées avec WinDev,
WebDev ou WinDev Mobile.
Ce document n’est pas un cours d’auto-formation,
mais uniquement un support “papier” à la présen-
tation technique que vous avez suivie.
Ce document a été réalisé par l’équipe de la LST.

TDF TECH 2009 - www.pcsoft.fr - 3


Sommaire

TDF Tech 2009


Sommaire du support de cours

1 Support de cours
4 Sommaire
TDF Tech 2009 Sommaire du support de cours

9 Présentation
10 WinDev
Présentation rapide de WinDev et de ses fonctionnalités

12 WinDev Mobile
Présentation rapide de WinDev Mobile et de ses fonctionnalités

14 WebDev
Présentation rapide de WebDev et de ses fonctionnalités

16 PC SOFT à votre service


• Séminaire de formation,
• Consulting,
• Assistance Directe,...

17 Les graphiques
18 Champs Graphe "donuts"
Utilisation du champ graphe de WinDev 14 :
Réalisation d'un graphe "donuts"

20 Champs graphes Avancés


Utilisation avancée des champs graphes

23 Gestionnaire de sources
24 Gestionnaire de sources
Fonctionnement, historique, différences de sources, fusion de sources et gestion de branches

26 Sécurité et GDS
Définition de droits et d'une politique de réintégration dans le Gestionnaire de Sources

29 Bases de données
30 HyperFileSQL
Comment optimiser les accès à une base de données HyperFileSQL

32 HyperFileSQL Full-text
Mise en oeuvre d'index full-text dans une application de gestion de contenu

4 - TDF TECH 2009 - www.pcsoft.fr


Support de cours
35 WinDev
36 Champ Calendrier
Personnalisation du champ calendrier

38 Champ Table
Utilisation de nouveautés du champ table

41 La réplication
42 Réplication assistée
Mise en place d'une réplication assistée

44 Réplication programmée
Mise en place d'une réplication programmée

47 Mobilité et Base de Données


48 Base de données
Applications Mobiles : base de données embarquée, distante ou mobile ?
Accès à une base tierce depuis un terminal mobile

53 Debug et Optimisation
54 Programmation et débogueur
Fonctions de mise au point et de débogage

56 Analyseurs
Optimisation d'une application grâce au logs et à l'analyseur de performances

59 Gestion de la qualité
60 Tests automatiques
Mise en place de tests unitaires lors d'un "GO" de fenêtre

62 Centres de contrôles
Suivi de projet et des incidents ou suggestions

66 Erreurs d'ihm
Détecter des problèmes d'IHM non visibles

TDF TECH 2009 - www.pcsoft.fr - 5


Sommaire (SUITE)

TDF Tech 2009


Sommaire du support de cours

67 WebDev
68 Référencement
Optimiser le référencement d'un site WebDev

74 Paiement sécurisé
Mise en place d'un système de paiement sécurisé

76 Mashup
Mixer des données HyperFileSQL et des données Google

78 WebDev PHP
Création et déploiement d'un site PHP

81 Services Web
82 SOA
Réalisation d'une application "SOA" (Services Oriented Architecture)

84 SAAS
Réalisation d'une application "SAAS" (Software As A Service)

87 Déploiement d’applications
88 Déploiement
Choisir le type de déploiement adapté à une application

91 Déploiement WebDev
Personnalisation de la page indiquant la mise à jour du serveur

92 Déploiement mobile
Mise à jour d'une flotte de terminaux mobiles

93 Fonctionnalités spécifiques
94 Robot de surveillance
Configurer la surveillance d'une application critique

96 Databinding
Deux exemples concrets d'utilisation du DataBinding

98 Développement spécifique
Développer une application WinDev pour une utilisation sur Asus EEE-Top

100 Géolocalisation
Géolocaliser une flotte de téléphones mobiles

6 - TDF TECH 2009 - www.pcsoft.fr


Support de cours
I Annexes
II Annexe A
Quelques commandes du WLangage

IV Annexe B
Les principales touches de raccourci

TDF TECH 2009 - www.pcsoft.fr - 7


Abonnez-vous !
L90119
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............

En cas de paiement par carte bancaire,


FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC
vous pouvez nous faxer votre abonne-
□ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC
ment au :
+33 (0) 4 67 03 07 87 AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT
□ 2 ans - 8 N°+ 8 DVD : 299 euros HT
Note : une facture acquittée est systématique-
 Ci joint mon règlement de : ............. Euros TTC ment adressée.

□ Je règle par chèque.        J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard

□□□
            la somme de : ..................... Euros
□ Je règle par Carte Bancaire.      Cryptogramme :

□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année

Signature obligatoire du détenteur de la carte :


Nom du détenteur de la carte :
..........................................................

8 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Présentation

TDF TECH 2009 - www.pcsoft.fr - 9


WinDev

Présentation rapide de WinDev et de ses


fonctionnalités

* accès natif optionnel, ** accès natif


inclus.

Les outils
Des outils facilitant le développement
sont également fournis (WDMAP, WDOUTIL,
WDSQL, ...) ainsi que de nombreux exem-
ples et assistants réutilisables.
Des centres de contrôle permettent la
gestion du cycle de vie de vos applications
ainsi que leur administration.
Une aide en ligne vous guide tout au long
du développement de votre application.
Cette aide inclut également une aide à la
correction d’erreurs.
Les différents éditeurs seront utilisés,
depuis la définition d’une analyse jusqu’à
l’installation, en passant par toutes les
phases du développement (création des
fenêtres, des états, des traitements...),
sans oublier les sauvegardes.

Les bases de
WinDev est un AGL (Atelier de Génie liser et d’agir sur le graphe du projet. données
Logiciel). · Un éditeur d’analyses permettant l’accès à
tout type de base de données (HyperFileSQL, Le moteur HyperFileSQL sera utilisé pour
L’éditeur d’IHM de HyperFileSQL Client/Serveur, xBase, MySQL, les fichiers de données des applications.
AS/400*, Oracle*, SQL Server*, Access**, La base de données HyperFileSQL est dis-
WinDev ODBC, OLE DB, ... ) ponible en mode Classic ou Client/Serveur
WinDev permet de développer simplement · Un éditeur UML permettant une modé- et est librement diffusable avec les appli-
tout type d’applications Windows dans les lisation objet de vos données et traite- cations WinDev.
domaines de la gestion, de l’industrie, du ments.
médical, etc. · Un éditeur d’IHM avec correcteur d’in- L’utilisation d’autres moteurs de base de
terface en temps réel. données est également possible sur le même
Les applications développées peuvent principe.
· Un éditeur de code évolué (avec assis-
inclure l’accès à des bases de données.
tants, vérification du code saisi, coloration
WinDev propose un puissant moteur de
syntaxique, aide contextuelle …) incluant
base de données : HyperFileSQL.
un puissant débogueur.
Il est conseillé d’utiliser HyperFileSQL pour
· Un éditeur de requêtes pour les sélections
vos applications afin d’obtenir les meilleu-
d’enregistrements dans les fichiers.
res performances dans vos traitements de
· Un éditeur d’états.
fichiers. Une version HyperFileSQL Client/
· Un éditeur d’aide permettant de générer
Serveur est aussi disponible.
des fichiers d’aide au format CHM.
L’environnement de développement inté- · Un éditeur d’installation.
gré de WinDev se compose de différents · Un éditeur de dossier technique repre-
éditeurs : nant intégralement toutes les informations
· Un éditeur de projet permettant de visua- techniques de votre projet.

10 - TDF TECH 2009 - www.pcsoft.fr


Présentation

TDF TECH 2009 - www.pcsoft.fr - 11


WinDev Mobile

Présentation rapide de WinDev Mobile et de


ses fonctionnalités

• Un éditeur d’installation.


• Un éditeur de dossier technique repre-
nant intégralement toutes les informations
techniques de votre projet.

Des outils facilitant le développement


sont également fournis (WDREGISTRE,
WDCAPTURE, WDSYNCHRO, ...) ainsi
que de nombreux exemples et assistants
réutilisables.

Des centres de contrôle permettent la


gestion du cycle de vie de vos applications
ainsi que leur administration.

Une aide en ligne vous guide tout au long


du développement de votre application.
Cette aide inclut également une aide à la
correction d’erreurs.

Le moteur HyperFileSQL Mobile sera utilisé


pour les fichiers de données de l’appli-
cation.

L’utilisation d’autres moteurs de base de


données est également possible sur le même
principe.
WinDev Mobile permet de dévelop- Environnement
per simplement tout type d’applica-
L’environnement de développement intégré
tions destinées à être utilisées sur
de WinDev Mobile se compose de différents
un Pocket PC, un SmartPhone, et
éditeurs :
la plupart des terminaux mobiles • Un éditeur de projets permettant de
(Symbol, Psion, ...). visualiser et d’agir sur le graphe du pro-
jet.
• Un éditeur d’analyses permettant
Présentation l’accès à tout type de base de données
Les applications développées peuvent (HyperFileSQL, HyperFileSQL Client/
inclure l’accès à des bases de données. Serveur).
WinDev Mobile inclut un puissant moteur de • Un éditeur UML permettant une modé-
base de données : HyperFileSQL Mobile. lisation objet de vos données et traite-
ments.
Il est conseillé d’utiliser HyperFileSQL pour
• Un éditeur d’IHM avec correcteur d’in-
vos applications afin d’obtenir les meilleu-
terface en temps réel
res performances dans vos traitements de
• Un éditeur de code évolué (avec assis-
fichiers. Une version HyperFileSQL Client/
tants, vérification du code saisi, coloration
Serveur est aussi disponible.
syntaxique, aide contextuelle) incluant
WinDev Mobile permet également d’accé- un puissant débogueur
der aux bases de données CEDB, bases de • Un éditeur de requêtes pour les sélections
données standards des Pockets PC. d’enregistrements dans les fichiers.
• Un éditeur d’états.

12 - TDF TECH 2009 - www.pcsoft.fr


Présentation

TDF TECH 2009 - www.pcsoft.fr - 13


WebDev

Présentation rapide de WebDev et de ses


fonctionnalités

la définition d’une analyse jusqu’à l’ins-


tallation, en passant par toutes les phases
du développement (création de pages,
traitements, états, etc.), sans oublier les
sauvegardes.

Les Concepts
Internet
Les différents services de l’In-
ternet
Le terme Internet regroupe plusieurs ser-
vices d’utilisation différente :
• FTP (File Transfer Protocol) est un ser-
vice permettant de transférer des fichiers
d’un ordinateur vers un autre à travers
Internet.
• SMTP (Simple Mail Transfer Protocol)
permet d’envoyer des messages ou mails
à un utilisateur défini. Chaque utilisateur
doit disposer d’une adresse Email qui lui
sert de boîte aux lettres.
• HTTP (HyperText Transfer Protocol). HTTP
est un protocole de niveau application qui
est utilisé pour le transfert de pages sur
Internet.
WebDev est un AGL (Atelier de Génie tants, vérification du code saisi, coloration
Logiciel) orienté développement de syntaxique, aide contextuelle …) incluant Chacun de ces services nécessite un gestion-
un puissant débogueur. naire de services installé sur un serveur :
sites Intranet et Internet.
• Un éditeur de styles incluant police, • Le gestionnaire de services FTP gère l’hé-
WebDev permet de développer tout
couleur, position, etc. bergement des fichiers, les droits d’utilisa-
type de sites dynamiques incluant tion des fichiers et la réponse aux demandes
• Un éditeur de requêtes pour les sélections
l’accès à des bases de données. d’enregistrements dans les fichiers. en provenance des autres postes.
Il permet aussi de développer des • Un éditeur d’états. • Le gestionnaire de services SMTP prend en
sites semi-dynamiques et stati- • Un éditeur de dossier technique repre- charge les demandes d’envoi de messages et
ques. nant intégralement toutes les informations le routage vers les serveurs POP (réception
techniques de votre projet. des messages) concernés.
Présentation de • Un éditeur d’installation. • Le gestionnaire Web (www) permet
WebDev * accès natif optionnel, ** accès natif l’hébergement des pages et répond aux
inclus demandes de consultation de la part des
WebDev est composé de différents édi- postes client.
teurs : L’éditeur d’installation assure la mise en
• Un éditeur de projet permettant de visua- place des sites créés, ainsi que leur main- Le Web en détail
liser et d’agir sur le graphe du projet. tenance. Cet outil permet de réaliser une Les pages Web sont visualisées sur un poste
• Un éditeur de pages. installation sur le serveur via FTP ou par par l’intermédiaire d’un navigateur Web
• Un éditeur d’analyses permettant média physique (CD, Zip, etc.). (Internet Explorer, FireFox, Opera, etc.).
l’accès à tout type de base de données Des outils facilitant le développement
Le navigateur interprète le contenu des
(HyperFileSQL, HyperFileSQL Client/ sont également fournis (WDMAP, WDOUTIL,
fichiers au format HTML décrivant les pages.
Serveur, MySQL, xBase, AS/400*, Oracle*, WDSQL, etc.) ainsi que de nombreux exem-
On parle de pages HTML.
SQL Server*, Access**, OLE DB, etc.). ples et assistants réutilisables.
WebDev génère automatiquement le code
• Un éditeur de code évolué (avec assis- Les principaux éditeurs sont utilisés, depuis

14 - TDF TECH 2009 - www.pcsoft.fr


Présentation
HTML et JavaScript.
Fonctionnement Server, Access, OLE DB, etc.), les traite-
Il est possible d’afficher directement une ments de calcul.
page dans un navigateur en tapant son URL d’une application Ces traitements sont écrits en
dans la zone adresse du navigateur. WebDev WLangage.
L’URL (Uniform Resource Locator) corres- Une application WebDev hébergée sur un
pond au chemin d’accès de la page sur le 2. Les traitements sur le poste client
serveur peut être exécutée en appelant une Les traitements exécutés sur le poste client
serveur qui l’héberge, par exemple : URL particulière depuis un navigateur. Par
http://www.monserveur.com/page3.htm sont les traitements de contrôle de saisie,
exemple : http://www.monserveur.com/ de vérification qui ne nécessitent pas d’ac-
Si l’URL ne correspond pas à une adresse wd140awp/wd140awp.exe/CONNECT/ céder au serveur. Ces traitements utilisent
valide, une erreur de connexion est retour- monappli uniquement les informations contenues
née dans l’écran du navigateur. Le lanceur de WebDev ‘wd140awp.exe’ dans la page. Ces traitements peuvent être
Si l’URL est valide, la page demandée s’af- permet d’exécuter l’application sur le écrits en JavaScript ou WLangage. Dans ce
fiche dans le navigateur. L’utilisateur peut serveur grâce au serveur d’application dernier cas, WebDev se charge de convertir
alors déclencher une action en cliquant wd140session.exe. automatiquement le code WLangage en
sur un lien ou un bouton. La requête cor- Le serveur d’application construit JavaScript pour qu’il puisse être exécuté
respondante est alors envoyée au serveur dynamiquement la première page de l’ap- par le navigateur.
qui l’analyse. plication et l’envoie au navigateur par
l’intermédiaire du serveur Web. 3. Administrateur WebDev
Le lien permet de lancer le chargement
L’administrateur WebDev est un exécutable
d’une autre page ou bien de lancer une Principe de programmation installé sur le serveur.
application Web. WebDev L’administrateur permet de configurer
Le débit entre le serveur Internet et le poste le nombre de connexions autorisées en
client est plus lent qu’avec un réseau local
Site statique, classique. Les échanges de données entre
même temps pour le serveur, par site, par
utilisateur. Il permet aussi de fixer le temps
semi-dynamique ou le poste client et le serveur doivent donc maximum d’exécution d’une requête et
dynamique ? être réduits pour que l’application puisse le temps limite pour la déconnexion des
s’exécuter sans ralentissement. WebDev utilisateurs inactifs.
· Le site statique est composé de pages permet de différencier les traitements L’administrateur peut à tout moment affi-
conçues à l’avance de manière définitive. exécutés sur le serveur et les traitements cher la liste des utilisateurs connectés
Dans ce cas, le contenu des pages n’évo- exécutés sur le poste client. au site.
luera pas dynamiquement en fonction d’un
choix de l’utilisateur. 1. Les traitements sur le serveur
• Un site semi-dynamique est un site stati- Les traitements exécutés sur le serveur sont
que composé de pages conçues à l’avance les traitements principaux de l’application.
mais enrichies par une base de données. Ils concernent la gestion de la base de
Dans ce cas, le contenu des pages n’évo- données (HyperFileSQL et HyperFileSQL
luera pas dynamiquement en fonction d’un Client/Serveur, xBase, AS/400, Oracle, SQL
choix de l’utilisateur. L’un des meilleurs
exemples est un catalogue de pièces déta-
chées.
• Un site dynamique est constitué de pages
enrichies de données provenant d’une base
de données. Il est nécessaire d’exécuter
des traitements d’accès aux données sur
le serveur permettant de constituer la
page.

WebDev permet de développer des sites


dynamiques composés de pages, de traite-
ments serveur (accès aux bases de données,
calculs, etc.) et de traitements exécutés
par le navigateur (contrôles, traitements
répétitifs, etc.).
WebDev permet aussi de développer des
sites statiques et semi-dynamiques.

TDF TECH 2009 - www.pcsoft.fr - 15


PC SOFT à votre service

• Séminaire de formation,
• Consulting,
• Assistance Directe,...
lyse, vous montre des nouveautés utiles
N’hésitez pas à nous
dans votre cas de figure, vous propose
contacter: un assistanat
est toujours rentable pour des optimisations de votre code, valide
vos développements. vos modes d’utilisation, ...
Vous serez ravi de l’efficacité de son inter-
vention ! Budgétez d’ores et déjà la pro-
chaine intervention !

Un assistanat vous fait gagner des


journées de développement!
Quelques exemples de sujets traités :
• Simplification du code et mise en place de
nouvelles techniques : HyperFileSQL Client/
Serveur, Socket, Web Services, Composants,
Patchs, Configurations, …
• Transformation de modules développés
avec WinDev en Services Web.
• Optimisation de traitements avant la
recette de l’application, validation d’ana-
lyse avant de débuter une application.

Assistance Directe
Formation Le montant de ces formations est déduc-
tible du “1,5 % Formation”.
Un complément efficace du
Séminaires de formation pour Support Technique Gratuit
WinDev et WebDev Consulting Tout projet important ou stratégique doit
PC SOFT organise à Paris, chaque semaine, bénéficier d’une “Assistance Directe” !
des séminaires de formation à WinDev et Profitez de l’expérience d’un ingé- L’Assistance Directe permet d’une part
WebDev, de différents niveaux : Prise en nieur de PC SOFT sur votre site de bénéficier d’un contact téléphonique
main, Perfectionnement, Expert, Client/
Un consultant PC SOFT peut être délégué immédiat avec un ingénieur spécialisé, et
Serveur, ...
chez vous, pour une durée de 1 à 5 jours. d’autre part de choisir les sujets à traiter,
Ces séminaires, animés par des ingénieurs
Un ingénieur PC SOFT connaissant à la et ce pour une durée que vous définissez
PC SOFT expérimentés, permettent de
fois votre domaine et les outils que vous vous-même. Cela vous permet de résoudre
découvrir et de maîtriser WinDev, WebDev
utilisez. immédiatement les sujets qui vous posent
et WinDev Mobile selon un plan efficace.
L’ingénieur PC SOFT répond directement problème.
Consultez le calendrier des séminaires (le
à vos questions, travaille sur votre projet Le contact téléphonique est garanti sous
détail des stages et les contenus péda-
réel et votre configuration réelle. Vous 8 heures ouvrables, ce qui vous permet
gogiques sont disponibles sur notre site
obtenez les réponses précises qui vous font une meilleure efficacité.
Web : www.pcsoft.fr), vous trouverez LA
gagner un temps précieux, et vous assurent Ce service est disponible sur abonne-
formation adaptée à votre expérience et
des bonnes orientations technologiques et ment.
à votre besoin.
méthodologiques.
Suivre une formation organisée par PC SOFT Notre conseil ? Commandez 1 jour de consul- Contactez le service commercial pour
est toujours rentable : c’est se donner les ting pour 100 jours de développement. plus d’informations (Fabrice CHAMBON
moyens de maîtriser WinDev et WebDev Et, chaque année, prenez l’habitude de au 04.67.032.032).
dans les meilleurs délais, ou d’en découvrir faire venir (juste 2 jours) chez vous un
la face cachée, encore plus puissante ! ingénieur PC SOFT, pour profiter d’une
Inscrivez-vous vite! expertise de toutes les nouveautés.
Ces séminaires peuvent également être Sur votre projet, dans vos locaux, en votre
organisés dans vos locaux, en France et présence, l’ingénieur PC SOFT valide l’ana-
à l’étranger.

16 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Les graphiques

TDF TECH 2009 - www.pcsoft.fr - 17


Champs Graphe "donuts"

Utilisation du champ graphe de WinDev 14 :


Réalisation d'un graphe "donuts"

Type de graphe
L'assistant de création d'un champ graphe pro-
pose de choisir le type de graphe à générer :
il est possible de réaliser des graphes de type
secteurs, donuts, hémicycles, histogrammes,
courbes, aires, radars, boursiers, ...
Il suffit de choisir le type "donuts", puis de
passer au plan suivant.

Paramètres du graphe
Il est ensuite possible de modifier les paramè-
tres généraux du graphe qui sera créé :
• Titre du graphe et sa position (par exemple
"Répartition du chiffre d'affaires par type
de séjour"),
• Affichage ou non d'une légende et sa posi-
tion,
• Apparence générale du graphe.

Séries de données
Dans un premier temps, il convient de défi-
nir la source des étiquettes de catégories.
Les étiquettes de catégories définissent les
libellés qui seront affichés dans la légende
WinDev propose de nouveaux types de graphes : les du graphe. Pour ce graphe, les étiquettes de
donuts, les radars, les hémicycles, ... catégories correspondent au type de séjour et seront remplies par
une rubrique de la requête.
WinDev met à votre disposition de nombreux types de
Pour cela, il suffit d'indiquer que :
graphes, ce qui vous permet de toujours représenter •  la source correspond au "Parcours d'un fichier ou d'une
au mieux les données à afficher. requête".
• les données correspondent à la rubrique TypeSéjour de la requête
REQ_CAParTypeDeSéjour.
Projet d'illustration
Le projet utilisé pour illustrer ce sujet est "WD Champs" (présent
Ensuite, il faut indiquer la série de données. Les séries de données
sur le DVD).
définissent les valeurs du graphe. Selon le type du graphe, il est
possible de définir une ou plusieurs séries :
Création d'un graphe "donuts" • pour les graphes de type "donuts", hémicycle, secteur : une seule
série de données doit être définie.
Ce sujet présente la création d'un graphe de type "donuts" qui • pour les autres types de graphes, il est possible de définir autant
représente la répartition du chiffre d'affaires par type de séjour. de séries que nécessaire.
Ce graphe se base sur une requête existante de l'exemple "WD Pour ce graphe, les données correspondent au chiffre d'affaires et
Champs" : REQ_CAParTypeDeSéjour. seront donc remplies par la rubrique CA de la requête.
La création d'un graphe "donuts" s'effectue très simplement, comme Pour cela, il suffit de :
pour tout type de graphe, à l'aide de l'assistant de création de • ajouter une série en cliquant sur le bouton "+" situé à droite
graphe. Pour afficher cet assistant, il suffit de créer un nouveau de la table.
champ de type graphe dans une fenêtre : • indiquer que la source correspond au "Parcours d'un fichier ou
• soit à partir du menu "Insertion .. Champ .. Graphe", d'une requête".
• soit par le bouton adéquat. • indiquer que les données correspondent à la rubrique CA de la
requête REQ_CAParTypeDeSéjour.

18 - TDF TECH 2009 - www.pcsoft.fr


Les graphiques
sible, par exemple, de modifier :
•  le type de graphe. Dans notre exemple, il est possible par
exemple d'afficher un graphe de type hémicycle ou secteur en
remplacement du "donuts".
• les polices du graphe,
• la légende (visibilité, position),
• le quadrillage,
• la position des axes,
• etc.

Personnalisation du graphe
Bien sûr, le graphe est entièrement personnalisable.
En version 14, il est possible de déplacer, directement dans l'éditeur,
la légende, le titre du graphe et le graphe lui-même.
Chaque type de graphe dispose de paramètres spécifiques qu'il
est possible de modifier.
Pour un graphe de type donuts par exemple, il est possible de
modifier :
• la taille du trou.
• l'excentrage des parts du donuts.
Il suffit enfin de donner un nom au champ graphe qui va être créé Ces paramètres sont accessibles dans la fenêtre de description du
et de valider l'assistant. Le graphe est automatiquement ajouté graphe "donuts", onglet "Général".
dans la fenêtre.

FAA sur les graphes


Sur les graphes en exécution, les utilisateurs disposent de
FAA (Fonctionnalités Automatiques de l'Application) acces-
sibles par un simple clic droit sur le graphe.
Il est
pos-

TDF TECH 2009 - www.pcsoft.fr - 19


Champs graphes Avancés

Utilisation avancée des champs graphes

Il est ensuite nécessaire de


paramétrer le mode 9 ima-
ges pour l'image indiquée.
Le mode 9 images permet de
définir la façon dont l'image
va être redimensionnée.
Le principe est simple :
l'image est découpée en 9
zones distinctes. Pour cha-
que zone, il suffit de choisir
le comportement à adopter
lors du redimensionnement
de l'image : la zone peut être
répétée, étirée, laissée tel
qu'elle, rendue invisible.
Dans notre exemple, la tête
du palmier doit rester telle
qu'elle : elle ne doit être ni
répétée, ni étirée. Il suffit
donc de la définir comme
marge haute.
Le reste du palmier doit lui
être étiré.

Notre conseil
En plus de nouveaux types de graphes, WinDev pro- Pour obtenir une image qui
pose également des nouveautés sur des types de soit propre, bien détourée, lors de l'exécution, il est conseillé
graphes existants : personnalisation des images d'un d'utiliser :
histogramme, zoom sur une courbe, ... • soit une image au format BMP, en indiquant comme couleur de
transparence la couleur du coin haut gauche.
• soit une image au format PNG, qui inclue directement la trans-
Projet d'illustration parence souhaitée.
Le projet utilisé pour illustrer ce sujet est "WD Champs" (présent
sur le DVD).

Personnalisation des images d'un


histogramme
WinDev permet de personnaliser les graphes de type histogrammes.
Il est possible par exemple de remplacer les barres habituelles
par des images différentes.
Pour utiliser une image en guise de barre, il suffit de :
• ouvrir la fenêtre de description du champ graphe. Cette fenêtre
peut être ouverte soit par le menu contextuel, soit par double-clic
sur le champ graphe, soit par le raccourci "Alt + Entrée",
• afficher l'onglet "Séries",
• saisir le chemin de l'image souhaitée dans "images des barres
d'histogrammes".

20 - TDF TECH 2009 - www.pcsoft.fr


Les graphiques
Activation du zoom dans un graphe Graphe dans un Etat
courbe Tous les types de graphes disponibles dans les fenêtres sont éga-
lement disponibles dans les états.
L'utilisateur peut maintenant zoomer sur une partie d'un graphe
Pour insérer un champ graphe dans un état, plusieurs choix sont
courbe. Cela permet d'observer de façon plus précise les variations
possibles :
d'une courbe.
•  créer directement un état sur graphe, ou état sur table et
Le zoom sur une partie du graphe s'effectue très simplement :
graphe
•  soit en modifiant les ascenseurs horizontal et vertical pour
•  insérer un champ graphe par le menu "Insertion .. Nouveau
réduire la zone d'affichage.
champ .. Graphe", ou par le bouton adéquat de la barre d'outils
• soit en dessinant un rectangle de sélection directement sur le
contextuelle.
graphe.
• soit en utilisant une combinaison de touche : Ctrl + "+" pour
Tout comme les champs graphes d'une fenêtre, les données d'un
zoomer, Ctrl + "-" pour dézoomer.
graphe dans un état peuvent provenir d'un fichier de données,
• soit en utilisant la roulette de la souris en maintenant le bouton
d'une requête, ou de la programmation.
Ctrl enfoncé.

Pour permettre aux utilisateurs de zoomer sur une partie du


graphe, il suffit de :
• ouvrir la fenêtre de description du graphe, onglet "Détails",
• cocher l'interrupteur "Autoriser le zoom horizontal" et/ou l'in-
terrupteur "Autoriser le zoom vertical".

TDF TECH 2009 - www.pcsoft.fr - 21


Plus d'informations sur ces sujets ?

En formation
"WinDev Perfectionnement"

Dans WinDev
Exemples didactiques "WD Grapheur Java",
"WD Graphe", "WD Graphe Boursier"

Dans WebDev
Exemples didactiques "WW_WebBourse",
"WW_TraceCourbe", "WW_Camembert"

22 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Gestionnaire de sources

TDF TECH 2009 - www.pcsoft.fr - 23


Gestionnaire de sources

Fonctionnement, historique, différences


de sources, fusion de sources et gestion de
branches

L'utilisation du GDS (Gestionnaire De Sources) offre des Cette fonctionnalité permet aux développeurs de voir les diffé-
avantages non négligeables pour tout développement rences de sources entre deux versions d'un élément (une fenêtre,
de projets WinDev, WebDev ou WinDev Mobile. Et ce, une classe, etc.) et si nécessaire de fusionner les codes sources
pour reporter une correction par exemple.
que le projet soit réalisé par un seul développeur ou
une équipe de développement.
Historique
Pour cela, il suffit d'accéder à l'historique de l'élément accessible
Principe de fonctionnement via le menu "GDS .. Historique de l'élément". Depuis cette fenêtre,
La version de référence des projets est située sur un serveur : le développeur a accès à toutes les versions de l'élément depuis sa
c'est la base de source. Chaque développeur possède une copie création. À côté de chaque version se trouve un commentaire. Ces
locale des projets sur lesquels il travaille. commentaires, ce sont les commentaires saisis par les développeurs
lors de la réintégration de l'élément dans le GDS.
Lorsque le développeur a besoin de modifier un élément, il extrait
l'élément, c'est-à-dire qu'il indique à la base de source que cet
élément est en cours de modification.
Le développeur fait ses modifications et lorsqu'il a terminé, il
réintègre l'élément, c’est-à-dire qu'il remet l'élément modifié
dans la base de source.Les autres développeurs peuvent alors se
mettre à jour.

Différences et fusion de sources


De nombreux outils sont livrés en standard avec le GDS pour
effectuer des opérations avancées. Un des outils indispensables
est la gestion des différences de sources.

24 - TDF TECH 2009 - www.pcsoft.fr


Gestionnaire de sources
Note : che" du menu "GDS .. Branches".
Il est possible d'imposer la saisie d'un commentaire en définissant Mais si la branche a été "oubliée", ce n'est pas grave  : il n'est
une "politique de réintégration" depuis l'explorateur du GDS. Cette jamais trop tard pour créer une branche, puisqu'il est possible de
fonctionnalité est décrite plus loin dans cet article. le faire a posteriori via l'historique du projet.
Dans ce cas, il suffit de :
•  Ouvrir l'historique du projet par le menu "GDS .. Gestion du
Récupération et fusion projet .. Historique du projet". L'historique du projet permet de
Depuis l'historique, il est possible de récupérer l'élément tel qu'il voir toutes les versions du projet qui ont été réintégrées.
était à une date antérieure. • Sélectionner la version servant pour faire la branche
Pour récupérer un élément il y a plusieurs possibilités : • Valider en cliquant sur "Créer une branche".
• récupérer tout l'élément. C’est-à-dire l'élément complet (une • Nommer la branche (par exemple "Version Cliente").
fenêtre par exemple). • Indiquer le répertoire pour cette branche sur le poste de déve-
Pour récupérer l'élément complet, il suffit de sélectionner la version loppement.
à récupérer et de cliquer sur le bouton "Obtenir". •  Indiquer le répertoire pour cette branche dans la base de
Cette option n'est intéressante que si l'élément n'a pas beaucoup source.
évolué. En effet, si des évolutions ont été faites, elles sont
écrasées.
• récupérer uniquement le bout de code concerné. Il suffit de
cliquer sur le bouton "Comparer".
Dans ce cas, WinDev calcule les différences entre la version actuelle
de l'élément et la version sélectionnée dans l'historique.
Le développeur visualise alors toutes les différences entre les deux
éléments (différences de code ou d'interface).

Cette nouvelle branche peut maintenant évoluer en parallèle


du "tronc commun" ! C’est-à-dire que si des corrections sont
nécessaires dans la version en clientèle, le développeur peut les
Lors d'un clic sur l'icône en forme d'oeil, le développeur visualise
effectuer sereinement sur la branche.
les deux codes en parallèle :
• à gauche le code de l'élément actuel, Report des évolutions.
• à droite le code de l'élément dans l'historique.
Pendant le cycle de vie du projet, il restera à récupérer les
Il est alors possible de récupérer une partie du code grâce aux corrections et les évolutions développées dans le tronc commun.
flèches situés au niveau de chaque différence détectée. Cette opération est réalisée depuis le menu "Branches..Récupérer
des modifications depuis une branche".

Gestion des branches


Autre fonctionnalité du GDS, la gestion des branches. Une branche
sert à faire évoluer N versions d'un même projet en parallèle.
Par exemple, lorsque vous déployez une version en clientèle, pour
garder les sources de la version déployée au cas où vous devriez
faire des corrections, il est intéressant de créer une branche. En
parallèle, sur le tronc commun, les développeurs peuvent continuer
les développements pour la version future.
Mais la gestion des branches permet également de gérer des
versions différentes par client.
En effet, l'avantage des branches avec le GDS, c'est que le
développeur bénéficie du report assisté des modifications d'une
branche à une autre.

Créer une branche a posteriori Il est possible de récupérer toutes les modifications effectuées
La création d'une branche s'effectue par l'option "Créer une bran- sur un élément ou seulement une partie.

TDF TECH 2009 - www.pcsoft.fr - 25


Sécurité et GDS

Définition de droits et d'une politique


de réintégration dans le Gestionnaire de
Sources

Un gestionnaire de sources est un élément sensible : Notre Conseil


il contient les sources mais également des comptes, Pour une sécurité optimale, nous vous conseillons d'utiliser le GDS
des mots de passe, etc. en mode Client/Serveur.

Il est donc important que l'accès y soit contrôlé. WinDev Type de droits
permet de sécuriser l'accès aux éléments contenus Les droits sont séparés en trois groupes :
dans un projet au travers de deux fonctionnalités : • les droits de lecture
• la gestion des droits. • les droits d'écriture
• la définition de politique de réintégration. • le droit de modifier les droits
Dans les droits d'écriture, un nouveau découpage est disponi-
La gestion des droits ble  :
Les droits peuvent se définir sur un répertoire, c’est-à-dire sur un • extraire et réintégrer un élément
ou plusieurs projets, ou sur des éléments particuliers : fenêtre, • ajouter un élément
état, requête, image, etc… • renommer un élément
• supprimer un élément
Pour définir les droits sur une base de sources, il suffit de lancer • supprimer définitivement un élément.
l'Administrateur du GDS (disponible depuis le menu "GDS" de
WinDev, WebDev ou WinDev Mobile).
Lors de la sélection d'un répertoire de l'arborescence du GDS (réper-
toire d'un projet ou répertoire autre), il est possible d'accéder à la
gestion des droits pour ce répertoire depuis le menu contextuel en
sélectionnant l'option "Propriétés", puis l'onglet "Droits".
En cliquant sur le bouton "Ajouter", il est possible de définir les
droits pour ce répertoire et ses sous-répertoires.

Suppression ou Suppression définitive ?


La liste des utilisateurs et des groupes d'utilisateurs est automa- Lors de la suppression d'un élément, le GDS demande de choisir
tiquement gérée par le GDS en fonction de son type : entre une suppression et une suppression définitive. En effet, la
• Pour un GDS utilisant un serveur HyperFileSQL Client/Serveur, suppression "normale" ne fait qu'archiver l'élément.
il s'agit des utilisateurs et des groupes d'utilisateurs du serveur C’est-à-dire qu'il n'apparaît plus ni dans le projet ni dans le
HyperFileSQL. répertoire du GDS, mais il apparaît encore dans l'onglet “Éléments
• Pour un GDS utilisant une base de données HyperFileSQL Classic, supprimés”.
il s'agit des utilisateurs et des groupes d'utilisateurs des Centres
de Contrôle.

26 - TDF TECH 2009 - www.pcsoft.fr


Gestionnaire de sources
L'historique de l'élément est alors conservé, ce qui permet de le
Politique de réintégration
restaurer en cas de fausse manipulation.
Une politique de réintégration est un ensemble de règles qui
En revanche, la suppression définitive supprime l'élément et son doivent être respectées pour pouvoir réintégrer un élément dans
historique : l'élément ne pourra pas être restauré et son histori- le GDS.
que est perdu. La suppression définitive est donc une opération
spécifique très "dangereuse". Par exemple, il est possible de décider que chaque développeur
doit faire au moins un Go de l’élément qu’il a modifié avant de
le réintégrer dans le GDS.
Droits sur un élément
Il est également possible de définir des droits spécifiques sur un Une politique de réintégration se définit soit :
élément, une fenêtre par exemple. • dans WinDev par le menu "GDS .. Politique de réintégration"
Il est ainsi possible de donner des droits sur un élément d'un pro- • dans l’administrateur du GDS.
jet (un élément partagé par exemple), sans pour autant donner Dans le cas ci-dessus, ce qui a été défini pour ce projet, c’est que
des droits sur un projet complet. Ce type de définition de droits tous les éléments réintégrés ne doivent contenir :
peut être notamment utile lors de l'intégration des nouveaux • aucune erreur,
développeurs ou de stagiaires. • aucun warning,
• et que le projet ait été lancé au moins 1 fois.
Pour modifier les droits sur un élément, la définition des droits
s'effectue également depuis le menu contextuel en sélectionnant
Un peu de souplesse...
cette fois l'élément.
Il est possible d'utiliser la politique de réintégration juste comme
Par défaut, un élément hérite des droits du répertoire parent, un garde-fou, par exemple pour prévenir le développeur qu’il n’a
mais il est possible de définir un droit spécifique à cet élément pas fait Go, mais sans le bloquer. Dans ce cas, il suffit d'activer la
en cochant l'option "Droits spécifiques". case "ces règles peuvent être ignorées" .
La définition des droits se fait alors sur le même principe que la
définition des droits sur un répertoire, les droits "locaux" étant
prioritaires sur les droits des niveaux supérieurs.
Comme pour la définition de droits "windows" sur un répertoire,
il est conseillé de donner un minimum de droits à la racine du
Gestionnaire De Source et d'ajouter au cas par cas, les droits en
écriture par groupe d'utilisateurs. Cette possibilité doit être utilisée à bon escient car définir une poli-
tique de réintégration est un gage de qualité des applications.
Note : Il est tout à fait possible de définir un utilisateur "invité",
membre du groupe "utilisateur du GDS" au niveau du serveur
HyperFileSQL, mais ne disposant que de droits en lecture sur Notre astuce
l'ensemble des projets. Il est possible de partager une même politique de réintégration
entre plusieurs projets :
Important : Les utilisateurs et les groupes ont des droits sur le
• soit en partageant dans le GDS le fichier "PolitiqueDeRéintégration.
serveur HyperFileSQL lui-même. Il est donc important d'utiliser le
gds" .
groupe d'utilisateurs "Utilisateurs du GDS" ou de limiter les droits
Ce fichier est situé à la racine du projet dans le GDS.
accordés (par exemple, il est inutile et dangereux qu'un utilisateur
• soit directement en plaçant ce fichier dans le répertoire parent
du GDS dispose de droits pour arrêter le serveur HyperFileSQL).
de vos projets, dans le GDS.

Dans ce cas, un nouveau projet créé dans ce répertoire héritera


automatiquement de cette politique de réintégration.

Note :
Pensez à définir des droits sur ce fichier "PolitiqueDeRéintégration.
gds", il ne doit être modifiable que par le chef de projet.

TDF TECH 2009 - www.pcsoft.fr - 27


Abonnez-vous !
L90119
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............

En cas de paiement par carte bancaire,


FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC
vous pouvez nous faxer votre abonne-
□ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC
ment au :
+33 (0) 4 67 03 07 87 AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT
□ 2 ans - 8 N°+ 8 DVD : 299 euros HT
Note : une facture acquittée est systématique-
 Ci joint mon règlement de : ............. Euros TTC ment adressée.

□ Je règle par chèque.        J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard

□□□
            la somme de : ..................... Euros
□ Je règle par Carte Bancaire.      Cryptogramme :

□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année

Signature obligatoire du détenteur de la carte :


Nom du détenteur de la carte :
..........................................................

28 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Bases de données

TDF TECH 2009 - www.pcsoft.fr - 29


hyperfilesql

Comment optimiser les accès à


une base de données HyperFileSQL

HyperFileSQL est la base de données SQL livrée en Activation


standard avec WinDev, WebDev, et WinDev Mobile. L'activation des logs et des statistiques d'activités se paramètre dans
Cette base est disponible en mode classique et en l'onglet "Configuration" du Centre de Contrôle HyperFileSQL.
mode Client/Serveur. Pour activer les logs, il suffit de :
En version 14, des statistiques avancées sur l'utilisation • sélectionner "Logs",
• cocher la case "Activer l'enregistrement des appels au serveur
des serveurs HyperFileSQL sont disponibles et permettent
dans le fichier de log". Avec cette option, tous les appels au ser-
d'évaluer les traitements et requêtes à optimiser.
veur sont enregistrés avec la fonction qui a effectué l'appel (par
Ce sujet présente les différents moyens d'optimiser les exemple, un HExécuteRequête ou un HLitRecherche).
accès et traitements sur un serveur HyperFileSQL. Il est également possible d'enregistrer tous les paramètres des
appels pour avoir un log encore plus détaillé. Par exemple,
Logs et Statistiques pour savoir quelle requête a été exécutée, les paramètres de la
Les statistiques sur l'utilisation des serveurs sont accessibles dans le recherche, ...
Centre de Contrôle HyperFileSQL. Il suffit de sélectionner la base Pour activer les statistiques d'activités, il suffit de :
de données souhaitée et d'accéder à l'onglet "Logs et Statistiques". • sélectionner "Statistiques d'activités",
Depuis cet onglet, il est possible d'accéder aux logs du serveur et • cocher "Activer les statistiques d'activités du serveur".
aux statistiques d'activités.
Remarque :
Logs du serveur Pour que les modifications soient prises en compte, il est nécessaire
Les logs du serveur contiennent des informations sur les appels de cliquer sur le bouton "Appliquer".
au serveur, c’est-à-dire sur les requêtes envoyées par les appli- Une fois les logs d'exécution activés, il est possible d'afficher :
cations. • les requêtes les plus utilisées,
Les logs vont permettre de monitorer les applications qui utilisent • les requêtes les plus longues,
un serveur HyperFileSQL. Par exemple, il est possible de détecter • les appels de fonctions les plus longs,
des requêtes qui sont exécutées un nombre anormal de fois, des • les applications les plus consommatrices,
requêtes qui sont longues, ... • tous les logs.
Il suffit de sélectionner l'information à afficher et la plage de date
souhaitée, puis de cliquer sur le bouton "Afficher".

Optimisation des requêtes


À l’aide des logs du serveur HyperFileSQL, il est possible de détecter
les requêtes qui sont très utilisées et les requêtes qui prennent
du temps. Ces requêtes doivent être optimisées.
Pour optimiser une requête, WinDev dispose de l'optimiseur de
Statistiques d'activités requêtes, accessible via le menu "Projet .. Performances et amé-
liorations .. Optimiser les requêtes du projet".
Les statistiques d'activité permettent d'avoir des informations
sur la machine serveur HyperFileSQL. Par exemple la quantité
d'informations envoyée par le réseau, la quantité d'information
lue sur le disque,...
Les statistiques d'activités permettent de voir si le serveur est
correctement dimensionné pour supporter les charges qui lui sont
demandées : est-ce que la carte réseau est assez rapide, est-ce
que les disques sont assez rapides, ...

30 - TDF TECH 2009 - www.pcsoft.fr


Bases de données
L'optimiseur de requêtes permet en quelques clics de voir s'il depuis le serveur, aucune information ne transite par le réseau.
manque des clés dans les différents fichiers de données d'une Les procédures stockées sont particulièrement adaptées aux
base pour optimiser l'exécution des requêtes. traitements qui ne nécessitent pas l'intervention de l'utilisateur,
Il suffit de sélectionner les requêtes à vérifier, et de cliquer sur par exemple des traitements statistiques.
le bouton "Lancer l'analyse de performance". WinDev affiche
alors les clés à ajouter aux fichiers de données pour optimiser Création de procédures stockées
les requêtes.
Pour créer une procédure stockée, il suffit de faire un clic-droit
Si des clés manquantes ont été détectées, il suffit de cliquer sur
dans le treeview de l'analyse et de choisir l'option "Nouvelle col-
le bouton "Appliquer toutes les modifications" pour que WinDev
lection de procédure".
crée automatiquement les clés nécessaires.
Pour créer une nouvelle procédure dans cette collection, il suffit
Il suffit enfin de regénérer l'analyse avec modification automa-
de faire clic droit, option "nouvelle procédure".
tique des fichiers.
Les procédures stockées sont codées en WLangage, dans l'éditeur
Remarque : de code de WinDev.
Lorsqu'une requête est créée, WinDev effectue automatiquement
Remarque :
cette analyse de performance. Si une optimisation est possible,
• Si des requêtes sont utilisées dans des procédures stockées, il
une AAD (Aide Au Développement) sera affichée dans l'éditeur
est nécessaire de les ajouter à l'analyse en tant que "Requêtes
de requêtes.
stockées".
• Les contextes (variables globales, contexte HyperFileSQL) ne
sont pas partagés entre l'application et les procédures stockées.
Optimisation des accès Une procédure stockée n'a pas la moindre information sur le projet
WinDev, WebDev et WinDev Mobile permettent de manipuler des et inversement.
données HyperFileSQL de plusieurs manières :
•  par le code WLangage, avec les fonctions Hxxx, les POUR Déploiement des procédures stockées
TOUT, ... Pour mettre des procédures stockées sur le serveur, il est pos-
• par des requêtes, qu'elles soient définies sous l'éditeur ou saisies sible :
directement en SQL. • soit de lancer la modification automatique. En effet, la mise
Selon les cas d'utilisation, il est préférable d'utiliser l'une ou à jour auto ne fait pas QUE mettre à jour les fichiers. Elle met
l'autre des manières. également à jour les contraintes d'intégrité, les procédures et
les requêtes stockées.
En mode classique avec une base locale ou ré- • soit de ne mettre à jour que les procédures stockées. Pour cela,
il suffit de faire un clic droit dans le treeview de l'analyse, et de
seau :
choisir "Mettre à jour les éléments stockés".
• Pour une recherche unitaire, par exemple rechercher un enre-
gistrement précis, il est conseillé d'utiliser les fonctions Hxxx. Remarque :
• Pour une recherche qui doit récupérer plusieurs enregistrements, Pour appeler une procédure stockée depuis un projet, il suffit
il est possible d'utiliser indifféremment les ordres Hxxx, les POUR d'utiliser la fonction HExécuteProcédure, avec en paramètre :
TOUT ou les requêtes. •  le nom de la connexion vers le serveur qui doit exécuter la
procédure,
En mode Client/Serveur : • le nom de la procédure à exécuter,
• Pour une recherche unitaire, il est conseillé d'utiliser les fonc- • les paramètres à passer à la procédure stockée.
tions Hxxx.
• Pour une recherche multiple, il est conseillé de privilégier les
requêtes. Compression de trames
En mode Client/Serveur, le transfert réseau prend du temps.
En effet, en mode Client/Serveur, c'est le transit des informations HyperFileSQL Client/Serveur dispose de la compression de trames :
sur le réseau qui prend du temps. les paquets de données qui circulent entre les applications et le
Avec l'utilisation des requêtes, seul un aller-retour sur le réseau serveur sont compressés. Le volume de données qui transite est
est effectué : l'envoi de la requête à exécuter et la récupération donc moins important et les données circulent plus rapidement.
des résultats. Pour activer la compression des trames, il suffit de :
Les requêtes présentent également l'avantage de remplacer de •  utiliser la propriété ..Compression sur la connexion en
nombreuses lignes de code. Par exemple, une simple requête WLangage.
permet de remplacer deux boucles imbriquées; le code sera plus • cocher la case "Compresser les données" dans la description de
lisible et plus rapide. la connexion de l'analyse.
Remarque :
Cette compression de trames n'est à utiliser que sur des réseaux
Utilisation de procédures stockées lents : Internet, GPRS, ... Sur un réseau très rapide, le temps passé
Les procédures stockées sont des procédures écrites en WLangage à compresser et à décompresser les trames peut être plus important
qui s'exécutent directement sur le serveur de base de données. Ces que le temps de transfert de la trame non compressée.
procédures permettent d'optimiser la vitesse de traitements. En
effet, comme tous les accès à la base de données sont effectués

TDF TECH 2009 - www.pcsoft.fr - 31


HyperFileSql Full-text

Mise en œuvre d'index full-text dans une


application de gestion de contenu

Définition d'un index full-text


Dans l'analyse du projet se trouve un fichier "Document". Ce fichier
contient plusieurs rubriques :
• l'utilisateur qui a créé ce document,
• la date de création,
• le format du document,
• le document en lui même (contenu binaire),
• le contenu du document au format texte.
Pour indexer complètement le contenu, et obtenir des résultats
complets, un index full-text a été défini. Cet index est basé sur
le titre, le contenu au format texte et le nom du fichier.
Pour créer un index full-text, il suffit de :
• cliquer sur le bouton "Créer un Index Full-text" dans la fenêtre
de description d'un fichier.
• choisir les rubriques qui vont composer cet index full-text.
Ensuite, il est possible de spécifier différentes options d'indexa-
tion :
• la taille minimale des mots qui doivent être indexés,
• la gestion des balises RTF,
• la gestion des balises HTML,
• la gestion de la casse et de l'accentuation.
La recherche full-text de HyperFileSQL permet de recher-
Cet index full-text est automatiquement rempli par HyperFileSQL au
cher un mot ou une expression contenue dans des
moment de l'ajout ou de la modification d'un enregistrement.
rubriques de type texte ou mémo.
Il est ainsi possible de mettre en place rapidement un
"moteur de recherche" dans une application WinDev,
WebDev ou WinDev Mobile.
Pour bénéficier de cette fonctionnalité, le serveur
HyperFileSQL doit être en version 14.
Cette fonctionnalité est disponible sur les bases de
données Classic ou Client/Serveur.

Projet d'illustration
Le projet utilisé pour illustrer ce sujet est "WD GestionContenu"
(présent sur le DVD). Ce projet est une application de gestion de
contenu : elle permet de stocker le contenu de documents élec-
troniques (PDF, Emails, etc.). Le contenu de chaque document est
indexé pour ensuite être recherché très simplement.

Ce projet exploite le composant "Extraction", détaillée dans la


LST  75. Ce composant permet d'extraire le contenu texte de
fichiers classiques (PDF, DocX, XLSX, etc.). Reportez-vous à cette
LST pour plus de détail sur le fonctionnement et l'utilisation de
ce composant.

32 - TDF TECH 2009 - www.pcsoft.fr


Bases de données
Recherche par index full-text Il suffit de lui donner en paramètre :
• le nom du fichier
Pour rechercher des enregistrements dans la base de données à • les pages que l'on souhaite extraire
partir d'un index full-text, il suffit d'utiliser une requête. Dans • le mot de passe d'ouverture du PDF si besoin.
l'exemple, il s'agit de la requête REQ_RECHERCHEDOCUMENT_
Pour les autres documents, l'exemple "WD GestionContenu"
FULLTEXT.
utilise un composant livré dans la LST 75 : le composant
Dans la description de la requête, il suffit d'ajouter la rubrique index "ExtractionTexte".
full-text qui a été définie dans l'analyse. Il suffit alors d'indiquer
Ce composant permet d'extraire le texte brut des fichiers DOCX,
la valeur de recherche, soit une valeur fixe, soit un paramètre
OpenOffice Writer, Word, PDF, ...
de requête. Il est enfin possible de trier les résultats par ordre
de pertinence. En effet, pour chaque enregistrement trouvé, la
recherche associe un indice de pertinence

Ensuite, pour effectuer la recherche, il suffit d'exécuter la requête


comme n'importe quelle autre requête.

Indexation de document.
HyperFileSQL gère automatiquement l'indexation des textes HTML
et RTF, sans indexer les balises.
Pour le format PDF, WinDev dispose en standard de la fonction
PDFVersTexte qui permet de convertir un fichier PDF en texte
brut.

// Récupération du contenu texte


// d'un fichier PDF
sTexte = PDFVersTexte(…
  "C:\Mes documents\MonFichier.pdf")

TDF TECH 2009 - www.pcsoft.fr - 33


Plus d'informations sur ces sujets ?

En formation
"HyperFileSQL Client/Serveur"

Dans la LST 75
p18-19 : Comment le Faire ? Configuration
avancée d'un serveur HyperFileSQL
p12-13 : Indexation full-text et composant
"ExtractionTexte"

34 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

WinDev

TDF TECH 2009 - www.pcsoft.fr - 35


CHAMP Calendrier

Personnalisation du champ calendrier

Le calendrier peut également être activé


par programmation avec la propriété
BoutonCalendrier du WLangage.

// Active le bouton calendrier


du champ
S A I _ S a i s i e D a t e . .
BoutonCalendrier = Vrai

Utilisation de la
FAA du champ
date
Si le développeur n'a pas pensé à activer
le calendrier sur un champ date, l'utili-
sateur peut le faire lui-même. Il suffit,
lorsque l'application est en exécution,
de faire un clic droit sur le champ date
et de choisir l'option "Calendrier". Cette
fonctionnalité est une des nouvelles
FAA, Fonctionnalité Automatique des
Applications.

La version 14 propose un nouveau type de champ


avancé : le champ "Calendrier". Personnalisation du champ
Ce champ est disponible pour WinDev 14, WebDev 14 Calendrier
et WinDev Mobile 14. La personnalisation d'un champ calendrier est simple et s'effectue
comme pour n'importe quel autre champ de WinDev : il suffit de
Ce sujet présente la mise en place et la personnalisa-
paramétrer des styles.
tion d'un calendrier.
Pour personnaliser un calendrier, il suffit de cliquer sur le bouton
Projet d'illustration "Editer le calendrier" dans la fenêtre de description du champ
Le projet utilisé pour illustrer ce sujet est "WD Champs" (présent date souhaité.
sur le DVD).
Onglet "Détail"
Activation du calendrier sur un Dans l'onglet "Détail", il est possible de paramétrer :
• le premier jour de la semaine (par défaut, il s'agit du lundi).
champ date • le format d'affichage du mois. Ce format peut évidemment être
défini pour chaque langue du projet.
Le calendrier peut être mis en place très simplement sur un champ
• la visibilité et le libellé du bouton "Aujourd'hui".
de type date existant.
Onglet "Style"
Pour activer le calendrier, il suffit de cocher l'option "Afficher un L'onglet "Style" permet de personnaliser le style à proprement
bouton calendrier" dans la description du champ. parlé du calendrier : couleurs, images, polices, etc.

L'utilisateur peut alors sélectionner la date directement dans La gestion du style d’un calendrier est un peu particulière puisqu’elle
le calendrier, par simple clic sur le bouton situé à droite du est basée sur le principe d’héritage et de surcharge.
champ.

36 - TDF TECH 2009 - www.pcsoft.fr


WinDev
Cela signifie que la définition d'un style pour un
élément donné est prioritaire sur le style défini
par défaut.

Pour définir le style global du calendrier, il suffit


de modifier les différents styles présents de la
fenêtre en modifiant du style par défaut à l'aperçu
final, dans cet ordre.

Par exemple, pour personnaliser le calendrier


avec un fond bleu, le samedi et dimanche en gris
et le jour sélectionné en gras, cela se déroule
en 3 étapes.
Il convient d'abord d'appliquer le fond bleu au
calendrier. Il suffit pour cela de : Par exemple, il est possible de modifier la bulle d'aide affichée
• sélectionner le "Style par défaut". au survol d'un jour donné :
•  choisir une couleur de fond; par exemple pour un fond bleu
// Affiche une bulle personnalisée
clair : D7E7FF.
// pour le 2 mai 2009
• choisir la couleur "Transparent" pour les lignes paires et impai- CAL_MonCalendrier["20090502"]..Bulle = …
res.   "Anniversaire de Melle Cokilyne"

Ensuite, pour griser les jours du week-end, il suffit de : Le champ calendrier dispose de différents événements (pcode)
• sélectionner le style "Samedi". pour lesquels un traitement spécifique peut être défini :
• choisir une couleur de fond et de police de couleur grise ("Gris • affichage d'un mois,
clair" par exemple). • sélection d'un jour,
• appliquer les mêmes couleurs au style "Dimanche". • clic sur le bouton aujourd'hui.

Enfin, pour mettre en évidence le jour sélectionné, il suffit de : Le WLangage dispose également des familles de fonctions
• sélectionner le style "Sélection". CalendrierXXX et JoursFériéXXX pour manipuler un calendrier
• indiquer que la police est grasse. par programmation :
• CalendrierOuvre, CalendrierSelectPlus, etc.
Évidemment, une fois le style défini, il est possible de l'enregistrer • JourFériéAjoute, JourFériéSupprimeTout, etc.
pour le réutiliser dans les autres calendriers de l'application.
Pour enregistrer le style du calendrier, il suffit de cliquer sur le // Ajoute le jour de Pâques comme férié
bouton "Ajouter" de l'option "Ajouter ce style au projet". JourFériéAjoute(jfJourDePâques)
// Ajoute le 16 Mars comme jour férié
JourFériéAjoute("1603")
Manipulation d'un champ
calendrier
Il est également possible de créer un champ calendrier directement
dans la fenêtre, indépendamment d’un champ date.
Ce champ calendrier peut également être personnalisé sur le même
principe qu'un calendrier associé à un champ date.

Les différentes options du calendrier peuvent être paramétrées


par programmation.

TDF TECH 2009 - www.pcsoft.fr - 37


Champ Table

Utilisation de nouveautés du champ table

de la barre d'outils, soit par le menu


"Insertion .. Champ .. Table".

Si la table doit afficher des enregistre-


ments (table fichier), il est nécessaire
de paramétrer cette table comme étant
une table de type "fichier mémoire".
En effet, pour que WinDev puisse orga-
niser les enregistrements selon les
ruptures, les données doivent être
en mémoire.

Rappel sur les tables fichiers


mémoires
Une table fichier mémoire permet de
bénéficier de :
• tous les avantages des tables mémoi-
res : le tri sur toutes les colonnes, la
recherche avec la loupe, ...
•  tous les avantages des tables
fichiers : la modification en cascade
par exemple.

Pour utiliser une table fichier mémoire,


il suffit de :
En version 14, le champ table offre de nouvelles pos- •  spécifier "Fichier chargé en
mémoire"
sibilités : ruptures, colonne conteneur, ...
• renseigner un nombre maximum d'enregistrement affiché. En
Ces fonctionnalités ajoutent encore plus à l'ergonomie effet, si le fichier contient 10 millions d'enregistrements, tous
et donc au confort de l'utilisateur. ne pourront pas être affichés. Il est conseillé de filtrer les enre-
gistrements qui vont être affichés, dans un souci de confort pour
Ce sujet présente la mise en place de rupture et de
l'utilisateur final.
conteneur sur un champ table.

Définition d'une rupture


Projet d'illustration La définition d'une rupture sur table est effectuée dans la des-
Le projet utilisé pour illustrer ce sujet est "WD Champs" (présent
cription de la table, dans l'onglet "Contenu".
sur le DVD).
Il suffit de cliquer sur le bouton "Éditer les ruptures" : la fenêtre de
Création d'une table avec rupture gestion des ruptures s'affiche. Dans cette fenêtre est affiché :
• la liste des ruptures possibles. Cette liste correspond aux diffé-
Une rupture permet de regrouper des données qui possèdent rentes ruptures considérées comme valides.
un ou plusieurs éléments communs. Par exemple, il est possible • la liste des ruptures définies pour la table.
de regrouper les clients par pays et par ville ou des commandes
par date. Pour ajouter une rupture à la table, il suffit :
Les ruptures sont disponibles sur les champs tables, les champs • soit de double cliquer sur la rupture voulue dans la liste des
zones répétées et les états. ruptures possibles.
• soit de sélectionner la rupture voulue et de cliquer sur le bouton
Pour créer une table contenant une ou plusieurs ruptures, il suffit "Ajouter une rupture".
simplement de créer une table, soit par le bouton "Champ Table"

38 - TDF TECH 2009 - www.pcsoft.fr


WinDev
Pour supprimer une rupture, il suffit : Pour ajouter des champs dans une colonne conteneur, il suffit
• soit de double cliquer sur la rupture dans la liste des ruptures simplement de faire un Drag and Drop d'un champ depuis la barre
définies. d'outils ou de rubriques depuis le treeview de l'analyse. Une fois
• soit de sélectionner la rupture à supprimer et de cliquer sur le les champs ajoutés dans la colonne conteneur, il est possible de
bouton "Supprimer la rupture sélectionnée". définir un champ principal de ce conteneur. C'est sur ce champ
que seront effectuées les recherches, les tris, les filtres, ....
Remarque :
Il est important de ne jamais supprimer une colonne qui est source
d'une rupture. Si la colonne ne doit pas être affichée, il suffit de FAA sur les tables
la rendre invisible.
Sur les champs tables (avec ou sans ruptures), les utilisateurs
bénéficient des FAA (Fonctionnalités Automatiques de l'Application).
Personnalisation d'une rupture Les utilisateurs peuvent :
Par défaut, les utilisateurs peuvent enrouler/dérouler les ruptures. • ajouter des calculs de somme, de moyenne,etc. sur les colonnes
Cette fonctionnalité peut être désactivée. de table.
• générer un graphe sur les données.
Pour désactiver le bouton enroulé/déroulé, il suffit de décocher • exporter les données vers Word, XML, Open Office, Excel.
l'option "Ruptures avec bouton enroulé/déroulé" dans la description • effectuer des tris, sur une ou plusieurs colonnes.
de la table (onglet "Détails"). • rechercher des éléments.
• choisir les colonnes à afficher.
Il est possible d'ajouter une image de fond à la rupture, pour • mettre en place des filtres.
la mettre plus en avant par rapport aux lignes de la table. Pour
cela il suffit de :
• ouvrir la fenêtre de description de la rupture, onglet "Style".
• choisir une image comme cadre pour la rupture.
De la même manière, il est possible de personnaliser le bas de
rupture.

Si une rupture permet de regrouper des éléments, il peut être


judicieux d'afficher le critère de regroupement au sein même de
la rupture, par exemple en utilisant un champ libellé.

Pour que ce champ affiche automatiquement le critère de la


rupture à chaque itération de la rupture, il suffit de le lier à la
rubrique qui définit la rupture.

Enrouler / Dérouler par programmation


Si l'utilisateur peut enrouler et dérouler les ruptures grâce au
bouton de la rupture, il est également possible d'effectuer ces
opérations par programmation.
Il suffit d'utiliser les fonctions WLangage TableEnroule/
Notre astuce
TableEnrouleTout et TableDéroule/TableDérouleTout
Par défaut, la loupe de recherche présente dans les colonnes de
// Enroule toutes les ruptures table effectue une recherche de type "Commence par".
TableEnrouleTout(TABLE_SEJOURS) Il est possible de spécifier que la loupe doit faire une recher-
che de type "Contient". Il suffit pour cela d'utiliser la propriété
// Enroule la première ligne de rupture
..ModeLoupe sur la colonne de table et d'affecter la constante
TableEnroule(TABLE_SEJOURS, 1)
filtreContient.

// Définit une recherche de type "contient"


Colonne de type Conteneur TABLE_SEJOURS.COL_Titre..ModeLoupe = …
Une colonne de type conteneur permet d'inclure, dans une seule et   filtreContient
même colonne, différents champs de différents types. Il est ainsi
possible de regrouper dans une seule colonne des informations qui Remarque :
auraient été affichées dans plusieurs colonnes. La lisibilité s'en Tous les types de recherche peuvent ainsi être définis par défaut :
retrouve ainsi améliorée. filtreCommencePar, filtreTerminePar, filtreContient, filtre-
NeContientPas, etc.
La création d'une colonne Conteneur s'effectue exactement de
la même façon que pour une colonne d'un autre type : il suffit
simplement d'indiquer Conteneur en type.

TDF TECH 2009 - www.pcsoft.fr - 39


Plus d'informations sur ces sujets ?

En formation
"WinDev Perfectionnement"

Dans WinDev
Exemple didactique "WD Tables Ruptures"
Exemple complet "CRM"

Dans WebDev
Exemple complet "Rewali"

40 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

La réplication

TDF TECH 2009 - www.pcsoft.fr - 41


Réplication assistée

Mise en place d'une réplication assistée

Que ce soit entre un matériel nomade avec base


embarquée et une base de données au siège,
que l’on veuille répliquer 2 bases HyperFileSQL
ou une base HyperFileSQL avec un autre type
de base, il est conseillé d’utiliser la réplication
universelle assistée.

Réplication universelle
assistée
Cette réplication s’effectue via l’éditeur de répli-
cation de WinDev. Cet outil est accessible par le
menu "Outils .. Gestionnaire de réplication ..
RéplicEdit".

Description de la réplication
L'éditeur de réplication est pour l'instant vierge,
il faut commencer par créer une nouvelle répli-
cation, c'est-à-dire indiquer les caractéristiques
de la réplication :
• Un nom pour la réplication, par exemple
"Réplication CRM".
La réplication permet de synchroniser plusieurs bases • Une description (facultative).
de données qui évoluent en parallèle. • L'analyse du projet contenant les fichiers de la base de données
Ces bases doivent bien sûr avoir des structures iden- à répliquer.
tiques. • Les options de la réplication.
WinDev vous permet de réaliser facilement des répli-
cations entre plusieurs bases de données. Options de la réplication
Il existe de nombreux modes de réplication, les options de répli-
cation permettent de définir rapidement celui concerné :
Exemple associé • La réplication est-elle mono-directionnelle (donc une extraction
Pour tester les différentes manipulations décrites dans ce sujet, en lecture de la base) ou bi-directionnelle (les modifications sur
il est possible d'utiliser le projet "CRM" livré en standard avec le réplica seront reportées dans la base maître) ?
WinDev, ou tout autre projet contenant une analyse. • Comment sont gérés les conflits de réplication ? Par défaut,
c'est la modification la plus récente qui est prioritaire, mais il est
possible de vouloir un fonctionnement différent.
Méthodes de réplications
Pour définir une réplication avec WinDev, il est possible de : Fichiers à répliquer
•  définir la réplication par programmation avec les fonctions Une fois les options de réplication définies, il faut définir les
WLangage ReplicaXXX. fichiers à répliquer. Les fichiers peuvent être en HyperFileSQL,
• définir la réplication via l’éditeur de réplication de WinDev. Oracle, MySQL, SQL Server, AS 400, Progress, …
Ces 2 types de réplication sont des réplications "universelles", ou Pour chaque fichier répliqué (par le bouton "Ajouter"), il est
"hétérogènes". possible d'indiquer si le fichier doit être répliqué entièrement
C'est-à-dire que la réplication peut s’effectuer entre des bases ou partiellement.
HyperFileSQL ou entre des bases HyperFileSQL et des bases tierces : Prenons par exemple, un fichier "Client". Il peut ne pas être néces-
Oracle, SQL Server, ... saire d'avoir l'ensemble des clients sur une base répliquée, notam-
ment s'il s'agit d'une base locale pour un collaborateur itinérant. Il

42 - TDF TECH 2009 - www.pcsoft.fr


La réplication
est alors possible de filtrer les enregistrements du fichier "Client" "LignesCde" apparaît automatiquement.
à répliquer. Par exemple les clients d'un département donné. De même, il est alors possible de répliquer les lignes de commandes
Pour définir un filtre, il faut utiliser l'option "Filtrer les enregistre- reliées aux commandes.
ments" et définir à l'aide de l'assistant les conditions de sélection etc, etc.
du filtre. Pour reprendre l'exemple des clients d'un département,
le filtre sera alors de la forme "Code_Postal commence par '34'". Notre astuce
Note : il est possible d'indiquer les conditions du filtre de façon Lors de la description de la réplication, il est possible de définir
paramétrée en ne spécifiant pas une valeur mais un paramètre le sens de la réplication et la gestion des conflits au niveau global
grâce au bouton "Nouveau paramètre". pour toute la réplication. Il est possible de le gérer plus finement
au niveau de chaque fichier à répliquer.
Pour cela, il suffit de faire clic droit sur le fichier, dans l'option
Fichiers reliés "Propriétés".
Une fois les différents fichiers à répliquer sélectionnés, la liste des
fichiers apparaît dans la table principale de l'éditeur de réplication
avec une marque "répliqué" (c'est le cas du fichier "Client" dans Notre astuce
notre exemple). Il est possible de définir pour chaque fichier s’il y a des rubriques
Mais d'autres fichiers sont également apparus, comme le fichier ne devant pas être répliquées. Ce paramétrage s'effectue dans
"Commande" toujours dans notre exemple. l'onglet "Rubriques".
En fait, tous les fichiers reliés aux fichiers sélectionnés dans la
liste des fichiers à répliquer sont apparus. Sauvegarde de la description
Et tous les fichiers reliés sont alors marqués en "non répliqués" Une fois la description de la réplication terminée, il suffit de la
(l'icone de réplication est en gris). sauvegarder.
L’éditeur de réplication génère alors un fichier ".wer" qui contient
Bien entendu, pour que l'application fonctionne sur la base répli-
la description de la réplication.
quée, certains de ces fichiers sont nécessaires : avoir le fichier
"Client" sans les commandes associées peut ne pas être utile ... Bien sûr à tout moment, il est possible de revenir dans cet éditeur
pour consulter ou modifier la description d'une réplication.
Dans ce cas, il est possible d'inclure les fichiers liés dans la répli-
cation grâce au menu contextuel (clic droit) par l'option "Inclure
dans la réplication".
Lancement d'une réplication
Et automatiquement l’assistant de réplication ne récupérera que Pour exécuter une réplication générée par l'éditeur de réplica-
les commandes des clients sélectionnés dans la réplication. Il est tion :
alors possible de définir des filtres supplémentaires, pour n'avoir • soit les utilisateurs lancent eux-mêmes la réplication via l’outil
qu'une partie des commandes du client (par exemple les commandes "Réplic Synchro". Cet outil est librement redistribuable avec les
de l'année en cours). Le filtrage s'effectue de la même façon que applications.
pour le fichier "Client". • soit l'application possède une option, un bouton, ..., qui per-
met de déclencher la réplication. Il suffit pour cela d’utiliser les
Et ainsi de suite fonctions WLangage RéplicInitialise et RéplicSynchronise.
Une fois le fichier "Commande" ajouté à la réplication, le fichier

TDF TECH 2009 - www.pcsoft.fr - 43


Réplication programmée

Mise en place d'une réplication programmée

Pour gérer une réplication de façon plus minutieuse, automatique, WinDev va simplement créer un fichier d’extraction,
par exemple, pour gérer les cas de conflit particu- le réplica transportable. Ce réplica contient tous les enregistrements
liers, gérer le sens de votre réplication au niveau des qui ont été modifiés depuis la dernière réplication.
rubriques des fichiers, ..., il est possible de définir une Ce fichier est alors ensuite envoyé aux abonnés pour mettre à
réplication par programmation sans passer par l’édi- jour leur base de données.
teur de réplication.
Mise en place d'une réplication
Principe de la réplication par programmée
programmation
Côté maître
Prenons par exemple le cas d’une réplication entre le siège d’une
La mise en place de la réplication est l'étape qui définit les rôles
société et ses agences distantes. Cette réplication permet d’éviter
de chaque base : maître ou abonnée. La mise en place ne doit
une connexion en temps réel entre les deux sites.
être effectuée qu'une seule et unique fois.
La base de données de référence, appelée "Réplica Maître", se
Pour mettre en place la réplication, il suffit de :
trouve par exemple au siège de la société, à San Francisco.
• indiquer à la base de données maître qu'elle va être répliquée
Les bases de données secondaires, ou bases distantes, appelées
avec la fonction HGèreRéplication.
"Réplica abonné" se trouvent dans des agences à travers le monde  :
Paris, Nice, New Delhi, Sydney, ... // Gestion de la réplication hétérogène
HGèreRéplication(rplRéplicationHétérogène)
Lors de chaque modification d’un enregistrement (ajout, suppres-
• spécifier à la base de données maître qu'elle est maître, par la
sion, modification, etc.), HyperFileSQL horodate automatiquement
fonction HCréeRéplicaMaitre. Cette fonction attend en paramè-
l’enregistrement dans la base, à l’heure GMT.
tre le répertoire dans lequel sera créé le fichier réplica maître
Ensuite, lors de la demande de réplication et grâce à cet horodatage .RPM.

44 - TDF TECH 2009 - www.pcsoft.fr


La réplication
// Création du réplica Maître de passer en paramètre le nom d’une procédure callback. Cette
HCréeRéplicaMaître(gsRepRéplicaMaître) procédure permet de gérer par programmation les cas de conflits,
•  inscrire chaque abonné auprès du maître par la fonction filtrer les enregistrements à ne pas répliquer par exemple.
HCréeRéplicaAbonné. Cette fonction permet de créer le fichier C’est le principal intérêt de cette méthode de réplication par
réplica abonné .RPL. Cette fonction définit également un iden- programmation.
tifiant pour l'abonné, les fichiers à répliquer et la rubrique d'ho-
rodatage.
// Inscription de l'abonné auprès du maître
HCréeRéplicaAbonné(gsRepRéplicaMaître,"",…
  "BASEPARIS",0,"CLIENT"+TAB+"IDDATEHEURE")
L’inscription d’un abonné peut se faire à tout moment, mais il ne
faut bien sûr inscrire un même abonné qu’une seule fois.
Remarque :
Si la base n’est pas une base HyperFileSQL, il est nécessaire
d'ajouter à la main la rubrique d'horodatage dans l’analyse et
dans les fichiers de données.
L’avantage d’utiliser HyperFileSQL est que cet horodatage est
géré automatiquement.
• mettre à jour les abonnés à partir de la base maître, par la
fonction HCréeRéplicaTransportable. Cette fonction va créer
un fichier réplica transportable .RPA. Il suffit de lui indiquer le
répertoire du réplica maître et l'identifiant de l'abonné.

// Création du réplica Transportable


HCréeRéplicaTransportable(gsRepRéplicaMaître,…
  "BASEPARIS","")

Côté abonné
Il est nécessaire de récupérer :
• le fichier RPL, le réplica abonné. Ce fichier ne doit jamais être
supprimé.
• le fichier RPA , le réplica transportable. Il s'agit du fichier qui
sera reçu à chaque fois qu'une réplication doit être effectuée.

Synchronisation des données


Pour synchroniser des données à partir d'un réplica transportable
(.RPA), il suffit d'utiliser la fonction HSynchroniseRéplica. Cette
fonction attend en paramètre :
• le nom du fichier RPA
• le nom du fichier RPL
• le sens de la réplication.
// Synchronise les données reçues du maître
HSynchroniseRéplica("To_BASEPARIS_001.RPA",…
  fRepExe()+["\"]+"Replica_BASEPARIS.RPL",…
  rplVersAbonné)
Remarque :
La seconde syntaxe de la fonction HSynchroniseRéplica permet

TDF TECH 2009 - www.pcsoft.fr - 45


Plus d'informations sur ces sujets ?

En formation
"WinDev Avancé"

Dans la LST 74 (p22-23)


Exemple "WD Réplication Universelle"

Dans WinDev
Exemples didactiques "WD Réplica Maître" et
"WD Réplica Abonné"

46 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Mobilité et Base de Données

TDF TECH 2009 - www.pcsoft.fr - 47


Base de données

Applications Mobiles : base de données


embarquée, distante ou mobile ?

Lors du développement d'une application mobile, la Avec WinDev Mobile, il est possible de :
question du stockage de données est une question • utiliser une base HyperFileSQL Mobile embarquée sur le terminal
récurrente. mobile.
• manipuler les données d'une base tierce mobile grâce aux accès
Ce sujet met en avant les avantages et inconvénients
natifs : Oracle Lite, SQLServerCE,etc.
des deux solutions principales :
• accéder à une base HyperFileSQL Client/Serveur du serveur de
• embarquer les données sur le terminal mobile. l'entreprise.
• accéder à distance aux données sur le serveur de • accéder à une base tierce sur le serveur de l'entreprise : Oracle,
l'entreprise. Informix, SQL Server, AS/400, etc.

Données embarquées sur le mobile Pour synchroniser des fichiers HyperFileSQL via ActiveSync, il
suffit d'utiliser l'outil "WDSynchro", accessible via le menu "Outils
.. WDSynchro" de WinDev Mobile. Il suffit de :
Les avantages
  • indiquer le nom de l'application.
Le fait d'embarquer les données sur le terminal mobile propose
  • indiquer l'emplacement du fichier d'analyse (.WDD) sur le PC
plusieurs avantages :
et sur le Pocket PC.
• la performance : il n'y a pas de communication distante, donc
  • préciser les fichiers qui doivent être synchronisés et l'ordre de
aucun temps de transfert.
leur synchronisation.
• la disponibilité de la base : les données sont toujours accessibles,
  • indiquer l'emplacement des fichiers de données sur le PC et
que le mobile dispose ou pas d'une connexion.
sur le Pocket PC.

Les inconvénients • En cas de perte ou de vol du terminal mobile, la confidentialité


• Il est nécessaire de gérer la synchronisation entre les données des données doit être protégée. Pour ce point, HyperFileSQL
du mobile et celle de l’entreprise. permet de crypter les fichiers de données soit depuis l'éditeur
Cette synchronisation peut s’effectuer lorsque le mobile est posé sur d'analyse via l'onglet "Détails" de la description d'un fichier, soit
son socle et connecté au PC via ActiveSync ou alors à distance grâce par programmation avec la propriété ..Cryptage.
à l’éditeur de réplication détaillé dans ce support de cours.

48 - TDF TECH 2009 - www.pcsoft.fr


Mobilité et Base de Données
Accès à distance depuis le Nos astuces :
• Éviter au maximum les aller/retour inutiles au serveur.
mobile aux données centrales de • Limiter au maximum le nombre d’informations à récupérer.
l'entreprise • Utiliser au maximum des requêtes, des vues. Il faut que celles-ci
soient les plus ciblées possibles et qu’elles renvoient le minimum
L’accès distant s’effectue à travers une liaison de type Wifi ou
de lignes possible sur le Pocket. De même, il est conseillé de ne
3G par exemple.
rapatrier que les rubriques nécessaires  : les requêtes de type
"Select *" sont donc à proscrire.
Les avantages •  Désactiver le mécanisme de cache de HyperFileSQL Client/
• Les données manipulées sur les terminaux mobiles sont toujours Serveur avec la fonction HGèreCache. Ainsi chaque lecture ne va
à jour puisque les terminaux accèdent en temps réel à la base cen- rapatrier que le nombre d’enregistrements spécifié. Cela permet
trale. Il n'est donc pas nécessaire de gérer de synchronisation. de limiter le temps de transfert. Par défaut pour les Pocket PC,
• Les données sont sur le serveur, elles ne peuvent donc être ni c’est 10 enregistrements par lecture.
volées ni perdues avec le terminal mobile. Un simple système • Désactiver la gestion des mémos avec la fonction HGèreMémo,
d'identification ("login-mot de passe") dans l’application est alors encore une fois dans le but de minimiser la taille des infos trans-
suffisant. férées. En effet, en général sur un Pocket, il n'est pas nécessaire
de rapatrier un mémo de 10 Méga.
Les inconvénients • Activer la compresser des trames, grâce à la propriété  ..
•  Les déconnexions intempestives  liées aux micro-coupures de Compression. Une trame est un paquet de données qui transite
réseau peuvent être pénalisantes. Pour palier ce problème, WinDev sur le réseau qu’il soit local, Wifi, GPRS. Avec une communication
Mobile dispose de la reconnexion automatique sur HyperFileSQL. à distance, la compression des trames est un avantage surtout si
En cas de déconnexion, l'application repropose automatiquement la vitesse de connexion est faible.
de se reconnecter et reprend un comportement standard : nul Pour un accès rapide, de bonnes performances, une sécurité
besoin de redémarrer l'application. optimale des données, un bon compromis est de :
• La performance liée au support de communication (Wifi, GPRS, • accéder à distance aux données sensibles,
etc.) peut également être un problème si les données sont nom- • avoir en local les données les moins sensibles.
breuses.

TDF TECH 2009 - www.pcsoft.fr - 49


Accès Distant

Accès à une base tierce depuis un terminal


mobile

L'accès à une base tierce depuis une application En effet, cette page se comporte comme un Service Web :
mobile peut être effectué : • elle attend des paramètres en entrée,
• par le serveur RPC fourni en standard avec WinDev • elle renvoie une information en retour (une liste d'informations
extraites de la base de données par exemple).
Mobile.
• par une page AWP créée avec WebDev.
Réalisation
• par programmation (utilisation de sockets par exem-
Le code d'initialisation du projet contient le code de connexion à
ple). la base de données souhaitée.
L'accès à une base de données HyperFileSQL peut être Le code “important” de cette page va se trouver dans le code
effectué de façon native. d’ouverture de la page. Le code est alors de la forme suivante :
• Récupération du paramètre passé à la page avec la fonction
Les bases tierces ne fournissent pas de couches client pour les
PageParamètre, c’est le nom sur lequel devra se faire la recher-
terminaux mobiles. Seule exception : l’accès natif AS/400. Il est
che.
donc nécessaire de mettre en place une solution pour qu'un ter-
minal mobile puisse accéder à une base de données. // Récupération du paramètre passé à la page
sParamètreNom = PageParamètre("NOM")

Utilisation d'une page de rebond • Parcours du fichier par une boucle Pour Tout. Les informations
de chaque enregistrement sont affectées dans une chaîne à l'aide
AWP de la fonction HRécupèreEnregistrement.
La première méthode consiste à utiliser une page de rebond AWP // Parcours des contacts dont le nom
créée avec WebDev. // commence par le paramètre récupéré
L’avantage de cette méthode est que la page AWP se comporte
POUR TOUT CarnetAD AVEC Nom[=sParamètreNom
en fait comme un WebService, qui peut être réutilisé par toute   // Récupération des informations sur le client
autre application.   // dans la chaîne qui va être affichée
  sChaineRetour += HRécupèreEnregistrement(…
    CarnetAD) + RC
Fonctionnement
Le principe est de créer une page sans interface (sans champ) FIN
permettant de récupérer ou d'effectuer une opération sur la • Le renvoi du résultat par la fonction ChaineAffiche. La fonction
base de données (à l'aide d'un accès OLE DB ou d'un accès natif ChaîneAffiche permet d’afficher dans une page HTML le résultat
par exemple). de la recherche?

50 - TDF TECH 2009 - www.pcsoft.fr


// Affiche la chaîne contenant les informations
ChaîneAffiche(sChaineRetour) 2. Deuxième étape : Analyse du résultat
Le code source de la page est formaté : un client par ligne avec
La page affichée dans un navigateur n’est alors pas très lisible, un retour chariot (RC).
mais ce n’est pas ce qui est important ici. Ce qui nous intéresse, Il suffit donc de parcourir la variable ListeClient pour récupérer
c’est le code source HTML de cette page qui est de la forme : les informations d’un client.
216<TAB>BANQUEN<TAB>1<TAB>ABBOU<RC>622<TAB>TRIL POUR TOUTE CHAINE UnClient DE
OGET<TAB>2<TAB>ABONDANCE<RC>... ListeClient SEPAREE PAR RC
Ce code source est très lisible et facilement accessible par une   TableAjoute(TABLE_Table1, UnClient)
FIN
application. Il contient un client par ligne, avec les informations
du client séparées par des tabulations. Il suffit alors d'exploiter
cette page depuis une application WinDev ou WinDev Mobile. Utilisation du serveur RPC
Un serveur RPC est fourni en standard avec WinDev Mobile.
Exploitation par une application WinDev Mobile
À partir d’une page ainsi conçue, le traitement et l'intégration des Ce serveur RPC sert de relais entre une application et une base de
résultats dans une application WinDev Mobile sont très simples. données. Le serveur RPC re-route les commandes qu’il reçoit vers
un serveur de base de données et renvoie le résultat.
Nous allons dans cette fenêtre tout simplement remplir la table
avec les données récupérées sur la page AWP. La commande peut être une requête SQL ou un ordre Hxxx
(HLitPremier, HLitSuivant,etc.).
1. Première étape : Envoi de la requête
Il faut tout d’abord envoyer la requête au site avec le paramè- La seule chose qui change dans l’application mobile est l'utilisation
tre qui sera la lettre ou la chaîne de caractères des clients à de la fonction hConnecteAccesDistant dans le code d'initialisation
rechercher. Ce paramètre est saisi dans le champ de recherche du projet. Cette procédure accepte en paramètres :
de la fenêtre. Le code de cette requête se trouve dans le code •  l’adresse IP ou le nom de la machine où se situe le serveur
du bouton “Rechercher”. RPC,
Pour réaliser cette requête, il suffit d’utiliser la fonction • le nom et le mot de passe qui va permettre à l’application de
HTTPRequête et de construire l’URL qui sera composée de s’identifier auprès du serveur RPC.
l’adresse de la page et du paramètre de recherche. // Connexion au serveur RPC
Les paramètres sont séparés de l’adresse de la page par un point HConnecteAccèsDistant("MonServeurHFSQL",…
d’interrogation; le code est alors de la forme :   "Utilisateur","MotDePasse")
// Demande à la page AWP WinDev Mobile génère automatiquement l'installation du serveur
HTTPRequête("http://localhost/ANNUAIREAWP_WEB/FR/ RPC pour l'accès à une base tierce depuis un Pocket PC. Il suffit de
PAGE_RechercheClient.awp?NOM=T") cliquer sur le menu "Atelier .. Serveur RPC .. Créer la procédure
Ensuite, il suffit de récupérer le résultat grâce à la fonction d'installation du serveur RPC" et de suivre l'assistant pas à pas.
HTTPDonneRésultat. La fonction HTTPDonneRésultat permet L’avantage de la solution du serveur RPC est qu'il s'agit d'une solu-
de récupérer deux choses : tion sécurisée. En effet, les applications doivent être déclarées
• L’en-tête de la page : c’est dans l’entête que sont conte- auprès du serveur RPC. Les applications sont des utilisateurs, au
nues les informations concernant la page en elle-même. sens réseau, du serveur RPC.
Par exemple c’est dans l’en-tête que l’on sait si la page existe
Il est également possible d’installer le serveur RPC en tant que
encore ou non.
service.
• Le contenu de la page : c’est le code HTML de la page.
Notre astuce
Bien entendu, l'application doit ici récupérer le code source HTML
Pour des raisons de performance, il est conseillé de privilégier
de la page. Le code devient :
l'utilisation de requêtes SQL.
// Récupération du résultat
ListeClient = HTTPDonneRésultat(HTTPRésultat)

TDF TECH 2009 - www.pcsoft.fr - 51


Abonnez-vous !
L90119
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............

En cas de paiement par carte bancaire,


FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC
vous pouvez nous faxer votre abonne-
□ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC
ment au :
+33 (0) 4 67 03 07 87 AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT
□ 2 ans - 8 N°+ 8 DVD : 299 euros HT
Note : une facture acquittée est systématique-
 Ci joint mon règlement de : ............. Euros TTC ment adressée.

□ Je règle par chèque.        J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard

□□□
            la somme de : ..................... Euros
□ Je règle par Carte Bancaire.      Cryptogramme :

□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année

Signature obligatoire du détenteur de la carte :


Nom du détenteur de la carte :
..........................................................

52 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Debug et Optimisation

TDF TECH 2009 - www.pcsoft.fr - 53


Programmation et débogueur

Fonctions de mise au point et de debogage

WinDev dispose en standard de plusieurs outils et Pour définir une assertion, il suffit d'utiliser la fonction dbgAs-
fonctionnalités pour aider le développeur à mettre au sertion du WLangage avec en paramètre la condition à vérifier,
point et optimiser les applications. et le message à afficher si jamais elle ne l'est pas.

Dans cet article, nous allons étudier les principales Par défaut, les assertions sont actives uniquement en mode test.
fonctionnalités offertes par WinDev sur ce domaine afin Il est possible de les activer en déploiement, il suffit d'utiliser la
de vous aider à choisir lesquels sont les plus adaptés fonction dbgactiveAssertion, avec le paramètre Vrai.
selon vos projets.
Différence fondamentale
Principales fonctionnalités La condition utilisée dans l'assertion n'est exécutée par le WLangage
que lorsque les assertions sont actives. Le fonctionnement peut
Les principales fonctionnalités offertes par WinDev en termes de donc être différent en mode test et en mode exécutable.
mise au point sont les suivantes :
• Les assertions Il faut être particulièrement vigilant lors de l'utilisation de fonctions
• Les traces dans la condition fournie à la fonction dbgAssertion. En effet,
• Les logs d'exécution si la fonction utilisée réalise une initialisation ou une connexion,
• Le débogueur cette opération ne sera pas réalisée dans l'application utilisée en
mode "exécutable".
Les assertions
En revanche, cela permet de mettre "plus de tests" sans ralentir
Une assertion permet de vérifier une condition lors de l'exécution
l'application en exploitation et ainsi permet d'accélérer la mise
de l'application.
au point des applications.
• Si la condition n'est pas vérifiée, une boîte d'information s'affiche
avec le détail de la vérification.
Notre conseil
Les assertions peuvent servir pour des cas "spécifiques" ou vérifier
les "pré-requis" d'une fonction. C’est-à-dire le cas qui ne devrait
jamais arriver mais qui arrive toujours un jour : une chaîne vide
alors que l'on attend un nom logique, un chemin vers un fichier
inexistant, etc.

Les assertions ne peuvent pas remplacer la gestion classique des


erreurs : il faut gérer le cas, mais mettre une assertion permet
d'être prévenu et de retrouver pourquoi c'est arrivé grâce à la
pile d'exécution.

L'utilisation des assertions permet également de guider l'utili-


sation d'une fonctionnalité lors d'un développement à plusieurs
développeurs : le code "appelant" ne doit pas provoquer d'assertion
dans le code "appelé".
Le développeur a alors accès à la pile d'exécution, c’est-à-dire
tous les appels qui ont abouti à ce résultat.
Les traces
// Variable CClient La fonction WLangage Trace permet d'afficher des informations
clClient est un CClient pendant l'exécution de l'application. Cette fonction est très
// Création du client couramment utilisée lors des phases de développement d'une
CréerClient(clClient) application.
// L'objet clClient doit avoir été instancié
dbgAssertion(clClient<>Null, ... En revanche, beaucoup moins de développeurs connaissent la
  "L'objet n'a pas été instancié") possibilité de personnaliser le fonctionnement des traces. Cette

54 - TDF TECH 2009 - www.pcsoft.fr


Debug et Optimisation
personnalisation est effectuée grâce à la fonction TraceDébut • Déboguer directement sur un terminal mobile
du WLangage. • Déboguer un composant, depuis le projet hôte, ou depuis un
// La fenêtre de trace est affichée exécutable
//par-dessus les autres fenêtres • Déboguer des procédures et des triggers stockés
// et un fichier de trace est sauvegardé
TraceDébut(trFenêtre+trDessusTout+trFichier, Le débogueur permet alors de :
  fRepExe()+["\"]+"TraceExecution.txt") • Faire du débogage multithread
• Évaluer des variables dynamiquement
Il est alors possible de : • Définir l'instruction suivante à exécuter
• Afficher les traces dans une fenêtre, c'est le fonctionnement • Modifier le code à la volée, c'est le Edit and Continue
par défaut avec la constante trFenêtre • Visualiser le contexte HyperFileSQL d'un fichier ou d'une source
• Enregistrer les traces dans un fichier avec la constante trFi- de données
chier. • Faire des points d'arrêts conditionnels....
•  Désactiver les traces par programmation avec la constante
trDésactivée

Le volet du débogueur
Il est également possible de retrouver les assertions, et les traces
directement dans l'éditeur dans le volet du débogueur.

Ce volet est très pratique, notamment pour le débogage distant


car les traces et les assertions apparaissent aussi sur votre poste
dans WinDev. De plus, un simple double-clic sur une assertion ou
une trace affichée dans ce volet positionne automatiquement le
code sur la ligne ayant provoqué cet affichage.

Le développeur dispose également dans ce volet de toutes les


erreurs non fatales rencontrées par l'application ce qui peut
permettre de fiabiliser l'application.

Le débogueur
Dans WinDev, le débogueur permet de déboguer dans différentes
configurations :
• Déboguer le projet en mode test
•  Déboguer un exécutable, en local ou à distance (en lançant
l'application WDDebug sur le poste distant).
• Déboguer un site, en local ou à distance

TDF TECH 2009 - www.pcsoft.fr - 55


Analyseurs

Optimisation d'une application grâce au logs


et à l'analyseur de performances

Les logs d'exécution permettent d'enregistrer tous


les traitements qui ont été effectués par l'utilisateur.
Cette fonctionnalité est non seulement pratique pour
l'optimisation d'une application (le développeur sait
ce que l'utilisateur exploite le plus en terme de fonc-
tionnalité de l'application), mais aussi pour la mise au
point de l'application.

Grâce aux logs d'exécution, le développeur voit le


déroulement complet de l'application :
• toutes les fonctions qui ont été appelées,
• tous les paramètres qui ont été passés,
• tous les résultats des fonctions,
et ce dans tous les threads...
En effet, les threads ne s'exécutent pas tout à fait en parallèle les
uns des autres. Le processeur ne peut faire qu'une seule chose à la
Logs et Interactions entre threads fois. Dans le log d'exécution, on voit dans l'exemple que pendant
qu'une instruction s'exécute dans un thread, il n'y a rien dans les
Pour ouvrir un fichier log d'exécution (fichier .wlog), il suffit
autres threads.
d'ouvrir le projet puis d'effectuer un drag & drop du fichier .wlog
dans WinDev.
Logs et analyse d'utilisation
Le rôle premier des logs n'est pas de servir au débogage mais d'en
déduire un certain nombre de statistiques…
Notamment sur les actions qui ont été le plus souvent exécutées
par les utilisateurs. Cela permet aux équipes de développement de
concentrer leurs efforts sur les fonctionnalités les plus utilisées.

// Activation des logs


// Le log d'exécution va récupérer :
// - les fonctions WLangage
// - les paramètres des fonctions
// - les traitements
dbgActiveLog("[%RepExe%][%Date%][%Heure%]",
  LogTout+LogActif)

Les logs d'exécution s'activent par la fonction dbgActiveLog du


WLangage en indiquant,en paramètre, le chemin du fichier de log
En plus de leur utilisation classique, les logs d'exécution sont à générer et les options d'enregistrements.
efficaces pour déboguer des applications multithreads. Vous pouvez demander à enregistrer :
• Les traitements.
Pour cela, il suffit d'activer l'option "Voir les interactions entre • Les appels aux fonctions WLangage.
les threads". Il est alors possible de sélectionner les threads pour • Les paramètres qui sont passés.
lesquels on souhaite visualiser les logs.
Note : L'activation des logs ralentit un peu l'application, car il faut
Le développeur a alors accès à toutes les instructions dans l'ordre enregistrer tous les traitements. Il est donc préférable de ne pas
où elles ont été exécutées. Cela permet de comprendre plus activer les logs d'exécution en permanence. Cette fonctionnalité
facilement les cas de conflits entre les threads. est à activer en cas de besoin pour déboguer un projet, ou en
phase de recettage pour savoir quelles sont les options les plus
utilisées !

56 - TDF TECH 2009 - www.pcsoft.fr


Debug et Optimisation
Stockage des fichiers logs Performances et améliorations .. Analyser les performances".
Dans ce mode de fonctionnement, WinDev lance automatiquement
Le stockage des logs se fait sur disque, il faut donc prévoir la place
l'application en activant le profiler. Le développeur peut alors
nécessaire. Pour gérer le stockage des logs, un composant est livré
utiliser "normalement" l'application. Lors de la fin de l'application
en standard : "WD Gestion Logs". Le composant "WD Gestion Logs"
WinDev affiche le compte-rendu du profiler.
permet de définir la taille maximum d'un log.
Lorsque le fichier de log arrive à cette taille, un nouveau log est Cette utilisation du profiler est très pratique pour vérifier l'exis-
recréé. Et bien entendu le développeur peut spécifier le nombre tence de traitements qui sont exagérément longs avant de livrer
de logs à conserver sur le disque. une nouvelle version d'une application.

Profiler et code ciblé


Optimisation avec le profiler Second cas d'utilisation du profiler : profiler une partie de l'ap-
Avec WinDev vous disposez des outils pour déboguer efficacement plication ou un traitement spécifique.
vos applications. Mais le débogage d'une application ne se limite
Pour profiler seulement une partie de l'application, il suffit d'utiliser
pas à la correction de dysfonctionnements, c'est aussi l'optimisa-
les fonctions AnalyseurDébut et AnalyseurFin du WLangage.
tion de l'application.
Ces fonctions permettent de démarrer et d'arrêter le profiler.
En général cette fonctionnalité est utilisée suite à une demande
Comment détecter les traitements qui prennent du temps dans vos
d'optimisation d'un traitement donné.
applications ? La solution la plus rapide est le profiler intégré de
WinDev. Le profiler liste les traitements effectués, avec le temps
Note : Cette fonctionnalité de profiler est également disponible
passé dans chaque traitement.
en exécution sur une application déployée. Cependant,il est
déconseillé d'activer cette fonctionnalité tout le temps : la collecte
Le profiler peut être utilisé de deux façons différentes :
d'informations réalisée par le profiler prend du temps et ralentit
1 - Pour profiler toute l'application, depuis son lancement jusqu'à
un peu l’application...
sa fermeture.
2 – Pour profiler une partie de l'application, un traitement long
ou spécifique par exemple.

Profiler et application complète


Premier cas d'utilisation du profiler : profiler l'ensemble d'une appli-
cation. Pour cela, il suffit de lancer le projet par le menu "Projet..

TDF TECH 2009 - www.pcsoft.fr - 57


Abonnez-vous !
L90119
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............

En cas de paiement par carte bancaire,


FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC
vous pouvez nous faxer votre abonne-
□ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC
ment au :
+33 (0) 4 67 03 07 87 AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT
□ 2 ans - 8 N°+ 8 DVD : 299 euros HT
Note : une facture acquittée est systématique-
 Ci joint mon règlement de : ............. Euros TTC ment adressée.

□ Je règle par chèque.        J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard

□□□
            la somme de : ..................... Euros
□ Je règle par Carte Bancaire.      Cryptogramme :

□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année

Signature obligatoire du détenteur de la carte :


Nom du détenteur de la carte :
..........................................................

58 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Gestion de la qualité

TDF TECH 2009 - www.pcsoft.fr - 59


TESTS AUTOMATIQUES

Mise en place de tests unitaires lors d'un


"GO" de fenêtre

Lorsque la génération du test est validée, il


est possible de visualiser le code du test.

PiloteSouris(FEN_Contacts.SAI_
Recherche, ...
  psClicGauche, 29,18)
PiloteSaisie(FEN_Contacts.SAI_
Recherche, "WE")
PiloteSouris(FEN_Contacts.ZR_
Contacts, ...
  psDoubleClicGauche, 101,30)
WinDev 14 permet de mettre en place des tests unitaires
automatisés sur les applications. Pour cela, les équipes //Scénario à exécuter lors de l'ouverture de la
fenêtre FEN_FicheContact
de développement disposent en standard d'un éditeur SUR FEN_FicheContact FAIRE
de tests totalement intégré à l'environnement. PiloteSouris(FEN_FicheContact.IMG_ZoneIdentitié,
  psRelacheBoutonGauche, 274,145)
Cet éditeur de tests est utilisé, dès la phase de déve-
PiloteSouris(FEN_FicheContact.BTN_Annuler,
loppement, par les développeurs, pour enregistrer des   psClicGauche, 65,18)
tests autos sur les fenêtres, les procédures.. FIN
L’avantage, c’est que les tests sont intégrés le plus tôt
possible dans le cycle de vie de l’application. PiloteSouris(FEN_Contacts.BTN_Quitter,
Les bugs éventuels sont donc détectés à la source.   psClicGauche, 90,17)

Dans le cycle de vie, le temps consacré à la création Rappel : Le code des tests dans WinDev est directement réalisé
de test automatisé est cependant souvent sacrifié au en WLangage, ce qui permet de personnaliser simplement le
profit de nouveaux développements. code généré.
L’avantage avec WinDev 14, c’est qu'à chaque test
Il est alors possible à tout moment de retester la fenêtre en sélec-
d'un élément (un simple GO)WinDev enregistre les
tionnant le test correspondant et en faisant un "GO"de ce test.
manipulations effectuée et permet d’enregistrer le test
unitaire correspondant à ces manipulations.

Création d'un test sur "GO"


Pour illustrer la mise en place d'un test unitaire lors d'un GO, nous
allons utiliser ici le projet "WD Gestion Contacts" :
• Ouvrir le projet "WD Gestion Contacts".
• Ouvrir la fenêtre FEN_Contacts
• Faire un GO de la fenêtre
• Rechercher "WE"
• Double cliquer sur " WERENFRID"
• Annuler la modification
• Cliquer sur quitter

Bien entendu, dans ce cas, le code vient d'être généré, donc le


test passe avec succès.
Et à partir de ce Go, WinDev me propose automatiquement
d’enregistrer le test correspondant aux manipulations réalisées
(un bouton "Générer le test" est apparu).

60 - TDF TECH 2009 - www.pcsoft.fr


Gestion de la qualité
Modification de la fenêtre (menu "Tests automatiques") ou de l'exécuter en autonome sur une
machine dédiée au test (en copiant l'exécutable "WDAutomate"
L'intérêt, c'est qu'une fois le test mis en place et validé, en cas depuis le répertoire "Programmes" de WinDev).
d'erreur ou d'un effet de bord lors d'une modification de l'appli-
cation, le test permettra de détecter la régression. Il suffit alors de cocher les tests à exécuter et de valider.Les tests
sélectionnés vont alors automatiquement s’enchaîner.
Pour illustrer ce cas, nous allons modifier la fenêtre "FEN_Contacts"
sur laquelle nous venons de créer un test :
• Ouvrir la fenêtre "FEN_Contact".
• Ouvrir la fenêtre de description de la zone répétée.
• Sélectionner l'onglet "IHM"
• Désactiver l'option de double clic automatique
• Valider
• Sélectionner le test "TESTS_Contacts".
• Démarrer le test (Go du test).

Désormais, le test ne passe plus avec succès : la régression a été


détectée. En effet, avec la modification réalisée, l'utilisateur ne
peut plus ouvrir la fiche du contact par un double clic.

Automatisation des tests


Un des avantages des tests, est qu'il est ensuite possible de faire
rejouer ces tests générés automatiquement sur l’application
finale, sur le ".exe".

Pour passer les tests sur un exécutable, il suffit de générer la


bibliothèque de tests depuis le menu "Test automatiques .. Générer
la bibliothèque de tests".

Ensuite, il suffit d'utiliser l’automate de tests livré en standard


avec WinDev. Il est possible de lancer l'automate depuis WinDev

TDF TECH 2009 - www.pcsoft.fr - 61


CENTRES DE Contrôles

Suivi de projet et des incidents ou


suggestions

Comment savoir sur un projet quelles sont les fonction- place d’un système de promotions".
nalités validées et livrables en clientèle ? • Indiquer si l'exigence nécessite une tâche de test ou de docu-
Comment garder la traçabilité de ce qui a été déve- mentation en plus de la tâche de développement.
•  Compléter les informations décrivant plus précisément l'exi-
loppé ? par qui ? de ce qui a été testé .. par qui ? Où
gence.
en est l'avancement du projet ?
Toutes ces problématiques sont communes au déve-
loppement logiciel et WinDev répond à ces questions
par ses différents centres de contrôle.
Les centres de contrôle permettent de gérer les fonc-
tionnalités des projets, les tâches nécessaires pour
réaliser les fonctionnalités, le suivi des plannings, les
incidents remontés sur les fonctionnalités.
Et tout ça est relié, interconnecté, ce qui permet
d’offrir au chef de projet une vision globale de l’état
d’avancement et de la qualité du projet et de chaque
fonctionnalité.

Gestion des fonctionnalités


Premier concept.. c’est la gestion des fonctionnalités.. la gestion • Valider la création de l'exigence.
des exigences.
On peut définir les exigences comme le cahier des charges.. les À ce stade, L’exigence n’a pas encore donné lieu à des tâches
fonctionnalités à développer. pour les collaborateurs.
Elle est donc dans l’état "non débutée" et "non planifiée".
La gestion des exigences se passe par le centre de suivi de projets,
depuis le menu "Gestion - Gestion des exigences".
Bien sûr.. chaque exigence donne lieu à des réunions, des études
de faisabilité, à de la recherche. Une fois cette phase d’analyse
terminée, le chef de projet est alors en mesure de définir les
tâches de développement, de tests, de documentation qui vont
être nécessaires pour la réalisation de cette exigence, de cette
fonctionnalité. Et bien sûr.. il affecte ces tâches aux collabora-
teurs concernés.

Pour créer une nouvelle tâche associée à une exigence donnée,


il suffit de :
• Faire un clic droit sur l’exigence – Lier une nouvelle tâche à
l’exigence.
• Donner un titre explicite à la tâche, par exemple " Création de
la page promotion".
• Définir le type de tâche (par exemple du développement) depuis
la combo "Type".
Avant même le début du développement, dès la phase de concep- • Indiquer le projet concerné.
tion de l’application,les exigences, les fonctionnalités demandées • Indiquer l'intervenant chargé de réaliser cette tâche.
sont renseignées, généralement par le chef de projet. Lorsqu'il y • Indiquer la durée estimée pour la réalisation de la tâche.
a une fonctionnalité à développer, il suffit de : • Valider.
• Créer une nouvelle exigence (création simple) en cliquant sur
le bouton "+".
• Donner un titre explicite à l'exigence, par exemple " Mise en

62 - TDF TECH 2009 - www.pcsoft.fr


Gestion de la qualité
En effet, lorsqu'un développeur est plongé dans son développement,
il ne pense pas toujours à renseigner la tâche sur laquelle il tra-
vaille. C'est là que l'aide à la gestion du temps intervient puisqu'elle
demande quelle tâche activer.. aux moments opportuns : lors de
l’ouverture d’un nouveau projet, à interval régulier, etc.
Et ainsi de suite pour les autres tâches de développement mais Chaque développeur peut alors personnaliser cette gestion du
aussi les tâches de test et de documentation. temps depuis le bouton "options" afin de la rendre la plus efficace
par rapport à sa méthode de travail.

Planning de développement
À ce stade, le développeur retrouve dans son planning la tâche
créée pour lui par le chef de projet. Lorsque le développeur débute
la tâche, il lui suffit de l'indiquer dans le centre de suivi de projet
(ou le volet correspondant intégré à WinDev).
Dès cet instant, la gestion des exigences, le chef de projet visualise
à tout moment l’état des tâches dans la gestion des exigences. Note : En cas d'inactivité prolongée sur le poste (réunion, télé-
WinDev donne alors automatiquement un état à l'exigence en phone, etc.) une fenêtre apparait pour demander la tâche cor-
fonction de l'état des différentes tâches la constituant. respondant à cette période. En effet, lorsqu'un développeur part
en réunion par exemple.. il ne pense pas toujours à changer de
Par exemple, si la tâche de développement est passée en "En cours" tâche en cours.
par le développeur, l’exigence passe dans l'état "débutée.

Le chef de projet dispose également du taux de réalisation des


tâches. Grâce à ces informations, le chef de projet peut à tout
moment repenser les plannings au besoin !

Gestion du temps
Le développeur bénéficie non seulement de la gestion du temps
mais également d'une aide à la gestion du temps.

TDF TECH 2009 - www.pcsoft.fr - 63


CENTRES DE Contrôles (SUITE)

Suivi de projet et des incidents ou


suggestions (Suite)

Bien entendu, ces fonctionnalités sont facultatives, vous pouvez test pour l’exigence de mise en place du système de promotions,
désactiver la gestion du temps de WinDev ! le centre de contrôle qualité lui proposera automatique d’associer
l’incident à l’exigence.
•  Indiquer le développeur auquel l'incident est affecté. Si le
Phase de test développeur reçoit des fiches d'incidents qui ne lui sont pas des-
tinés, il pourra les réaffecter. En attendant, il est "responsable"
Une fois le développement du système de promotion terminé,
de cette fiche.
le développeur passe tâche de développement dans l'état "ter-
• Décrire les circonstances de l'incident.
miné".
• Indiquer si l'incident est prioritaire ou non
• Valider
Bien évidemment .. dans la gestion des exigences.. le chef de
projet visualise que du point de vue développement l’exigence
est "Terminée".

Et d’un point de vue "Test", l’exigence est planifiée mais le tes-


teur n’a pas encore commencé le test donc la fonctionnalité est
encore en "non testée". 
Pour le chez de projet, dans la fenêtre de gestion des exigences,
les informations ont été mises à jour :
• le testeur a commencé ses tests.
•  des incidents sont en attente de traitement par le
développeur.

Le chef de projet peut intervenir auprès du testeur affecté à


cette exigence pour qu’il commence le test. Durant cette phase,
le testeur va renseigner les incidents qu'ils rencontrent dans le
"Centre de contrôles Qualité" :
• Créer un nouvel incident en cliquant sur le bouton "+". L'état de développement est bien sûr passé dans l’état "à débo-
• Indiquer l'exigence associée. Si le testeur est sur la tâche de guer". Le chef de projet sait donc exactement où en est une

64 - TDF TECH 2009 - www.pcsoft.fr


Gestion de la qualité
exigence, tant au niveau qualité qu’au niveau développement..
et documentation.

Messagerie intégrée
Les centres de contrôle sont également reliés à la messagerie
intégrée de WinDev.
C'est-à-dire que dès qu’un incident est créé pour un développeur
donné, le développeur reçoit automatiquement dans sa messagerie
une notification.
Il est bien sûr possible de prévenir également automatiquement
le chef de projet par exemple en l'indiquant dans les options du
centre de contrôle qualité.
Le développeur et le chef de projet sont alors prévenus en temps
réel des incidents sur les modules qui les concernent. Analyse d'impact
Les versions 14 intègrent également une puissante gestion de la
qualité des applications, et des fonctionnalités , ce qui permet
• aux chefs de projet de connaître à tout moment l’état d’avan-
cement des projets tant au niveau temps passé qu’au niveau
validation des fonctionnalités ;
• aux développeurs de connaître l’état de leurs modules.

Et pour disposer de la vision globale de l’état des projets, le chef


de projet dispose également de statistiques sur les projets et sur
chacune des exigences.

Notre astuce
Il est également possible d’enregistrer un nouvel incident auto-
matiquement lors de l’envoi d’un message. Le développeur ou le
testeur saisit son message décrivant l'incident et coche l'option
"enregistrer en tant qu'incident".

TDF TECH 2009 - www.pcsoft.fr - 65


Erreurs d'ihm

Détecter des problèmes d'IHM non visibles

En version 14, WinDev signale, durant le dévelop- Exemple de détection d'erreurs


pement des applications, les erreurs d’IHM  : les
images non trouvées sur le disque, les libellés tron-
d'IHM
qués, des textes non traduits, le même raccourci Pour corriger ce type d'erreur, il suffit de double cliquer sur l'erreur
clavier utilisé pour 2 champs différents, etc … affichée dans le volet.
WinDev ouvre alors automatiquement la fenêtre sur laquelle
porte l’erreur, ainsi que la fenêtre de description de l’élément
Une erreur de compilation d'IHM qui pose problème.

Tout comme les erreurs de compilation, les erreurs de compilation Dans le cas d'une erreur d'IHM indiquant une image manquante,
d'IHM informe le développeur d'un problème au sein du projet. la fenêtre de description du champ concerné va être ouverte et
WinDev surligne en rouge le chemin incorrect.
Ces erreurs concernent les interfaces à proprement parlé de Il suffit alors de corriger le chemin de l'image et de sauvegarder
l'application. la modification.

Il existe différents types d'erreur de compilation d'IHM : Dans le cas d'une erreur de libellé tronqué, la fenêtre contenant
• une image utilisée dans un champ image (ou tout autre champ) le libellé est ouverte et le libellé concerné est sélectionné.
dont le chemin est erroné. Il suffit alors de corriger la taille du libellé, par l'option "Adapter
• un libellé de champ tronqué dans une ou plusieurs langues. la taille" du menu contextuel.
• un libellé de champ non renseigné dans une ou plusieurs lan-
gues.
• une table ancrée dans la fenêtre/page mais pour laquelle aucune
colonne n'est ancrée.
• un raccourci clavier qui existe plusieurs fois au sein d'une même
fenêtre.
• ...

Ces erreurs sont signalées à chaque sauvegarde de fenêtre ou page,


mais également à chaque recompilation du projet.

Activation des erreurs d'IHM


Pour activer les erreurs d'IHM, il suffit de cliquer sur le bouton
"Activer les erreurs d'IHM dans le volet "Erreurs de compilation".
WinDev propose alors de recompiler le projet afin de détecter
directement les erreurs d'IHM présentes dans le projet.

66 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

WebDev

TDF TECH 2009 - www.pcsoft.fr - 67


Référencement

Optimiser le référencement d'un site


WebDev

•  L'intégration d'une solution de paiement sécurisé (chapitre


suivant de ce support de cours).
• Les spécificités de développement du mode AWP.
L'exemple "Galerie" correspondant aux manipulations décrites ici
est fourni sur le DVD.

Rappel sur le mode AWP


Le mode AWP (Active WebDev Page) permet de créer des pages
autonomes et adressables directement.
La principale caractéristique technique du mode AWP, c’est qu’il
n’y a pas de contexte automatique. L’URL d’une page donnée reste
toujours la même, donc elle est référençable par les moteurs de
recherche.
Le développement d'un site en mode AWP nécessite une pro-
grammation spécifique du fait qu'il n'y ait pas de contextes
automatiques.

Rappel sur le référencement


WebDev permet de créer des sites Internet, Intranet,
Le référencement d'un site c'est l'indexation de ce site par les
et Extranet. Les équipes de développement disposent différents moteurs de recherche.
dans WebDev de plusieurs technologies intégrées : Il ne faut pas confondre le référencement avec le positionnement
•  Le mode standard, avec la gestion des sessions d'un site qui est le fait de retrouver ce site dans les premiers
100% automatiques, résultats du moteur de recherche.
• Le mode AWP, qui gère les pages individuellement, Pour référencer un site, les moteurs de recherche utilisent un
• La génération PHP, qui permet de développer en principe simple. L'administrateur du site donne l'URL de la page
WLangage et de générer du PHP. Ce mode est détaillé d'accueil au moteur de recherche.
dans ce même chapitre quelques pages plus loin. Le moteur de recherche va appeler cette page régulièrement et
Selon l'objectif et les contraintes du site à réaliser, la parcourir pour en indexer le contenu. Toujours à partir de cette
page, le moteur de recherche va ressortir tous les liens présents
il est important de choisir la bonne technologie. Or
dans la page.
pour réaliser un site Internet référençable et indexa-
Pour chaque lien, il va ensuite appeler la page qui est pointée par
ble efficacement par les moteurs de recherche, il est le lien et en indexer le contenu. Et ainsi de suite.
nécessaire d'utiliser le mode AWP.
Normalement, si toutes vos pages sont liées entre elles et que vous
Remerciements à Patrice Vermeille. Tous droits réservés sur ses n'avez pas de pages orphelines, toutes les pages de votre site sont
œuvres. référencées rien qu'en donnant l'adresse de la page d'accueil.

Mise en œuvre Développement pas à pas


Dans cet article, nous allons détailler la création pas à pas d'un site Création du projet
Catalogue en ayant pour objectif qu'il soit référençable à 100%. Tout commence par la création du projet en lui donnant un nom,
Tout au long du développement de ce site, les points suivants ici "Galerie".
seront mis en avant : Avec WebDev, il est possible de créer des sites dynamiques avec
• des points importants pour optimiser le référencement. contextes automatiques, des sites AWP, des sites PHP, on le verra
• des menus créés dynamiquement à partir de la base de don- en détail tout à l'heure, et également des sites statiques et semi-
nées. dynamique.

68 - TDF TECH 2009 - www.pcsoft.fr


WebDev
Pour cet exemple, il s'agit d'un "Site dynamique AWP". Note : un point important pour le référencement : il faut nommer
la page de manière intelligible car le nom de la page est géné-
ralement référencé. Dans notre exemple, nous avons utilisé des
caractères underscores ("_") entre les mots pour que le moteur
de recherche sépare "Familles" et "Produits" et référence chacun
des mots.

Il est également important de définir un titre, car cette informa-


tion est aussi utilisée par les moteurs de recherche. Dans notre
exemple, nous avons indiqué "Bienvenue sur le site de vente de
la Galerie d'art Tagnan".

Les autres étapes de l'assistant permettent de configurer le projet :


travail en équipe, charte de programmation, etc.
Au niveau de la base de données, nous allons utiliser ici une base
de données existante (au format HyperFileSQL) correspondant à Page AWP
l'analyse de l'exemple "Galerie". Notez dans la description de la page, en bas, que pour spécifier
qu'une page va être générée en mode AWP, il suffit de cocher la
case : "Génération en mode AWP".
Modèle de page Dans le cas de notre exemple, l'option est cochée par défaut, car
le projet est défini comme un site AWP.
Une fois le projet créé, il est intéressant d'en définir rapidement
l'aspect. La solution la plus simple est d'utiliser un modèle de
page (importer d'un site précédent ou créer à cette étape). Dans
l'exemple "Galerie", c'est le modèle PAGEMOD_Charte.

Bien entendu, il est possible de mixer les deux dans un même site,
c'est à dire des pages en mode classique, avec gestion automatique
du contexte, et des pages en mode AWP.

Menu Principal
Le menu principal va donner l'accès à toutes les pages de mon
site. Dans l'exemple "Galerie", nous allons créer deux entrées de
menu :
• une entrée de menu "Familles" : cette entrée va contenir toutes
les catégories d'oeuvres d'art.
•  une entrée de menu "Contactez-nous"  : pour permettre aux
Page principale
internautes de contacter, par email, le service commercial de
Une fois le modèle principal défini, il est possible de créer la page
la galerie d'art.
principale du site à partir de ce modèle. Cette page "page_familles_
produits" contiendra le menu principal du site et présenteras les
produits classés par catégorie.

Page de contact
Commençons par créer la page de contact. Cette nouvelle page
"page_contact" sera également basée sur le modèle MDL_Catalogue
et aura également un titre explicite "Contactez-Nous".
Cette page va contenir :
• Un champ de saisie simple avec le libellé " Sujet : " afin que
l'internaute puisse indiquer un titre à sa demande de contact

• un champ de saisie HTML qui va contenir le message de l'inter-

TDF TECH 2009 - www.pcsoft.fr - 69


Référencement (suite)

Optimiser le référencement d'un site


WebDev (SUITE)

naute. Afin de le rendre plus lisible, je veux offrir la possibilité // Accès aux détails d'un produit
aux internautes de saisir du texte mis en forme. LIEN_Envoyer..URL = ...
  "details.awp?idproduit="+gnIdProduit

Dans notre cas, sur le lien retour, on veut simplement retourner


à la page d'accueil. La page d'accueil n'attend pas de paramètres,
il suffit donc de définir la page destination dans la description
Pour que l'internaute voit immédiatement qu'il pourra mettre en du lien.
forme sa demande, nous allons demander à "toujours afficher la
barre de mise en forme".
Une fois les champs de saisie mis en place,il faut ajouter deux
liens : Notre conseil : essayer d'avoir le maximum de liens "référençables"
• Un lien "Envoyer" pour envoyer effectivement la demande de dans vos sites Internet. Vérifiez également que chaque page est
contact. accessible par au moins un lien référençable.
•  Un lien "Retour" (optionnel) pour retourner à la page d'ac-
cueil. Ajout de la page de contact dans le menu
Dans le menu, nous allons demander à afficher la page de contact.
Le lien "envoyer" sert ici à envoyer le mail correspondant. Le Comme précédemment, la page de contact n'attend pas de para-
code est alors très simple puisqu'il suffit d'utiliser les fonctions mètres, nous allons donc simplement définir la page à afficher
EmailXXX du WLangage. dans la description de l'option de menu.

// Préparation de l'email
EmailRAZ() Page principale
Email.Expéditeur = "pagecontact@magallerie.com" Une fois la page de contact terminée, nous allons maintenant
Email.Destinataire = "contact@magallerie.com" définir la page principale du site.
Email.Sujet = SAI_Sujet
Email.HTML = SAI_SaisieTexteHTML Cette page va contenir la liste de toutes les oeuvres classées par
famille. Et pour que l'internaute puisse filtrer par famille, nous
// Envoi du message
SI EmailEnvoieMessage(gsUtilisateur)= Faux ALORS allons créer le menu dynamiquement à partir des familles stockées
  // Affichage d'un message d'erreur dans la base de données.
  Erreur("Le message n'a pas pu être envoyé",...
    "Merci de réessayer ultérieurement.")
  RETOUR 1. Recherche des produits
FIN Les produits seront affichés dans une zone répétée, et pour
pouvoir filtrer simplement par famille de produits, nous allons
Lien référençable utiliser une requête :
Pour qu’un lien soit référençable par les moteurs de recherche, 1. Créer une nouvelle requête de sélection avec l'éditeur de
il faut que l’adresse du lien soit connue et définie au moment de requête.
l'affichage de la page dans le navigateur. 2. Sélectionner tout le fichier "Produit".
3. Donner un nom à la requête : REQ_ProduitParCatégorie.
Pour définir un lien ainsi référençable : 4. Ajouter le libellé de la catégorie dans le fichier famille (pouri
• Soit la page à appeler n'attend pas de paramètres, auquel cas, afficher la famille du produit).
dans la description du lien ou du bouton, il suffit de sélectionner 5. Ajouter un tri sur le libellé de la famille.
l'action "Afficher la page" et de choisir la page à afficher.
Pour que l'internaute puisse filtrer sur la famille, nous allons
ajouter une condition sur l'identifiant de la famille.

• Soit la page à appeler attend des paramètres, auquel cas, il est


nécessaire de donner la cible du lien par programmation avec la
propriété ..URL.

70 - TDF TECH 2009 - www.pcsoft.fr


WebDev
La requête est définie, il suffit maintenant de créer la zone répétée
qui va afficher les produits issus de cette requête.

2. Définition de la zone répétée


Il faut maintenant créer la zone répétée basée sur la requête Une fois la rupture définie, il suffit de personnaliser le haut de
créée précédemment. Cette zone répétée va afficher les rubri- rupture (style, couleur) et d'ajouter le libellé de la famille dans
ques suivantes : le haut de rupture.
• le libellé du produit,
• la description, Dans cet exemple, nous n'avons pas besoin du bas de rupture, il
• la photo, suffit donc de le rendre invisible.
• le prix,
• et le libellé de la famille. 4. Filtrage des produits
Cette zone répétée n'aura pas d'interaction Ajax avec le reste À cette étape, il faut que le menu des familles de produits permette
de la page, nous allons décocher le mode Ajax et profiter de la à l'internaute de filtrer les produits sur les familles.
possibilité d'afficher les données sur plusieurs colonnes : ici 3 Pour cela, la famille de produits à afficher va être donnée en
colonnes sur 3 lignes. paramètre à la page :
1. Déclarer un paramètre à la page
2. Donner en paramètre l'identifiant de la famille.

PROCEDURE PAGE_Familles_Produits(...
  gnIDFamille = PageParamètre("famille"))

Nous utilisons ici la fonction PageParamètre du WLangage pour


récupérer l'identifiant de la famille.
C'est simplement pour mieux référencer le site puisque les paramè-
tres sur les urls sont également indexés. Donc ici, le mot "famille"
sera indexé pour ma page.
3. Activer le filtre en spécifiant en paramètre la famille à la
requête. Ce code est à placer, par exemple, dans le code la zone
répétée.

//Paramètres de la requête REQ_ProduitParFamille


SI gnIDFamille = "" ALORS
  MaSource.pIDRecherche = Null
Une fois la zone répétée créée, il suffit d'organiser un peu les SINON
  MaSource.pIDRecherche = gnIDFamille
champs, définir la couleur des lignes, etc.
FIN
Rappel : Lorsqu'on passe un paramètre null à une requête, toutes
3. Mise en place d'une rupture les conditions définies sur ce paramètre sont ignorées. Donc si le
Pour avoir les produits séparés par famille, nous allons ajouter une paramètre passé à la page est vide, toutes les familles de produits
rupture sur la zone répétée. L'ajout d'une rupture s'effectue depuis seront affichées.
la description de la zone répétée : il suffit d'indiquer l'attribut
servant de rupture. Dans notre exemple, il s'agit bien entendu de
l'attribut contenant le libellé de la famille de produits. 4. Filtrage des produits depuis le menu
La page accepte maintenant un paramètre pour filtrer le contenu
par famille. Il faut maintenant créer les options de menu corres-
pondantes.

TDF TECH 2009 - www.pcsoft.fr - 71


Référencement (suite)

Optimiser le référencement d'un site


WebDev (SUITE)

Première étape : l'affichage de tous les produits.     FAMILLE.LibelleFamille, ...


•  Créer une option de menu avec pour libellé "Toutes les     sURL)
familles". FIN
• Indiquer l'action à effectuer : afficher la page sans paramètres, Le caractère "?" dans une URL indique au serveur que ce qui suit
donc directement dans la fenêtre de description. sont des paramètres.
Seconde étape : la création d'une option de menu pour toutes les
familles de produits. Astuce : l'opérateur crochet permet de faire de la concaténation
Toutes ces familles sont stockées dans la base de données, il est optionnelle de chaîne. Dans notre exemple, le caractère "/" sera
donc intéressant d'utiliser la création dynamique de menu (nou- ajouté uniquement si l'adresse renvoyée par la fonction PageAdresse
veauté des versions 14). ne se termine pas le caractère "/".

À cette étape, le menu est défini et les liens sont définis.


5. Remplissage dynamique du menu
Pour définir un menu dynamiquement, il suffit d'utiliser les fonctions
MenuXXX. Dans le code de déclaration global de la fenêtre, nous Définition de mots-clés par page
allons appeler une procédure AjouterCatégories qui va ajouter Afin d'améliorer le référencement, il est possible de définir les
les options de menu correspondant aux familles de produits. mots-clés des pages. Les moteurs de recherche indexent les mots-
clés d'une page en plus du contenu même de la page. Il est donc
Le principe est simple : parcourir les familles de la base de données,
important de les spécifier.
et pour chaque famille, ajouter une option de menu.
Dans notre exemple, ce que nous allons faire, c'est ajouter les
Ici, point important, le site doit être référencable. Il faut donc libellés des familles en mots-clés dans la page.
utiliser la fonction MenuAjouteOptionURL du WLangage et non En version 14, il est possible d'ajouter dynamiquement des mots-clés
MenuAjouteOption. dans une page grâce à la propriété ..MotsClé du WLangage.
En effet, la fonction MenuAjouteOptionURL permet de définir un // Ajoute le libellé de la famille
lien statique pour l'option de menu, donc un lien que les moteurs // en mot-clé de la page
de recherche pourront suivre. MaPage..MotsClés += [","] +
  FAMILLE.LibelleFamille
La fonction MenuAjouteOptionURL prend en paramètre : L'opérateur "+=" permet d'ajouter les mots-clés dynamiques à ceux
• le menu parent dans lequel il doit ajouter l'option; ici, c'est déjà définis en statique dans l'éditeur.
"familles".
• le nom de l'option qu'il doit créer, c'est le nom logique de l'op- Rappel  : la définition des mots-clés statiques s'effectue dans
tion de menu. l'onglet "Détail" de la fenêtre de description de la page (bouton "
• le libellé de l'option de menu Éditer les expressions et les mots-clés").
•  et l'URL qui doit être appelée lors du clic sur l'option de
menu.
Fichier SiteMaps
Dans notre cas, cela ne va pas être la même adresse pour chaque
La fréquence de mise à jour d'une page et sa priorité permettent
catégorie, il faut donc construire l'URL dynamiquement.
également d'améliorer le référencement d'un site. Certains moteurs
de recherche, dont Google, recherchent et analysent un fichier
L'URL, c'est l'URL de la page actuelle, que l'on récupère avec
associé au site, un fichier "SiteMaps".
la fonction PageAdresse du WLangage, à laquelle on ajoute le
paramètre indiquant l'identifiant de la famille. Ce fichier “SiteMaps” sert principalement à indiquer la fréquence
// Parcours des familles de mise à jour de chaque page et l'importance de chaque page
POUR TOUT FAMILLE d'un site.
  // URL pour cette famille
  sURL = PageAdresse() + ["/"] + ... Ce fichier "SiteMaps" sera généré automatiquement par WebDev
    "?famille=" + FAMILLE.IDFamille à partir des informations indiquées dans la zone "Référencement"
de la fenêtre de description de la page (onglet "Détail").
  // Ajoute une option de menu
  MenuAjouteOptionURL(OPT_Famille, ...
    "FAMILLE" + FAMILLE.IDFamille, ...

72 - TDF TECH 2009 - www.pcsoft.fr


WebDev
// Parcours des familles
POUR TOUT FAMILLE
  // Ajoute une page pour la famille
  CMOD_Plan.LienAjoute("Familles", ...
    FAMILLE.LibelleFamille, ...
    "./page_familles_produits.awp?famille="+...
    FAMILLE.IDFamille)
FIN

Pour cela, il suffit de parcourir toutes les catégories et pour chaque


catégorie, d'ajouter un lien dans le modèle de champs.
C'est le même principe que précédemment, avec l'adresse de la
page et le paramètre à passer à la page.
Ici, c'est l'identifiant de la famille.

Plan du site
Autre point important pour le référencement : disposer d'une page
contenant le plan du site.

Le plan du site est pratique pour deux raisons :


1. Il permet aux internautes de trouver les informations simple-
ment sur le site.
2. Il permet d'améliorer le référencement : toutes les pages sont
présentées dans le plan du site et sont donc référençables.

Pour mettre en place ce plan du site, nous allons donc créer une
nouvelle page "PAGE_plan" avec "Plan du site de la galerie d'art
Tagnan" comme titre. Plan du site depuis la page principale
Il ne reste plus qu'à ajouter un lien dans la page principale pour
WebDev dispose d'un champ spécifique : le champ "plan du site".
avoir accès au plan du site. Pour cela, il suffit d'ajouter une option
Le champ plan du site de WebDev est extrêmement pratique pour
de menu "plan" et d'indiquer dans la fenêtre de description de
les sites statiques et semi-dynamique.
l'option qu'il faut afficher la page "page_plan".
Il permet de créer automatiquement le plan du site sans code à
partir des pages décrites sous l'éditeur. Le site dispose désormais d'un plan du site complètement dynamique
qui sera donc automatiquement "à jour", et ce même lors d'ajout,
Notre exemple, lui, a seulement deux pages sous l'éditeur, mais
modification ou suppression de familles de produits.
a potentiellement autant de pages que de familles plus la page
contacts.
Afin de pouvoir référencer toutes ces pages, nous allons utiliser
un modèle de champs permettant de faire un plan du site com-
plètement dynamique :
•  Importer le modèle de champs MDLC_PLANDESITE dans le
projet
• Ajouter un champ "modèle de champs" dans la page "page_
plan".
• Initialiser le modèle de champs avec la page "page_contacts"
dans le code d'initialisation de la page "page_plan".
// Ajoute la page des contacts
CMOD_Plan.NiveauAjoute("Contactez-nous",...
  "./page_contact.awp")
• Ajouter la page des familles (toujours dans le code d'initialisation
de la page "page_plan".
// Ajoute la page de familles
CMOD_Plan.NiveauAjoute("Familles",...
  "./page_familles_produits.awp")
• Ajouter toutes les familles de produit sprésentes dans la base
de données

TDF TECH 2009 - www.pcsoft.fr - 73


paiement sécurisé

Mise en place d'un système de


paiement sécurisé

Composant PaiementSécurisé
Pour gérer le paiement sécurisé, le composant PaiementSécurisé
livré sur le DVD du support de cours est utilisé.
Ce composant permet de gérer le paiement sur différentes pla-
teformes bancaires :
• Paybox,
• CyberMut (CIC, Crédit mutuel, OBC),
D'autres plateformes de paiement seront disponibles dans les
prochaines versions de ce composant.
Pour plus d'informations sur la solution de paiement sécurisé
CYBERMUT, consultez le site http://www.cmcicpaiement.fr

Paiement externalisé : principes


Il existe différents types de paiement sur Internet. Un type de
paiement sécurisé particulièrement intéressant est le paiement
externalisé : le paiement est géré par un prestataire de confiance
qui s’occupe de tout.

L’avantage de ce principe de paiement réside dans le fait que les


aspects de sécurité, cryptage, certificat,etc. ne sont pas gérés
par le développeur de l'application.

Le principe de ce paiement est très simple :


• le client remplit son panier et valide sa commande.
• le site va envoyer la demande de paiement au serveur du pres-
tataire spécialisé.
• le prestataire sécurisé affiche à l’internaute une page contenant
le formulaire de saisie des informations bancaires.
• l’internaute saisit son n° de carte bleue.
• le prestataire fait une demande d’autorisation auprès du grou-
Lors du développement d'un site de vente en ligne, la pement carte bancaire.
partie concernant le paiement est souvent délicate à • le prestataire renvoie le n° de l’accord au site marchand.
mettre en œuvre. Il est nécessaire de s'interfacer avec •  le site marchand est payé et peut valider la commande de
la solution proposée par un prestataire bancaire et l’internaute.
chaque prestataire propose une solution différente.
Le composant "PaiementSécurisé", disponible sur le Utilisation du composant
DVD de ce support de cours, permet d'intégrer rapi- Pour utiliser le composant PaiementSécurisé, il est nécessaire de
dement et simplement les solutions de paiement de l'importer dans l'application WebDev souhaitée.
différents prestataires. Pour importer un composant, il suffit d'utiliser le menu "Atelier ..
Note : Le composant "PaiementSécurisé "est un exemple d'inté- Composant .. Importer un composant dans le projet".
gration de différentes solutions de paiement sécurisé dans un site À la fin de l'import, WebDev affiche la fenêtre de documenta-
WebDev. Il ne s'agit pas d'une préconisation de ces systèmes de tion du composant. Cette documentation fournit les différentes
paiement par la société PC SOFT. fonctions, variables et constantes disponibles pour effectuer un
Il est rappelé que l'utilisation d'un système de paiement nécessite paiement en ligne.
la souscription d'un contrat auprès du prestataire bancaire.

74 - TDF TECH 2009 - www.pcsoft.fr


WebDev
Définition d'un paiement Exemples de gestion de panier
Dans un premier temps, il est nécessaire de déclarer un paiement.
Pour l'exemple, le paiement s'effectuera auprès de CyberMut WebDev propose, en standard :
Crédit Mutuel. •  un composant "Composant Panier". Ce composant permet de
gérer de "A à Z" un panier de site de vente.
// Crée un objet de paiement sécurisé •  deux exemples de site vitrine qui gèrent un panier  : "WW_
// dédié à Cybertmut Crédit Mutuel VitrineAWP" et "Catalogue Internet".
MonPaiement est un …
  PaiementSécurisé(CréditMutuel)

Lors de l'utilisation du composant de paiement, il est nécessaire


de spécifier les paramètres du contrat défini avec le prestataire
bancaire. Ces paramètres sont fournis par le prestataire lors de
la souscription d'un contrat auprès de leurs services. Dans le cas
d'un paiement CyberMut, les paramètres sont :
• le numéro du contrat,
• le code de la société,
• une phrase clé,
• une clé calculée.
• le numéro de commande. Ce numéro de commande doit absolu-
ment être unique (par exemple, la dateheure courante).
• l'adresse des pages à appeler lorsque le paiement est validé,
refusé ou abandonné.

// Données du contrat (test)


MonPaiement:Contrat = 1234567
MonPaiement:CodeSociété = "TESTSOC"
MonPaiement:PhraseClé = "Phrase clé"
MonPaiement:CléCalculée = "abcdef1234"
// Définit le numéro de commande (unique)
MonPaiement:NuméroCommande = …
  DateDuJour + Maintenant
// Page à appeler lors de la validation
MonPaiement:SurValidationPaiement = …
  "./ValidationPaiement.awp"

Le paiement se lance ensuite par la procédure Paiement du


composant. Cette fonction attend en paramètres :
• les informations du paiement rempli précédemment,
• le montant à payer,
• l'adresse email à laquelle le site de paiement doit envoyer la
confirmation de paiement. Il s'agit donc de l'adresse du client.

// Lance la procédure de paiement


Paiement(MonPaiement, ATT_PrixHT, …
  "celine.dalmosso@gmail.com")

Remarque :
Pour tester le composant, il est possible d'utiliser des informations
de test (numéro de carte, numéro de contrat, etc.). Cela per-
met de valider le fonctionnement sans effectuer de transaction
bancaires en réel.

TDF TECH 2009 - www.pcsoft.fr - 75


MASHUP

Mixer des données HyperFileSQL et des


données Google

Google du commercial.
Pour établir une connexion à un compte Google, le WLangage
dispose d'un type de variable spécifique : gglConnexion. Ce type
de variable permet de paramétrer la connexion à un compte très
simplement.
// Objet de connexion au compte Google
MaConnexion est un gglConnexion
Il suffit ensuite de spécifier les informations de connexion à cette
variable : adresse email, mot de passe.
// Spécifie les informations de connexion
MaConnexion.Email = "email@societe.fr"
MaConnexion.MotDePasse = "motdepasse"
Il suffit enfin d'établir la connexion à proprement parlé, à l'aide de
la fonction gglConnecte, en lui passant en paramètre la variable
contenant les informations de connexion.
// Etablit la connexion
GglConnecte(MaConnexion)
Remarque :
La connexion est nécessaire pour utiliser différentes familles de
fonctions Google : les agendas, les cartes, les contacts, picasa,
les documents.
Le Mashup est un concept qui consiste à mettre en
commun des informations provenant de sources dif- Récupération d'un agenda
férentes. Pour afficher les rendez-vous d'un agenda donné, il est nécessaire
de récupérer l'agenda. Pour récupérer un agenda, il suffit d'utiliser
Cela permet de créer une véritable liaison entre des
la fonction WLangage gglRécupèreAgenda. Cette fonction prend
logiciels différents. en paramètres :
WinDev et WebDev disposent de fonctionnalités pour • la connexion google à utiliser.
simplifier le mashup : le databinding, mais également • le nom de l'agenda à récupérer. En effet, il est possible qu'un
les différentes fonctions en lien avec Google. même compte Google dispose de plusieurs agendas différents.
Cette fonction renvoie une variable de type gglAgenda. Cette
Projet d'illustration variable est en fait une structure contenant des informations sur
Les projets utilisés pour illustrer ce sujet sont : les rendez-vous.
• "WW Mashup". Pour utiliser cet exemple, il est nécessaire de // Objet Agenda
renseigner les informations de connexion (compte et mot de passe) MonAgenda est un gglAgenda
dans le code d'initialisation de projet. // Récupère l'agenda "Agenda professionnel"
• "WD Google". MonAgenda = GglRécupèreAgenda(…
  MaConnexion, …
  "Agenda Professionnel")
Manipulation d'agendas Google en
WinDev Affichage des rendez-vous dans une table
Une fois l'agenda récupéré, les rendez-vous sont affichés dans
L'exemple "WD Google" est une application qui permet de visualiser
une table.
les rendez-vous de la journée d'un commercial donné, et d'ajouter
de nouveaux rendez-vous. Cette table utilise le databinding : les informations affichées sont
directement issues de la variable MonAgenda, et plus précisément
Connexion au compte Google du tableau Evénement de cette variable.
Dans un premier temps, il est nécessaire de se connecter au compte Les colonnes sont reliées aux différentes variables :
• le titre du rendez-vous,

76 - TDF TECH 2009 - www.pcsoft.fr


WebDev
• la date de début, simplifiée.
• la date de fin,
• le contenu descriptif.
Fonctionnement
La page WebDev va chercher les informations de rendez-vous dans
Remarque : l’agenda Google, grâce aux fonctions WLangage. Chaque rendez-
Il est possible de remplir la table par programmation, en parcourant vous est associé à une adresse email d'un contact.
le tableau Evénement de la variable MonAgenda.
// Objet Evénement // Récupère l'agenda professionnel
MonRendezVous est un gglEvénement Agenda = GglRécupèreAgenda(MaConnexion,…
  "Agenda Professionnel")
// Parcours des rendez-vous de l'agenda
POUR TOUT ELEMENT MonRendezVous DE … // Définit les dateheures de récupération
 MonAgenda.Evénement DateDébut..PartieHeure = "080000"
DateFin..PartieHeure = "230000"
  // Ajoute le rendez-vous dans la table
  TableAjouteLigne(TABLE_Evénement, … // Récupération des événements qui composent
   MonRendezVous.Titre, l'agenda pour le jour courant
   MonRendezVous.DateDébut, GglRemplitAgenda(MaConnexion,MonAgenda, …
   MonRendezVous.DateFin,   DateDébut, DateFin)
   MonRendezVous.Contenu)
FIN Pour chaque rendez-vous, les informations du contact sont récupé-
rées directement dans une base de données HyperFileSQL, à l'aide
Ajout d'événements dans un agenda de l'adresse email du contact, et affichées dans une table.
Pour ajouter un événement dans un agenda, il est requis d’avoir // Objet Evénement
préalablement établi la connexion et récupéré l'agenda dans une MonEvenement est un gglEvénement
variable gglAgenda. // Parcours des événements de l'agenda
POUR TOUT MonEvenement DE Agenda.Evénement
Un événement peut être manipulé par une variable gglEvénement.
 // Mémorise l'email de l'invité
Pour ajouter un événement à un agenda, il suffit donc de :
 EmailInvite = MonEvenement.Invité[1].Email
• déclarer un objet gglEvénement.  // Recherche ce contact dans la base
// Objet Evénement  HLitRecherchePremier(Client,EMail, EmailInvite)
MonRendezVous est un gglEvénement  // Ajoute une ligne pour ce rendez-vous
• remplir les informations qui définissent cet événement. Pour  TableAjouteLigne(TABLE_RDV, …
  MonEvenement.DateDébut,…
faciliter le remplissage, l'exemple "WD Google" dispose d'une
  EmailInvite,
fenêtre "FEN_AjoutRDV". Cette fenêtre utilise le databinding  :   Client.NumClient,
les champs de cette fenêtre sont liés directement aux membres   Client.NomContact +" "+ Client.PrénomContact,
de la variable MonRendezVous. Il suffit alors d'utiliser la fonction   Client.Latitude, Client.Longitude,
EcranVersSource qui permet de récupérer les valeurs des champs   Client.Ville,
directement dans la variable.   MonEvenement.Titre)
FIN
// Récupération des informations
EcranVersSource() Enfin, le trajet à effectuer pour voir tous les contacts est affiché
dans la carte. Lors la sélection d'une ligne de rendez-vous dans
• ajouter l'événement défini dans le tableau des événements de
la table, un marqueur est ajouté sur la carte pour localiser le
l'agenda. Cet ajout est réalisé par la fonction Ajoute.
lieu du rendez-vous.
// Ajout du rendez-vous à l'agenda
Ajoute(MonAgenda.Evénement, MonRendezVous)
• mettre à jour l'agenda chez Google par la fonction gglEcrit.
Cette fonction permet de mémoriser les informations des varia-
bles gglXXX sur le serveur. Cette fonction prend en paramètres
un objet gglConnexion et l'objet à mettre à jour (gglAgenda,
gglContact, etc.).
// Mémorise l'agenda
GglEcrit(MaConnexion,MonAgenda)

Exemple de MashUp en WebDev


L'exemple "WW Mashup" est un exemple de mashup sur une page
web. La page "PAGE_Mashup" contient :
• une table WebDev qui affiche les rendez-vous de la journée,
• une carte "Google Map" qui affiche l'itinéraire de la journée.
Cette page permet à une secrétaire de gérer les rendez-vous
d’une équipe de commerciaux. Il s'agit d'une gestion de planning

TDF TECH 2009 - www.pcsoft.fr - 77


WebDev PHP

Création et déploiement d'un site PHP

dépend de la version fournie par l'hébergeur.


•  Une base de données MySQL et si nécessaire la
couche cliente MySQL. De même que pour PHP, il est
conseillé d'utiliser la même version de MySQL que
celle fournie avec l'hébergement.

Configuration du projet
Pour spécifier qu’un site WebDev est un site PHP, il
suffit de l'indiquer dans l’assistant de création de
projet. Nous vous conseillons d'indiquer le plus tôt
possible la nature du projet afin de permettre au
compilateur d'indiquer les éventuelles indisponibilités
d'un champ ou d'une fonction en PHP.

Configuration de l'analyse
Lors de la réalisation d'un site PHP, l'éditeur d'analyses
propose une connexion spécifique "Accès Natif PHP
MySQL" qui est la connexion entre le site PHP et la
base MySQL.
Pour bénéficier du mode test "en simulation" et ainsi
disposer du débogueur de WebDev, il est également
WebDev permet de générer des sites dynamiques PHP
nécessaire d'installer l'accès natif MySQL pour WebDev. Cet accès
avec ou sans session accédant à une base MySQL. Il est natif permet au moteur WebDev d'accéder à la base de données
alors possible de réaliser un site PHP et de l'héberger MySQL. Cette seconde connexion peut être décrite depuis l'analyse
sur un site mutualisé "classique" à moindre coût (par ou par programmation.
exemple OVH ou même un hébergement personnel
Note : Avec WebDev 14 et l’accès natif AS/400, il est possible
chez Free). d'accéder directement à des bases AS/400 depuis des sites PHP.
Grâce à ces accès natifs, la manipulation de la base de don-
Mise en œuvre nées (MySQL ou AS/400) s'effectue par les fonctions Hxxx :
Pour illustrer le développement et le déploiement d'un site WebDev HLitRecherche, HAjoute, etc.
PHP, cet article utilise le projet "Extranet_Precilia". Les paramètres Dans les autres cas (bases tierces ou HyperFileSQL), l'accès aux bases
de connexion à la base de données doivent être renseignés dans de données depuis PHP s'effectue grâce aux fonctions SQLxxx.
le "code d'initialisation de session PHP".

Le projet exemple
Configuration du poste de
La création des pages se fait de façon classique, comme avec
développement un projet WebDev classique. Le projet "Extranet_Precilia" est
Lors d'un développement de site PHP, il est nécessaire d'installer constitué de :
quelques modules spécifiques sur le poste de développement : • Un modèle de page principale correspondant à la charte graphique
• Un serveur web : Apache ou IIS par exemple. Normalement, un du site : PAGEMOD_IHM.
développeur WebDev dispose déjà ce type de logiciel. En revanche, • Un modèle de page correspondant à la gestion de la popup de
lors de la réalisation d'un site PHP, il peut être intéressant d'utiliser détail d'un produit : PAGEMOD_POPUP. Cette popup est gérée
un serveur Web sensible à la casse (un hébergement mutualisé par programmation Ajax.
sous linux sera sensible à la casse). • Un modèle de champ correspondant à la gestion du panier :
• Un moteur PHP en version 4 ou 5. La version minimale suppor- MDLC_ModelePanier. Le panier est ici affiché sous la forme d'une
tée par WebDev est la version 4.3.2. La version de PHP à utiliser zone répétée Ajax.

78 - TDF TECH 2009 - www.pcsoft.fr


WebDev
Lors du premier lancement, il suffit d'indiquer les paramètres FTP
Ensuite, les différentes pages sont des pages "PHP" avec contexte. fournis par l'hébergeur :
Cela signifie que les variables et les positions dans la base de don- • l'adresse du serveur FTP (et éventuellement le port),
nées sont automatiquement gérées par WebDev, ce qui simplifie • le nom d'utilisateur et le mot de passe,
la programmation. • le nom de répertoire correspondant au site visible (par exemple
"www" chez OVH).

Connexion à la base de données


La connexion à la base de données peut être décrite :
• soit dans l'analyse,
• soit par programmation grâce aux fonctions hDécritConnexion
et hChangeConnexion du WLangage.
Dans la majorité des hébergements PHP (hors serveur dédié), la
base de données MySQL n'est accessible que depuis le site et non
depuis Internet. Il est donc nécessaire de disposer d'une base de
données "locale" et d'une connexion spécifique vers cette base de
données locale lors du mode test.
Note : pour remplir la base de données locale avec les mêmes
données que la base en production, il est généralement possible
de récupérer le contenu de la base MySQL de production par
PhpMyAdmin.
// Définition de la connexion
SI EnModeTest() ALORS
  // Connexion en mode test
  HDécritConnexion("MaConnexion",
Ensuite, le déploiement s'effectue en deux étapes :
    UTILISATEUR_BASE_TEST,
    MOTDEPASSE_BASE_TEST, • une phase de préparation où "WDDéploie" analyse le répertoire
    SERVEUR_BASE_TEST, local du site et le compare au site déployé. A la fin de cette phase,
    BASE_DONNEES, l'outil "WDDéploie" affiche au développeur les éléments à déployer
    hAccèsNatifMySQL) pour mettre à jour le site.
SINON • une phase de déploiement pendant lequel "WDDéploie" réalise
  // Connexion sur le serveur de production le transfert effectif des fichiers sur l'hébergement.
  HDécritConnexion("MaConnexion",
    UTILISATEUR_DISTANT,
Note : La première page du site chez OVH, ou même sur un héber-
    MOTDEPASSE_DISTANT,
    SERVEUR_DISTANT, gement personnel comme Free, doit obligatoirement s’appeler
    BASE_DONNEES, "index.html" ou "index.php". 
    hAccèsNatifMySQL) WebDev crée automatiquement ces pages à partir de la page
FIN d’accueil définie dans le projet.
// Changement de la connexion
HChangeConnexion("*","MaConnexion")
// Ouverture et/ou création de la base
HCréationSiInexistant("*")
La fonction WLangage HCréationSiInexistant créera les fichiers
dans la base de données s'ils n’existent pas déjà.

Déployer un site PHP


Une fois le site créé et testé, l’étape suivante est le déploiement
du site chez un hébergeur.
Le déploiement peut s'effectuer de deux manières :
• manuellement à l'aide d'un client FTP (FileZilla par exemple).
• automatiquement grâce à l'outil "WDDéploie" livré en standard
avec WebDev.
L'avantage de cette seconde solution, c'est que l'outil "WDDéploie"
"connait" l'architecture du site et peut donc aider lors de sa mise
à jour en :
• vérifiant les fichiers modifiés.
• filtrant les projets par langue.

TDF TECH 2009 - www.pcsoft.fr - 79


Abonnez-vous !
L90119
Tarif modifiable sans préavis Vos Nom & Prénom : ...........................................................................
Votre Société : ..................................................................................
Bulletin d’abonnement à retourner avec Votre Adresse précise : ........................................................................
votre règlement à : .....................................................................................................
PC SOFT Code Postal : .............................. Ville : .............................................
Lettre du Support Technique Pays : ........................................ Tel : ...............................................
BP 44 408 Adresse Email : .................................................................................
34197 MONTPELLIER Cedex 05
France Je choisis un abonnement “LST PC SOFT” pour : À partir du numéro : ..............

En cas de paiement par carte bancaire,


FRANCE Métropolitaine □ 1 an - 4 N°+ 4 DVD : 159 euros HT; 190,16 euros TTC
vous pouvez nous faxer votre abonne-
□ 2 ans - 8 N°+ 8 DVD : 279 euros HT ; 333,68 euros TTC
ment au :
+33 (0) 4 67 03 07 87 AUTRE (exp. par avion) □ 1 an - 4 N°+ 4 DVD : 175 euros HT
□ 2 ans - 8 N°+ 8 DVD : 299 euros HT
Note : une facture acquittée est systématique-
 Ci joint mon règlement de : ............. Euros TTC ment adressée.

□ Je règle par chèque.        J’autorise PC SOFT à débiter sur ma carte VISA/MasterCard

□□□
            la somme de : ..................... Euros
□ Je règle par Carte Bancaire.      Cryptogramme :

□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année

Signature obligatoire du détenteur de la carte :


Nom du détenteur de la carte :
..........................................................

80 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Services Web

TDF TECH 2009 - www.pcsoft.fr - 81


SOA

Réalisation d'une application "SOA" (Services


Oriented Architecture)

SOA est l'acronyme de Services Oriented Architecture • Type de génération et nom


(Architecture orientée services). Les accès au web service qui va être utilisé peuvent être définis soit
sous forme de classe, soit sous forme de collections de procédures.
Une application est dite de type SOA lorsqu'elle utilise Le nom de l'objet généré peut ensuite être modifié.
des services externes pour offrir des fonctionnalités
aux utilisateurs. Ces services peuvent être des web Une fois le web service importé, les éléments générés (classes ou
services, des composants, des pages AWP, … collections) sont ajoutés au projet, avec toutes les procédures qui
permettent d'appeler le web service.
Ce sujet présente comment importer et utiliser un web
service dans une application existante.
Remarque :
Dans la collection de procédures (ou classe) générée, il existe
Projet d'illustration des procédures publiques (picto vert) et privées (picto rouge).
Le projet utilisé pour illustrer ce sujet est "WD CRMServices" Pour utiliser le web service dans un projet, il suffit d'utiliser les
(présent sur le DVD). procédures publiques.
Le web service présenté dans ce sujet est disponible à cette
adresse  : http://ec.europa.eu/taxation_customs/vies/api/
Utilisation du web service
checkVatPort?wsdl.
Dans l'application exemple "WD CRMServices", le web service importé
va permettre de contrôler le numéro de TVA d'une société.
WinDev permet de :
• générer des web services
L'appel se fera sur le bouton "Vérifier le numéro de TVA
• utiliser des web services, générés avec WinDev ou non.
Intracommunautaire" de la fenêtre FEN_FicheSociete.

Utilisation d'un web service Notre conseil :


Il est conseillé d'appeler les web services sur des actions utilisa-
L'application exemple "WD CRMServices" permet de gérer des teurs; par exemple dans "WD CRMServices", sur le clic d'un bouton
clients. Dans cette application, la TVA Intracommunautaire doit être "Vérifier le numéro de TVA".
vérifiée. Il existe un web service, mis à disposition gratuitement Tout simplement parce qu'un web service peut être indisponi-
par l'Union Européenne, qui permet de vérifier si un numéro de ble.
TVA intracommunautaire est valide ou non.
La fonction à utiliser pour ce web service est la fonction checkVAT.
Ce web service est disponible à cette adresse : http://ec.europa. Cette fonction attend le code ISO du pays et le numéro de TVA à
eu/taxation_customs/vies/api/checkVatPort?wsdl. vérifier et renvoie une variable de type checkVATResponse.

// Variable de résultats de contrôle de TVA


Importation du web service stMonRésultat est un STcheckVatResponse
Pour importer un web service, il suffit de cliquer sur le menu
"Atelier .. Services Web .. Importer et utiliser un service dans ce Pour accéder aux détails de la structure (les variables qui la
projet" et de se laisser guider par l'assistant : composent), il suffit de faire F2 sur la déclaration. La structure
checkVATResponse contient :
• Adresse du fichier WSDL. • le code du pays,
Le fichier WSDL est le fichier de description du service web. Dans • le numéro de TVA,
ce fichier sont décrites les différentes procédures que le web • la date de la requête,
service exporte avec leurs différents paramètres. Il s'agit donc • un booléen qui indique si le numéro est valide ou pas,
des points d'entrées et de sorties du web service. • le nom de la société à laquelle correspond ce numéro,
• l'adresse de la société.
• Type de web service.
Le web service peut en effet posséder des spécificités J2EE ou Pour contrôler le numéro de TVA la société courante affichée dans la
dotNet. Si aucune information n'est connue quand à la plateforme fiche, il suffit d'appeler la fonction checkVAT du web service.
de génération du web service, il est conseillé de choisir "SOAP
Générique".

82 - TDF TECH 2009 - www.pcsoft.fr


Services Web
// Contrôle le numéro de TVA pour le pays
stMonRésultat = checkVat(...
  COMBO_Pays, ...
  SAI_TVAIntraCommunautaire)

La variable booléen m_valid indique maintenant si le numéro de


TVA est valide ou non. Il est donc possible d'afficher un message
à l'utilisateur, ou de changer la couleur de fond du champ selon
la validité du numéro de TVA par exemple.

// Si le numéro de TVA est valide


SI stMonRésultat.m_Valid = Vrai ALORS
  // Colorise le fond du champ en vert
  SAI_TVAIntraCommunautaire..CouleurFond = …
    VertPastel
SINON
  // Colorise le fond du champ en rouge
  SAI_TVAIntraCommunautaire..CouleurFond = …
    RougePastel
FIN

TDF TECH 2009 - www.pcsoft.fr - 83


SAAS

Réalisation d'une application "SAAS"


(Software As A Service)

SaaS est l’acronyme de "Software as a Service". Il La duplication de base


s'agit d'une manière de commercialiser, de distribuer
La duplication automatique de base HyperFileSQL, disponible
un logiciel.
à partir des versions 14, facilite a mise en place d'une base par
Le logiciel se vend non plus sous la forme d'un pro- société cliente, à partir d'une base générique.
duit que le client installe en interne, mais sous forme
d'une application accessible à distance par le biais Pour dupliquer une base, il suffit de :
d'Internet. • ouvrir le Centre de Contrôle HyperFileSQL.
• faire un clic-droit sur la base de données à dupliquer.
WebDev dispose de nombreux avantages qui permet- • choisir l'option "Dupliquer la Base de Données sélectionnée".
tent de mettre en place simplement et rapidement des Les fichiers, liaisons, triggers, procédures stockées et droits sont
applications sur le modèle SaaS. automatiquementdupliqués, en un clic.
Il suffit alors de spécifier le nom de la nouvelle base à créer.

SaaS : principes Pour une application en mode SaaS, c’est une fonctionnalité très
Le SaaS est un mode de livraison des applications où le fournis- pratique.
seur héberge le service.

Les clients accèdent à ce service via Internet  : on parle alors La sécurité des données
d'application de type "client léger". WebDev permet de gérer facilement le mode sécurisé "HTTPS" et
"SSL", indispensable à toutes transactions sécurisées.
La facturation d'un tel service se fait en général par abonnement,
par exemple par nombre d’utilisateurs et par mois. Il suffit d'utiliser la fonction SSLActive du WLangage dans les
pages du projet.
Le groupware utilisateur
Le groupware utilisateur de WebDev permet, par exemple, de // Active le mode sécurisé SSL
maîtriser la facturation grâce à l’identification des utilisateurs SSLActive(Vrai)
et à l'historique des connexions.
Le cryptage et la protection par mot de passe des fichiers de
Pour activer le groupware utilisateur, il suffit d'ouvrir la fenêtre données HyperFileSQL assurent également un niveau de sécurité
de paramètres du groupware accessible via le menu "Atelier .. supplémentaire pour les clients.
Paramètres du groupware" et de cocher l'option "Activer".

L'installation multiple de sites


La base HyperFileSQL gratuite identiques
En général, avec un contrat SaaS, chaque société cliente a sa base de L'intérêt de l'installation multiple est d'avoir un projet unique et
données dédiée sur les serveurs du fournisseur de l’application. donc une maintenance unique pour tous les clients.
Autrement, il faudrait dupliquer le code source autant de fois
Mais il est également possible de mettre en place un Saas avec qu'il existe de clients.
une seule base de données pour tous les clients; il faut juste le
gérer dans la structure de l'analyse. L'installation multiple de sites identiques sur un même serveur
facilite donc la mise en place en mode SaaS.
Comme la base de données HyperFileSQL est entièrement gra-
tuite, quel que soit le nombre de serveurs, de connexions, de Pour déployer un site plusieurs fois sur un même serveur, il suffit
sites, d’utilisateurs, aucun frais de déploiement supplémentaire de lancer l'assistant de création de la procédure d'installation.
n'est à craindre. Cet assistant est accessible via le menu "Atelier .. Créer la pro-
cédure d'installation".

WebDev génère dans un premier temps la bibliothèque du site.


La bibliothèque contient tous les éléments nécessaires au bon

84 - TDF TECH 2009 - www.pcsoft.fr


Services Web
fonctionnement du site.
Il suffit ensuite de sélectionner le type de déploiement, par
exemple FTP, et de renseigner les informations de connexions
de ce serveur.

Il est ensuite possible de spécifier le nom du site qui sera utilisé sur
le serveur. Il suffit alors d'indiquer un nom spécifique au client.

Pour chaque site, le paramétrage du nombre de connexions


simultanées et du nombre de connexions maximum par utilisateur
est disponible.
Il est conseillé d'autoriser plus d'une connexion par internaute.
En effet, l'identification d'une connexion est faite par l'adresse
IP. Si un client utilise un proxy, tous les collaborateurs de cette
entreprise auront la même adresse IP.

TDF TECH 2009 - www.pcsoft.fr - 85


Plus d'informations sur ces sujets ?

En formation
"WinDev Expert"

Dans la LST 73
Exemple "WW_SOA" et "WW_SOA_DEMO"

Dans la LST 62
Exemple "WWServiceWeb"

86 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Déploiement d'applications

TDF TECH 2009 - www.pcsoft.fr - 87


Déploiement

Choisir le type de déploiement adapté à une


application

Une fois l'application WinDev développée, les tests sont diffusées sur un nombre de postes restreint ou pour lesquelles
passés et l'exécutable créé : comment gérer simple- peu de mises à jour sont prévues.
ment et efficacement le déploiement d'une application
WinDev et les mises à jour futures ?
Installation réseau
WinDev propose la création de différents types d'ins-
WinDev permet également de créer une installation réseau, c’est-
tallation.
à-dire une installation avec un live update automatique.
WinDev offre toutes les fonctionnalités nécessaires à Lors du déploiement de l'application, une installation "serveur"
un déploiement facilité et une exploitation simplifiée est réalisée : il s'agit de l'installation de référence.
des applications ! Ensuite tous les postes clients installent l'application depuis cette
installation de référence. Lors des prochains lancements de l'ap-
Que ce soit une installation autonome, réseau ou plication, celle-ci va automatiquement vérifier si une mise à jour
internet, avec WinDev vous créez une procédure est disponible sur le serveur. Si une mise à jour est disponible,
d'installation complètement adaptée à votre type de l'application va se mettre à jour automatiquement.
déploiement.
L'installation avec live update automatique peut être faite :
• par réseau local. Dans ce cas, l'installation de référence sera
Création de la procédure réalisée dans un répertoire partagé.
d'installation • par Internet. Dans ce cas, il suffit de copier l'installation réfé-
rence et la page HTML générée sur un serveur HTTP, un serveur
La création de la procédure d'installation s'effectue très simplement Web. Les utilisateurs installent et mettent à jour l'application
à l'aide d'un assistant. Cet assistant est accessible via le menu depuis ce serveur Web.
"Atelier .. Créer la procédure d'installation".
Pour ces installations, plusieurs paramétrages sont possibles.
Les étapes de l'assistant se découpent en deux parties :
• la création de l'exécutable. Cette partie reprend les plans de
l'assistant de création de l'exécutable. Si l'exécutable à déployer Dans quel cas utiliser cette installation ?
a déjà été généré, il est possible d'accéder directement aux Ce type d'installation est recommandé pour les applications qui
options d'installations. Il suffit de cliquer sur le lien "Installation" sont largement diffusées et pour lesquelles les mises à jour sont
à gauche de l'assistant. régulières.
• le paramétrage de l'installation. Cette partie permet de choisir le
type d'installation à utiliser et de choisir les options souhaitées.
Contrôle des versions
Le contrôle de version permet de spécifier :
• l'exécutable de référence pour l'installation. En effet, si le projet
génère plusieurs exécutables différents, il est nécessaire d'indiquer
quel exécutable servira de référence pour la mise à jour.
• la version minimale autorisée. Cette option permet notamment
de force une mise à jour. Par exemple, si une mise à jour auto-
matique des fichiers a été effectuée, il faut que les applications
clientes se mettent à jour pour bénéficier de la nouvelle structure
des fichiers. Pour forcer cette mise à jour, il suffit de définir la
Installation autonome version en cours de déploiement comme étant la version minimale
Le premier type d'installation est l'installation autonome. autorisée à fonctionner. Lors du lancement de l'application client,
l'utilisateur sera forcé de se mettre à jour.
La particularité de l'installation autonome est qu'il n'y a pas de
mises à jour automatiques, pas de live update. Dans ce cas, il
Gestion des utilisateurs connectés
est nécessaire de réinstaller totalement l'application dès que
La gestion des utilisateurs connectés permet d'administrer les appli-
nécessaire.
cations très simplement. Lors du déploiement de l'installation de
Dans quel cas utiliser cette installation ? référence, une application spécifique est déployée : WDAdminExe.
Ce type d'installation est recommandé pour les applications qui Cette application est présente dans le sous-répertoire INSTALL du

88 - TDF TECH 2009 - www.pcsoft.fr


Déploiement d'applications
répertoire d'installation référence. • <LectInst> : lecteur d'installation,
• <RepWin> : chemin de Windows,
Cette application permet de : • <FicInst> : chemin d'installation des fichiers de données,
• afficher les utilisateurs qui utilisent actuellement l'application. • <srProgramFiles> : répertoire "Program Files".
Pour chaque utilisateur, différentes informations sont disponibles :
machine, adresse IP, date et heure de connexion, version utilisée. Par défaut, WinDev liste et intègre les fichiers nécessaires pour
Ces informations sont disponibles dans l'onglet "Utilisateurs" de l'application : exécutables, fichiers de configuration (.ini), dépen-
WDAdminExe. dances, etc.
• contrôler l'application à distance. Le contrôle distant de l'ap- Il est possible d'ajouter d'autres fichiers dans la liste des fichiers
plication permet d'interdire la connexion, d'avertir d'un arrêt installés : par exemple, si l'application utilise une dll particulière,
imminent de l'application ou de forcer l'arrêt. L'utilisateur est il est possible d'inclure ce fichier pour qu'il soit automatiquement
ainsi averti, par un message personnalisable, qu'il doit sauver ses installé avec l'application.
modifications avant arrêt. Le contrôle à distance est particuliè-
rement utile lors d'une mise à jour critique de l'application ou de Pour chaque fichier, il est possible de définir si :
la base de données attenante. •  un raccourci doit être créé lors de l'installation. Les options
de création de raccourci sont disponibles dans la fenêtre de
propriétés d'un fichier.
• le fichier doit être installé sur le poste client.
• le fichier doit être installé sur le poste serveur.

Paramètres des bases de données


Ces options permettent d'intégrer des éléments optionnels pour
paramétrer les bases de données.

Il est possible de paramétrer la modification automatique des


fichiers. Cela permet de modifier les fichiers de données directe-
ment chez le client. Lors de l'installation ou de la mise à jour de
l'application, l'installation va vérifier si la structure des fichiers
en exploitation est la même que celle définie dans l'analyse. Si
Répertoire d'installation la structure diffère, la modification automatique des fichiers est
Le répertoire d'installation définit le répertoire par défaut dans lancée.
lequel l'application sera installée.
Il est également possible de choisir d'indexer les fichiers HyperFileSQL
Différentes options d'utilisation plus avancées sont également présents dans l'installateur uniquement lors de l'installation. Cela
proposées. Il est par exemple possible d'écrire des informations permet d'offrir une installation moins volumineuse.
dans un fichier .INI, dans la base de registre, etc.
L'accès à la base de données peut être configuré directement
depuis l'installateur, en cochant l'option "Configurer l'accès à la
base de données de l'application".
L'assistant affiche alors toutes les connexions qui ont été définies
Fichiers installés dans l'analyse. Pour chacune de ces connexions, il est possible
de :
Le paramétrage des fichiers installés permet de définir les fichiers • conserver les paramètres tels qu'ils ont été définis dans l'ana-
qui seront ajoutés à l'installation et surtout où ils seront instal- lyse.
lés. • utiliser les paramètres donnés dans le fichier .wer. Le fichier
.wer est le fichier de description d'une réplication. Tous les para-
Le répertoire des différents fichiers peut être défini en utilisant mètres de connexion à la base de données sont donc spécifiés
des constantes prédéfinies : dans ce fichier.
• <RepInst> : chemin d'installation de l'application, • définir les paramètres de connexion.

TDF TECH 2009 - www.pcsoft.fr - 89


Déploiement (SUITE)

Choisir le type de déploiement adapté à une


application (SUITE)

• proposer la saisie des paramètres lors de l'installation. Dans ce du relancement de l'application. Mais il est possible qu'une appli-
cas, c'est l'utilisateur ou l'administrateur qui spécifiera la locali- cation s'exécute en permanence et ne soit jamais relancée. Dans
sation des données pendant l'installation de l'application. Il est ce cas, le WLangage dispose des fonctions AppliXXX permettant
possible de spécifier des valeurs par défaut. de savoir si une mise à jour est disponible et d'appliquer cette
• indiquer que les paramètres correspondent aux paramètres du mise à jour :
serveur HyperFileSQL installé, si l'installation d'un serveur a été • la fonction AppliMajDisponible indique si une mise à jour est
autorisée dans l'installateur. disponible pour l'application.
• la fonction AppliDéclencheMAJ lance la mise à jour de l'ap-
plication.
Look de l'installateur
// Une mise à jour est-elle disponible ?
Pour que l'installateur soit un peu plus personnalisé, il est possible SI AppliMAJDisponible() ALORS
d'y inclure une image, un logo. Pour cela, il suffit, sur le plan
"Titre et Décor", de cliquer sur le bouton "Décor" et de renseigner   // Lancement de la mise à jour
l'image souhaitée.   AppliDéclencheMAJ()

FIN

Astuce :
La fonction AppliChangeParamètre permet de changer les para-
mètres de l'installation automatique : par exemple le chemin de
l'installation de référence.

WDInst
Pour paramétrer plus précisément encore une installation, il est
possible d'utiliser l'outils WDInt. Cet outil est accessible via le
menu "Outils .. WDInst".

Il est possible de proposer à l'utilisateur une installation complète,


minimale ou personnalisée avec certaines fonctionnalités obliga-
toires et des fonctionnalités optionnelles.

Si l'installation doit effectuer des opérations vraiment spécifi-


ques, il est possible d'adapter et de personnaliser totalement
l'installation. Les sources de l'installateur sont disponibles dans le
répertoire "Exemples" de WinDev. Ce projet est bien évidemment
en WLangage.

Live update par programmation


La mise à jour d'une application par le live update s'effectue lors

90 - TDF TECH 2009 - www.pcsoft.fr


Déploiement WebDev

Déploiement d'applications
Personnalisation de la page indiquant la
mise à jour du serveur

Personnalisation de la page
de mise à jour
La page affichée lors de la mise à jour d'un site WebDev
est entièrement personnalisable. Il est donc possible de
la mettre au gabarit du site, d'afficher un logo de société
ou encore d'afficher un message personnalisé.

Pour personnaliser ce message, il suffit d’utiliser l’admi-


nistrateur WebDev depuis le serveur. Cet administrateur
est installé par défaut avec le serveur d'applications
WebDev.

Un site internet évolue, tant au niveau du contenu Dans l'onglet "Administration", un clic sur le bouton "Erreurs" permet
que de l'interface. La mise à jour est donc un élément d'afficher la fenêtre de personnalisation des messages d'erreurs.
fréquent et récurrent de la vie d'un site.
Ce sujet montre deux aspects de la mise à jour que La personnalisation des messages d’erreurs peut se faire pour
WebDev simplifie : tous les sites ou site par site. Il est également possible de choisir
• la mise à jour de pages à chaud. d'afficher toujours la même page d’erreur quelle que soit l’erreur
• la personnalisation de la page indiquant une mise ou alors de gérer indépendamment chaque erreur.
à jour.
Pour personnaliser un message d’erreur, il est possible de :
• afficher un message personnalisé,
Mise à jour de pages à chaud • indiquer une page HTML à afficher en cas d’erreur.

La mise à jour à chaud de pages d'un site WebDev permet de modi- Pour personnaliser le message indiquant que le serveur est en
fier une page ou plusieurs pages alors que le site reste accessible cours de mise à jour, il suffit de :
pour les internautes. • sélectionner l'erreur "ERR_UPDATING_SERVER",
• indiquer la page qui devra être affichée en cas de mise à jour
Par exemple, une page affichant la promotion du jour se doit du site,
d'être mise à jour de façon quotidienne, sans pour autant mettre • appliquer les modifications.
le site en maintenance à chaque fois.

Pour mettre à jour à chaud une page d'un site WebDev, il suffit
de :
• sélectionner les pages souhaitées dans le treeview,
• sélectionner l'option "Déployer" du menu contextuel, accessible
via le clic droit.

Remarque :
Si une modification intervient dans un code global (projet, col-
lection de procédures, ...) il est nécessaire de redéployer l'inté-
gralité du site.

Le site est alors obligatoirement rendu momentanément indispo-


nible pour les internautes.

Dans ce cas, WebDev affiche automatiquement une page aux


internautes qui tente d’accéder au site indiquant que le serveur
est en cours de mise à jour.

TDF TECH 2009 - www.pcsoft.fr - 91


Déploiement mobile

Mise à jour d'une flotte de terminaux


mobiles

l'application par Internet". Plusieurs paramètres doivent ensuite


être renseignés :
• la fréquence de vérification des mises à jour. Pour que l'appli-
cation contrôle la présence de mise à jour à chaque lancement,
il suffit d'indiquer 0 en nombre de jours.
• l'adresse à laquelle la mise à jour est disponible.

Serveur de mise à jour


Le serveur qui héberge la mise à jour doit bien sûr disposer de :
• un accès FTP pour transférer depuis WinDev Mobile la mise à
jour générée.
• un accès HTTP pour que les applications mobiles puissent récu-
pérer leur mise à jour.
Pour cela il faut définir le répertoire dans lequel est copiée la
mise à jour comme étant un répertoire virtuel. La définition d'un
répertoire virtuel se définit au niveau du paramétrage du serveur
Ce sujet présente la mise en place d'une solution de Web (IIS, Apache, ...).
mise à jour automatique de terminaux mobiles. À la fin de la création de l'installation au format CAB, WinDev
Mobile propose automatiquement de mettre à jour l'installation
Déploiements mobiles sur le serveur de référence.
Le déploiement d'applications mobiles est accessible via le menu WinDev Mobile génère 3 fichiers :
"Atelier .. Créer la procédure d'installation". • un fichier .cab qui contient l'installation de l'application
mobile.
WinDev Mobile propose 3 types de déploiement :
• un fichier .cab qui contient le framework de WinDev Mobile.
• copie de l'exécutable et de ses dépendances directement sur
• un fichier .wx qui gère les versions.
le Pocket PC. Cette option est surtout utile en phase de tests en
réel, pour tester l'exécutable sur le terminal. Remarque :
• création de l'installation MSI pour PC. L'installation s'effectue Il est nécessaire que l'extension .wx soit reconnue dans les types
depuis un PC et installe l'application mobile sur le terminal via MIME sur le serveur Web. L'ajout d'une extension comme type MIME
ActiveSync ou via le gestionnaire d'appareil mobile si le PC est se définit dans le paramétrage du serveur Web.
sous Vista. Le Pocket PC doit donc être relié au PC pendant l'ins- Ces fichiers doivent être mis à jour sur le serveur. Il suffit d'in-
tallation de l'application. diquer les paramètres du serveur FTP sur lequel la mise à jour
• génération d'une installation pour appareil mobile au format sera copiée.
CAB.Il est nécessaire de copier l'install sur le Pocket PC, soit par
une SDCard, soit via le câble USB, soit par téléchargement direct
depuis Internet par exemple.
Mise à jour sur le terminal
L'installation au format .cab apporte deux avantages : Au lancement de l'application mobile sur le terminal, l'application
• il est possible d'installer l'application sans que le terminal mobile propose de vérifier si une mise à jour est disponible : le centre de
ne soit relié au PC. Il est par exemple possible de télécharger un contrôle des applications est alors automatiquement lancé.
fichier .cab sur un SmartPhone. Ce centre de contrôle vérifie si une mise à jour est disponible et
•  si le matériel a une connexion Internet, il est possible de propose de l'installer. L’application est ainsi automatiquement
mettre en place le live update dans les applications mobiles. Ce mise à jour.
live update sera alors géré automatiquement comme pour une
Le centre de contrôle des applications est installé automatiquement
application WinDev.
sur le mobile en même temps que le framework WinDev Mobile.

Mise en place du live update Remarque :


En cas de modification de la structure de l’analyse, la modification
Dans un premier temps, il convient de générer l'installation de automatique est automatiquement exécutée sur les fichiers de
l'application mobile au format .cab. Pour activer le live update, il données des terminaux mobiles.
suffit simplement de cocher l'option "permettre la mise à jour de

92 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Fonctionnalités spécifiques

TDF TECH 2009 - www.pcsoft.fr - 93


Robot de surveillance

Configurer la surveillance d'une


application critique

lièrement que l’application soit active.

Paramétrage de l'application
Pour signaler au robot que l'application est active,
il suffit d'utiliser le composant RobotScheduler, livré
en standard dans WinDev.

Ce composant dispose de deux procédures permet-


tant de signaler l'activité de l'application :
•  SignalerActivite  : cette procédure permet de
gérer de façon manuelle le signalement de l'activité
de l'application.
Il est conseillé d'utiliser cette procédure si un gros
traitement doit être surveillé sur une application qui
n'est pas forcément exécutée en permanence.
Il suffit d'appeler une fois la procédure avant le
traitement, pour marquer le début du signalement,
puis une seconde fois en fin de traitement, en indi-
quant au robot de ne plus surveiller l'application
pour l'instant.

// Début de la surveillance par le


robot
// Si le traitement est trop long,
// le robot le signalera
SignalerActivite(…
  fRepExe()+["\"]+"Activite.ini",…
  "Activite", "JeFonctionne")
Le robot de surveillance est une application qui surveille
en permanence des éléments demandés : applications // Traitement critique à surveiller
WinDev, serveurs Web, serveurs HyperFileSQL, ... // ...

Si une défaillance est détectée, le robot de surveillance // Fin de la surveillance par le robot
déclenche alors automatiquement une alerte : SignalerActivite(…
• dans la messagerie de WinDev,   fRepExe()+["\"]+"Activite.ini",…
• par email.   "Activite", "JeFonctionne", Faux)
Il est également possible de déclencher un exécutable La procédure SignalerActivite accepte en paramètre :
spécifique lorsqu'un contrôle est en erreur. Cela per- • le chemin du fichier .ini. En effet, le robot, pour contrôler que
met par exemple d’envoyer un SMS, de prévenir par l'application est toujours en activité, lit un fichier .ini. L'application
téléphone, voire même de relancer un serveur. doit simplement écrire régulièrement dans ce fichier .ini.
• la section du fichier .ini.
• le mot-clé du fichier .inI.
Mise en place d'un contrôle • l'indicateur de début ou fin de surveillance : il suffit d'indiquer
d'application Vrai pour que le robot active la surveillance de l'application, Faux
pour que le robot stoppe la surveillance.
Pour mettre en place la surveillance d'une application WinDev, 2
étapes sont nécessaires : • SignalerActivite_Automatique : cette procédure permet de
• dans l’application, il faut signaler au robot que l’application signaler de façon automatique que l'application est toujours
est active. active.
• dans le robot, il faut paramétrer un contrôle qui surveille régu-

94 - TDF TECH 2009 - www.pcsoft.fr


Fonctionnalités spécifiques
Il est conseillé d'utiliser cette procédure pour surveiller qu'une Il est possible de paramétrer les tranches horaires d’exécution, les
application qui tourne en permanence soit toujours active. jours d’exécution. Cela permet par exemple de mettre en place
la surveillance d'application uniquement lorsque personne n'est
// Signalement de l'activité sur le site (week-end, nuit).
// toutes les 2 minutes
SignalerActivite_Automatique(… Enfin, il est possible de paramétrer le message d'erreur :
  fRepExe()+["\"]+"Activite.ini",… • la gravité de l'erreur
  "Activité","JeFonctionne", 120) • les messages personnalisés.
• les destinataires des messages.
La procédure SignalerActivite_Automatique accepte en para-
mètre : Notre astuce :
• le chemin du fichier .ini. Pensez à renseigner une "Solution/Aide" sur les contrôles critiques,
• la section du fichier .ini. en indiquant par exemple où se situe le serveur ou comment redé-
• le mot-clé du fichier .inI. marrer l'application. Ces informations seront fournies à tous les
• la temporisation entre deux signalements d'activité. Par exemple, destinataires dans le message d'erreur envoyé par le robot.
pour que l'application signale son activité toutes les 2 minutes, il
suffit d'indiquer 120 secondes. Il est également possible de définir un programme à lancer pour
solutionner le problème. Par exemple, dans le cas d'une surveillance
Le fichier .ini doit bien sûr être accessible aussi bien par l'appli- d'une machine serveur, il est possible de lancer un exécutable
cation que par le robot de surveillance. charger de redémarrer le serveur.

Il est donc conseillé d'utiliser un répertoire partagé, de préférence


sur le poste où tourne l'application. L'écriture dans un fichier .ini Paramètres spécifiques
est en effet beaucoup plus rapide en local qu'en réseau. Dans les paramètres spécifiques, il convient d'indiquer les infor-
mations sur l'application. Ces informations permettent au robot
d'envoyer un message clair en cas de problème : quelle application
Paramétrage du contrôle du robot est en erreur ? sur quelle machine ? ...
Pour paramétrer un contrôle dans le robot, il suffit d'utiliser le
moniteur de surveillance. Ce moniteur est livré en standard avec Ensuite, il est nécessaire d'indiquer les informations sur le fichier
WinDev. d'activité .ini où l'application écrit. Il suffit de renseigner les
La création d'un contrôle est accessible via le menu contextuel paramètres indiqués dans l'appel à la procédure SignalerActivite_
de la table (clic-droit) ou par l'icone "Ajouter un contrôle" de la Automatique.
barre d'outils.
Notre astuce :
Paramètres généraux Il est possible de désactiver temporairement un contrôle. Il suffit
de décocher l'option  "Contrôle activé" : cela peut servir en phase
Pour contrôler une application WinDev, il suffit de sélectionner
de maintenance du serveur, ou de debug d'application.
comme type de contrôle "Activité d'une application WinDev".

Remarque :
Le robot de surveillance permet de contrôler différents élé-
ments :
• serveur d'application WebDev,
• serveur de base de données,
• serveur NNTP,
• serveur SMTP,
• sites,
• espace disque,
• ...
Le "délai entre deux contrôles" doit correspondre au délai passé
en paramètre de la fonction SignalerActivite_Automatique dans
l'application à surveiller.

TDF TECH 2009 - www.pcsoft.fr - 95


databinding

Deux exemples concrets d'utilisation du


DataBinding

En version 14, WinDev propose le DataBinding entre Liaison des champs


les champs et les variables du code. Ensuite, il faut réaliser la fenêtre qui va afficher les informations
de la structure. Pour qu'un champ donné affiche le contenu d'une
Chaque champ peut être relié à une rubrique de fichier
variable de la structure, il est nécessaire de lier ce champ à cette
ou bien à une variable : une structure, un objet, … variable. Cette opération doit être effectuée pour chaque champ
Le DataBinding permet d’éliminer simplement des correspondant à une variable de la strucutre.
centaines de lignes de code.
Pour lier un champ à une variable de structure, il suffit de :
• ouvrir la fenêtre de description du champ sur l'onglet "Liaison";
Projet d'illustration par exemple, sur le champ "SAI_PRENOM".
Le projet utilisé pour illustrer ce sujet est "WD Databinding" , livré • sélectionner "Variables" parmis les types de liaison disponibles
en standard dans WinDev. (fichier, requête, ...),
• sélectionner la structure souhaitée. Dans l'exemple, il s'agit de
gcvMaStructure,
Remplissage de champs depuis • sélectionner la variable à lier au champ; par exemple, sPré-
une structure nom.

Déclaration d'une structure


Dans un premier temps, il convient de déclarer une structure
permettant de stocker les informations souhaitées; dans la fenê-
tre de 'FEN_PRINCIPALE" de l'exemple, il s'agit des informations
d'un contact.

// Déclaration de la structure
STCONTACT est une structure
  sNom est une chaîne
  sPrénom est une chaîne
  sDateNaissance est une chaîne
  sCommentaires est une chaîne
FIN

Il suffit alors de déclarer une variable globale de cette structure.


C'est cette variable globale qui sera utilisée comme source du
DataBinding.

// Contact en cours
gvcMaStructure est un STCONTACT Notre astuce :
Il est possible de créer automatiquement tous les champs d'une
Remarque : variable structure en une seule fois. Pour cela, il suffit de :
Dans l'exemple "WD Databinding", la déclaration de la structure • ouvrir l'explorateur de projet si nécessaire par le menu "Affichage
et de la variable est faite en une seule fois. Cette syntaxe peut .. Barre d'outils .. Explorateur de projet".
être utilisée uniquement si la structure est utilisée par une seule • dérouler les informations de la fenêtre souhaitée.
variable. • sélectionner "Variables".
• faire un Drag and Drop de la variable globale depuis l'explorateur
gvcMaStructure est composée de directement dans la fenêtre.
  sNom est une chaîne
  sPrénom est une chaîne
  sDateNaissance est une chaîne Remplissage des champs depuis la structure
  sCommentaires est une chaîne Une fois les champs liés à la variable structure, il suffit d'appeler
FIN la fonction WLangage SourceVersEcran (ou SourceVersPage s'il
s'agit d'un projet WebDev).

96 - TDF TECH 2009 - www.pcsoft.fr


Fonctionnalités spécifiques
Cette procédure attend en paramètre : Liaison de la table
• le nom de la fenêtre contenant les champs à remplir, Ensuite, il faut lier la table à la variable tableau contenant les
• le nom de la source pour laquelle les champs liés seront mis informations à afficher.
à jour.
Pour créer une table basée sur une variable de type tableau, il
// Mise à jour des champs liés à gcvMaStructure suffit de :
SourceVersEcran(FEN_PRINCIPALE, … • insérer un nouveau champ table (via le menu "Insertion .. Champ
  "gcvMaStructure") .. Table" par exemple).
• indiquer que la table doit "Afficher des données d'une variable
Remarque : existante".
Si de nouveaux membres apparaissent dans la structure, il suffit • choisir la variable de type tableau qui contient les informations
d'ajouter un champ dans la fenêtre et de le lier au nouveau mem- à afficher.
bre. Aucune modification de code n'est nécessaire. • sélectionner les colonnes qui seront visibles dans la table.

Remplissage de la structure depuis les champs


La récupération dans la structure des informations contenues dans
les champs s'effectue aussi simplement que le remplissage de ces
champs. Il suffit d'appeler la fonction WLangage EcranVersSource
(ou PageVersSouce s'il s'agit d'un projet WebDev). Cette procédure
attend en paramètres :
• le nom de la fenêtre contenant les champs à remplir,
• le nom de la source pour laquelle les variables seront mises à
jour.

// Mise à jour de la structure gcvMaStructure


EcranVersSource(FEN_PRINCIPALE, …
  "gcvMaStructure")

Remplissage d'une table depuis


une classe
L'exemple de remplissage de table depuis une classe s'appuie
sur la fenêtre "FEN_DATABINDING_CLASSES" de l'exemple "WD
DataBinding". Le remplissage d'une zone répétée, d'une liste, etc.
depuis une classe ou une structure s'effectue de la même façon
que pour une table.
Remarque :
Pour lier une table existante à une variable tableau, il suffit
Déclaration d'un tableau de classes
de :
Dans un premier temps, il convient de déclarer le tableau de
• modifier, dans l'onglet "Contenu", la combo "Source parcourue"
classe qui servira de source à la table. Dans l'exemple, il s'agit du
en indiquant la variable de type tableau à afficher.
membre ListeContact de la classe CListeContact.
• modifier la combo "Valeur mémorisée" qui indique la variable
mémorisée pour la ligne courante.
// Tableau de CContact
gclMaListeDeContacts est un tableau de … • modifier la liaison de chaque colonne.
  CContact dynamique

TDF TECH 2009 - www.pcsoft.fr - 97


Développement spécifique

Développer une application WinDev pour


une utilisation sur Asus EEE-Top

L'EEE-Top ("Easy to learn, work and play") est un PC Conseils de développement


tout-en-un tactile commercialisé par Asus.
L'EEE-Top est une plateforme spécifique qui nécessite de porter une
Ce PC possède un écran 16/9 pour une résolution attention particulière lors du développement et particulièrement
de 1377x768. L'ordinateur complet tient dans l'écran au niveau de l'IHM.
LCD. En effet, même si cette plateforme est fournie avec clavier et
WinDev permet de développer facilement des appli- souris, l'utilisation principale qui en est faite est une utilisation
cations pour ce périphérique. tactile. Les conseils donnés ci-après sont donc essentiellement
destinés aux applications 100% tactiles.

Projet d'illustration Taille de la fenêtre


Le projet "WD Voyages CE", fourni avec ce support de cours, est Premier point à prendre en compte, la taille de l'écran. L'EEE-Top
un exemple d'application dédiée à une utilisation sur EEE-Top. Il dispose d'un écran format 16/9 d'une résolution de 1366x768 pixels.
est cependant possible de l'utiliser sur toute machine Windows. Pour gérer cette taille d'écran dans un projet, deux possibilités
sont offertes :
1- soit le projet est destiné uniquement à générer une application
pour EEE-Top. Dans ce cas, il est préférable de spécifier la taille
préférentielle des fenêtres directement pour
le projet. Pour cela, il suffit de :
• ouvrir la fenêtre de description du pro-
jet, par le menu "Projet .. Description du
projet".
• cliquer sur le bouton "Taille des écrans"
de l'onglet "Style".
•  saisir une taille d'écran personnalisée;
dans notre cas 1366x768.
• valider les modifications.
De cette façon, chaque nouvelle fenêtre
créée aura automatiquement les dimensions
requises pour une application EEE-Top.
2- soit le projet est destiné à générer dif-
férentes applications pour différentes pla-
teformes. Dans ce cas, il est préférable de
créer un modèle de fenêtres aux dimensions
de l'EEE-TOP. Il suffit alors, à la création
d'une nouvelle fenêtre, d'indiquer qu'elle
est basée sur le modèle.

Taille de la police
L'affichage par défaut d'un EEE-Top est en
grande police (120ppp, soit environ 125 %
de la taille normale). Cela signifie que les
polices peuvent paraître "légèrement plus
grosses" sur l'EEE-Top par rapport aux polices
du poste de développement.
Il faut donc toujours garder à l'esprit ce
"grossissement" lors de la définition des
styles dans WinDev.

98 - TDF TECH 2009 - www.pcsoft.fr


Fonctionnalités spécifiques
Taille des boutons
Le texte indicatif est disponible dans l'onglet "Aide" de la fenêtre
Lors d'une utilisation tactile, la précision du clic est largement
de description du champ de saisie.
moindre que lors d'une utilisation avec une souris ou un stylet.
Les boutons de taille standard (80x24) et inférieurs sont donc à
proscrire au maximum. Et pour le reste ...
Hormis ces conseils pratiques pour "bien démarrer", le dévelop-
L'utilisation de "gros" bouton est largement préférable.
pement d'applications pour EEE-Top est tout à fait semblable à
un développement classique :
Saisie de texte • toutes les fonctionnalités du WLangage sont disponibles.
Dans une utilisation 100% tactile, l'utilisateur ne dispose d'aucun • l'utilisation d'une base HyperFileSQL Classic est possible.
clavier pour saisir des informations, effectuer des recherches, • ...
etc.
Pour palier ce problème, WinDev dispose d'un composant livré en
standard : le composant "WD Ecran Tactile".

Ce composant permet d'afficher différents types de clavier (alpha-


bétique, numérique, complet) pour permettre la saisie sur écran
tactile.
Dans l'exemple "WD Voyages CE", le clavier est activé lors de l'en-
trée dans le champ de saisie de recherche. Il suffit alors de taper
les premières lettres de la recherche  : à chaque lettre tapée,
l'affichage est filtré par rapport à la recherche en cours.
Dans tous les cas, il est conseillé d'éviter au maximum la saisie
par l'utilisateur dans ce type d'application:
• la saisie par clavier virtuel est adaptée pour quelques caractères,
mais reste non pratique pour saisir de longs textes.
• le clavier virtuel (qui nécessite lui aussi de gros boutons) occupe
une place non négligeable dans l'interface (environs 40% de l'écran
en hauteur et toute la largeur).
Il est préférable de proposer à l'utilisateur des choix prédéfinis,
des filtres, par l'intermédiaire de champs sélecteurs, interrupteurs
ou liste par exemple.
L'idéal, dans un souci de confort et d'accessibilité, est que l'uti-
lisateur arrive aux informations souhaitées en 4 ou 5 touches
maximum.

Texte indicatif
Si l'utilisation d'un champ de saisie est indispensable, par exem-
ple le champ de recherche d'activité dans notre application "WD
Voyages CE", l'utilisation des textes indicatifs est recommandée.
Le texte indicatif est ce petit libellé affiché dans le champ de
saisie lorsque celui-ci est vide et qui disparaît automatiquement
lors de l'entrée en saisie dans le champ. Il permet de donner une
indication supplémentaire sur ce qui peut ou ce qui doit être saisi
dans le champ.
Dans le cas d'applications pour EEE-Top, le texte indicatif permet
avantageusement de remplacer le libellé du champ de saisie pour
offrir une IHM plus épurée et donc plus agréable.

TDF TECH 2009 - www.pcsoft.fr - 99


Géolocalisation

Géolocaliser une flotte de téléphones


mobiles

Cette technologie consiste à repérer les antennes les plus proches du


portable. Ensuite, la distance entre chaque antenne et le portable
est déduite d’après la vitesse que mettent les données pour faire
un aller-retour ce qui permet d'en déduire la position.
Évidemment, le propriétaire du portable doit donner son accord
préalable pour être localisé. Cet accord n’est à donner qu’une
seule fois.

Utilisation du composant
Dans le projet exemple, le composant de géolocalisation a déjà été
intégré. Pour rappel, l'intégration d'un composant dans un projet
est accessible via le menu "Atelier .. Composant .. Importer un
composant dans le projet".
Repérer le technicien le plus proche du lieu d'inter-
Dans ce projet, la géolocalisation se déroule en deux étapes :
vention, localiser un véhicule en panne, calculer un
• Saisie du numéro de téléphone à localiser dans le champ de
itinéraire optimisé, les besoins de géolocalisations
saisie.
sont importants. Une des solutions est d'utiliser la •  clic sur le bouton "Localiser" pour lancer la géolocalisation
géolocalisation cellulaire, c'est-à-dire la localisation proprement dite. Une fois les coordonnées récupérées à l'aide du
d'un téléphone portable. service Orange, le portable peut être positionné sur une carte,
L'exemple présente la mise en œuvre de la solution par exemple via Google Earth.
de géolocalisation pour les mobiles Orange© par le
service "Location API". Localisation du mobile
La localisation du mobile s'effectue par la fonction
Important : pour utiliser cette fonctionnalité, vous devez disposer
DemandeLocalisation fournie par le composant. Cette procédure
d'un contrat avec la société Orange. Retrouvez plus de détails sur
accepte en paramètres :
cette page :
• la clé d'identification fournie par orange pour utiliser le service
http://www.orangepartner.com/windev
de géolocalisation. Ce numéro est fourni par Orange lors de la
Projet d'illustration souscription au service de géolocalisation. Cette clé est à renseigner
Le projet utilisé pour illustrer ce sujet est le composant "WD dans la constante CLE_ORANGE de l'application.
Geolocalisation en association avec Orange". Ce composant pro- •  le numéro de mobile qui doit être localisé. Ce numéro doit
pose différentes méthodes permettant de localiser un téléphone être au format "336xxxxxxxx" ("336" suivi des 8 derniers chiffres
mobile Orange. du numéro).
Le composant "WD Geolocalisation en association avec Orange" // Demande la localisation du mobile
nécessite une clé. Cette clé est fournie par Orange lors de l'ac- // en indiquant la clé Orange
tivation de ce service. DemandeLocalisation(…
  CLE_ORANGE,"336xxxxxxxx")
Ce projet est présent sur le DVD fourni avec ce support de
cours. Une fois le numéro demandé localisé, le service de géolocalisation
renvoie la position du mobile sous la forme d'une latitude et d'une
longitude. Ces coordonnées peuvent alors être récupérées par les
Fonctionnement fonctions getLatitude et getLongitude du composant.
Le système de géolocalisation utilisé est un service commercialisé // Récupération de la latitude et longitude
par Orange. Ce service permet de localiser un portable donné où // du mobile localisé
qu'il soit et ce partout en France. Bien sûr, le portable doit être sLatitude = getLatitude()
allumé et avoir accès au réseau. sLongitude = getLongitude()
Ce service fonctionne avec une précision de 50 à 150 mètres en En cas d'erreur (ou de refus de géolocalisation), un message d'erreur
ville et de 150 mètres à 3 kilomètres en zone rurale. clair peut être obtenu par la fonction getErreurInformation.
La technologie utilisée s’appelle "Cell-ID", pour "localisation
cellulaire".

100 - TDF TECH 2009 - www.pcsoft.fr


TDF Tech 2009

Annexes

TDF TECH 2009 - www.pcsoft.fr - I


Annexe A

Quelques commandes du WLangage

Attention : Le lexique ci-dessous n’est qu’un extrait des possibilités du langage de WinDev, WebDev et WinDev Mobile. La lecture
des manuels fournis reste incontournable. Ne sont présentées ici que les commandes nécessaires à la bonne compréhension de cette
formation.

Commandes de gestion de fichiers


Commande / Syntaxe But

EcranVersFichier Renseigner le buffer fichier d’après les données saisies


par l’utilisateur dans la fenêtre.

FichierVersEcran Initialiser une fenêtre d’après les dernières valeurs lues


dans le fichier.
HAjoute(NomFichier) Ajouter dans le fichier l’enregistrement préparé en
mémoire.
HCréationSiInexistant(NomFichier) Ouvrir le fichier en le créant à vide auparavant s’il
n’existait pas sur disque.
HErreurDoublon() Tester le compte-rendu renvoyé par le moteur de base de
données en cas de tentative de création de doublon.

HErreurIntégrité() Tester le compte-rendu renvoyé par le moteur de base de


données en cas de tentative d’écriture d’enregistrement
ne respectant pas les contraintes d’intégrité.

HFiltre(NomFichier,Clé,Valeur) Filtrer les enregistrements du fichier dont la clé indiquée


correspond à la valeur choisie.

HLitDernier(NomFichier, Clé) Se positionner sur le dernier enregistrement du fichier


selon la clé spécifiée et charger l’enregistrement en
mémoire.
HLitPrécédent(NomFichier, Clé) Se positionner sur l’enregistrement précédent du fichier
selon la clé spécifiée et charger l’enregistrement en
mémoire.
HLitPremier(NomFichier,Clé) Se positionner sur le premier enregistrement du fichier
selon la clé spécifiée et charger l’enregistrement en
mémoire.
HLitRecherchePremier(NomFichier,... Rechercher le premier enregistrement du fichier dont la
Clé, Valeur) clé indiquée correspond à la valeur choisie, puis charger
l’enregistrement en mémoire.

II - TDF TECH 2009 - www.pcsoft.fr


Annexes
HLitSuivant(NomFichier,Clé) Se positionner sur l’enregistrement suivant du fichier
selon la clé spécifiée et charger l’enregistrement en
mémoire.
HModifie(NomFichier) Réécrire l’enregistrement courant du fichier avec les
valeurs stockées en mémoire.
HRaz(NomFichier) Remettre à zéro (réinitialiser) l’enregistrement du
fichier.
HSupprime(NomFichier) Supprimer l’enregistrement courant du fichier.

Compte-rendu du moteur de bases Valeur


de données

HEnDehors(NomFichier) Renvoie Vrai si on tente de lire un enregistrement au-


delà du début ou de la fin du fichier.

HTrouve(NomFichier) Renvoie Vrai après une recherche si la recherche a


abouti.

Autres commandes
Commande / Syntaxe But

DateSys() Récupérer la date système au format AAAAMMJJ.


Erreur(“Message”) Afficher un message d’erreur.

ExécuteTraitement(Champ,... Exécuter le traitement d’un champ ou d’une fenêtre.


Traitement)
HeureSys() Récupérer l’heure système au format HHMMSSCC.
Info(“Message”) Afficher un message d’information.
Confirmer(“Question”) Poser une question à l’utilisateur (la réponse est un
booléen) .

RAZ() Remettre à zéro (réinitialiser) tous les champs de


l’écran.
RepriseSaisie(NomChamp) Interrompre le traitement en cours et positionner le curseur
sur le champ spécifié.

TableAffiche(NomTable, Position) Réafficher un champ table fichier (à l’écran) d’après les


données du fichier sur disque.

ListeAjoute(NomListe, chaine) Ajouter une ligne dans un champ liste ou combo.


ListeSupprime(NomListe) Supprimer une ligne de liste ou combo.

Les commandes sont indiquées avec la syntaxe utilisée dans les exemples réalisés.
Certaines fonctions acceptent d’autres paramètres ; se référer à l’aide en ligne pour plus de
d’informations.

TDF TECH 2009 - www.pcsoft.fr - III


Annexe B

Les principales touches de raccourci

La liste ci-dessous présente les touches de fonction et les combinaisons de touches permettant d’accéder directement à une fonction-
nalité de WinDev. Cette liste n’est pas exhaustive.
Important : Sous WinDev, dans l’éditeur de fenêtres, comme dans l’éditeur de code, il est possible d’accéder simplement aux différentes
actions disponibles grâce au menu contextuel (Il suffit de faire un clic droit à la position de la souris).

Principales touches de raccourcis de l’éditeur de fenêtres


Touche But

F1 Aide en ligne.
F5 Visualiser l’ordre de saisie (ordre de tabulation).
F6 Visualiser le nom des champs.
CTRL Permet de sélectionner plusieurs champs à la souris.
CTRL+C, CTRL+V, CTRL+X Copier, Coller, Couper un champ, avec ses propriétés et son
code associé.
CTRL+R Affiche ou rend invisible les règles d’alignement.
SHIFT+F9 Tester l’IHM d’une fenêtre sans exécuter les traitements.

Principales touches de raccourcis de l’éditeur de code


Touche But

F1 Aide en ligne.
F2 Accéder au code d’une procédure en étant positionné sur le nom
de la procédure auparavant (CTRL + F2 pour revenir).

F4 Créer une procédure locale (Shift + F4 pour créer une procédure


globale).
F8 Liste des procédures locales (CTRL + F8 pour la liste des
procédures globales).

F11 Liste des fichiers, requêtes et rubriques.


CTRL+C, CTRL+V, CTRL+X Copier, Coller, Couper du code.
CTRL + « / » (pavé numérique) Mettre en commentaire (CTRL + Shift + “ / ” pour enlever les
commentaires).
ALT + T Activer la pipette pour sélectionner le nom d’un champ d’une
fenêtre.

IV - TDF TECH 2009 - www.pcsoft.fr

Vous aimerez peut-être aussi