TDF Tech 2009
TDF Tech 2009
TDF Tech 2009
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
17 Les graphiques
18 Champs Graphe "donuts"
Utilisation du champ graphe de WinDev 14 :
Réalisation d'un graphe "donuts"
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
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
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
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
IV Annexe B
Les principales touches de raccourci
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
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.
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
• 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 !
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.
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.
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.
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).
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"
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.
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.
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.
Note :
Pensez à définir des droits sur ce fichier "PolitiqueDeRéintégration.
gds", il ne doit être modifiable que par le chef de projet.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
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.
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.
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"
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.
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.
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.
En formation
"WinDev Perfectionnement"
Dans WinDev
Exemple didactique "WD Tables Ruptures"
Exemple complet "CRM"
Dans WebDev
Exemple complet "Rewali"
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
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.
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.
En formation
"WinDev Avancé"
Dans WinDev
Exemples didactiques "WD Réplica Maître" et
"WD Réplica Abonné"
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.
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?
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
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.
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.
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
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
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.
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é.
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.
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.
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".
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.
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".
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.
• ...
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
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
// 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.
PROCEDURE PAGE_Familles_Produits(...
gnIDFamille = PageParamètre("famille"))
Plan du site
Autre point important pour le référencement : disposer d'une page
contenant le plan du site.
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
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
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.
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,
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.
□□□
la somme de : ..................... Euros
□ Je règle par Carte Bancaire. Cryptogramme :
□□□□□□□□□□□□□□□□ □□ □□□□
Numéro complet de la carte : la carte expire : mois année
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".
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.
En formation
"WinDev Expert"
Dans la LST 73
Exemple "WW_SOA" et "WW_SOA_DEMO"
Dans la LST 62
Exemple "WWServiceWeb"
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
• 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".
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é.
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.
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.
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-
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.
// 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
// 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).
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.
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.
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".
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.
Autres commandes
Commande / Syntaxe But
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.
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).
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.
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).