PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → Formation AWP
Formation AWP
Débuté par François C., 14 juin 2018 11:20 - 5 réponses
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 14 juin 2018 - 11:20
Bonjour,

Je suis à la recherche de ressources complètes sur la création de sites AWP.
Habitué aux sites Dynamique WEBDEV j'aimerais comprendre le principe AWP et le maitriser mais je ne trouve pas vraiment de ressources documentées de manière complète, et PC SOFT ne propose pas vraiment de formation dédiée sur ce point précis.

Quelqu'un sait ou je pourrais trouver quelque chose d’intéressant sur ce sujet ?
Membre enregistré
60 messages
Popularité : +4 (4 votes)
Posté le 14 juin 2018 - 11:39
Bonjour François,

Je n'ai pas réponse de pour ton besoin.
En revanche je peux t'éclaircir sur le principe de fonctionnement des site en AWP.

En gros avec l'AWP:
-Le principe de Session n'existe pas.
Au lieu de ça, tu as un contexte AWP dans lequel tu va venir stocker tes données que tu aurais normalement mis dans ta session. ( voir doc sur les fonctions DeclarecontexteAWP(), ConfigureContexteAWP(), etc.

-IMPORTANT: CHAQUE interaction de ta page avec le server ( par exemple, un clique sur un bouton avec du code server à exécuter à l’intérieur, une requête AJAX synchrone ou asynchrone , ) entrainera une réexécution des codes suivant :
-Déclaration du projet
-Initialisation du projet
-Déclaration de ta page
-Initialisation de ta page
-Le code tu as appelé
-Fermeture Page
-Fermeture Projet
C'est très important car tu peux très rapidement te faire avoir et avoir un fonctionnement auquel tu ne t'attendais pas ( comme par exemple des champs qui se retrouve vidés sans raison particulière)
De surcroit, tu peux avoir une ré-exécution de code inutile, pour cela j'ai pour ma part simplement créé un booléen qui indique si il s'agit du premier chargement de ma page, auquel cas j'exécute la totalité du code ou seulement une partie.

-Comme tu n'as pas de session, si tu observes ton administrateur Web, tu verras que lorsque tu te connecte à ton site, une session est quand même créé mais uniquement le temps d'exécuter les parties de code que j'ai cité juste au dessus .

Hésite pas à poser des questions, j'essaierai d'y répondre. L'AWP a l'air aguichant tel que PCSOFT le décrit, mais c'est surtout une galère à prendre en main et comme tu l'as dis précédemment, ils ont un fort potentiel de légèreté dans leur doc'.
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 14 juin 2018 - 11:57
Merci pour ces précisions c'est déjà un bon début d'informations :)
Membre enregistré
204 messages
Popularité : +5 (5 votes)
Posté le 15 juin 2018 - 09:26
En plus de l'introduction très claire de Freddykong, il faut insister sur le fait que le clic sur un bouton ou un menu est donc traité en avant-avant dernier ("code que tu as appelé").
Ainsi, si le clic sur le bouton devrait avoir pour effet de modifier la construction de la page, il faut tout refaire : au mieux une perte de temps, au pire ça ne marche pas. En particulier, les valeurs des SAI transmises par un bouton Submit arrivent au moment où le code du bouton s'exécute... Avant cela, elles ont encore leur valeur d'origine.

Après bien des errances, j'ai retenu le principe suivant : je n'utilise pas les traitements pour mettre le code de construction de la page, je mets tout dans une procédure locale ConstruireLaPage( ).
Je crée un modèle pour toutes les pages. Ce modèle comprend une procédure locale JinitialisePAGEMOD, qui comprend tout ce qui faut pour construire le fond de page.
Dans ce modèle, je teste une chaine gsPagePrecedente, qui alerte un booléen gbChgtPage
Ces deux variables doivent être déclarées en contexte, bien sûr, mais dans le **code du Projet** ("Initialisation après connexion au site" si tu fais des pages prélancées).

ok=DéclareContexteAWP(gsPagePrecedente, gbChgtPage)


Puis je crée ma page, basée sur le modèle. Dans cette page (et dans toutes les pages basées sur le modèle) je crée tout de suite une procédure locale, **toujours appelée** ConstruireLaPage( ). Cette procédure met en forme la page, pour les aspects qui ne sont pas pris en charge par le modèle.

Alors, voici ce qu'il y a dans le capot du code initialisation du modèle (attention, abracadabra 8)) :

SI gsPagePrecedente<>Majuscule(PageCourante()) ALORS
gbChgtPage=Vrai
FIN
gsPagePrecedente=Majuscule(PageCourante())
SI gbChgtPage ALORS
JInitialisePAGEMOD() // traitement d'initialisation du modèle
ExécuteTraitement(PageCourante()+".ConstruireLaPage",trtProcedure)
FIN


Si gbChgtPage est faux, je ne fais rien en Initialisation de la Page, et dans le code du bouton (ou du menu), qui s'exécutera donc à la fin avec les bonnes valeurs des paramètres, j'appelle in fine InitPAGEMOD() et ConstruireLaPage( ).

Ceci permet de gérer les appels directs de la page depuis le web, puisqu'avec AWP, ta page peut être référencée en accès direct (c'est l'un des grands avantages, mais du coup il faut y penser !).

Il y a encore d'autres subtilités (pour les tests, toujours commencer par tester hors AWP, ce qui permet de suivre un pas à pas ; truffer son code de Trace("voici ce qui se passe") notamment dès qu'il y a un SI ... ou un échange avec une base HFSQL ; le GO ne réagit pas toujours Cf un autre post que j'ai écrit là-dessus) mais si tu suis ces conseils, tu économises sur ton Tranxène (r) ... et tu gagnes une année de vie en bonne santé.

bon courage
christophe

PS. Si qq'un a mieux, je suis partant pour ne pas mourir idiot.
Membre enregistré
1 623 messages
Popularité : +100 (114 votes)
Posté le 15 juin 2018 - 12:03
Merci pour ce partage d’expérience ! Très instructif ;)
Posté le 21 juin 2018 - 00:18
c'est ben vrai que l'AWP est loin d'être limpide ...

et c'est dommage parce que pour le référencement, juste indispensable,

philippe