DEVELOPPEMENT SUR LE WEB
Transcription
DEVELOPPEMENT SUR LE WEB
CHAPITRE 1 DEVELOPPEMENT SUR LE WEB Chapitre 1 DEVELOPPEMENT SUR LE WEB ............................................. 2 1.1 Introduction................................................................................................ 3 1.2 Le DataWindow Plug-In............................................................................ 5 1.2.1 Principes ............................................................................................ 5 1.2.2 Mise en place..................................................................................... 6 1.2.2.1 Sur le serveur.................................................................................. 6 1.2.2.2 Sur le poste client ........................................................................... 7 1.3 Le PowerBuilder Window Plug-In ............................................................ 9 1.3.1 Principes ............................................................................................ 9 1.3.2 Mise en place................................................................................... 10 1.3.2.1 Sur le serveur................................................................................ 10 1.3.2.2 Sur le poste client ......................................................................... 14 1.3.3 Autres exemples .............................................................................. 15 1.3.3.1 Fenêtre avec une ListBox............................................................. 15 1.3.3.2 Fenêtre avec une Gestion de DataWindow.................................. 16 1.4 Le PowerBuilder Window ActiveX......................................................... 17 1.4.1 Principes .......................................................................................... 17 1.4.2 Mise en place sur le serveur ............................................................ 18 1.4.2.1 PB Event et VBScript................................................................... 19 1.4.2.2 PB function et VBScript............................................................... 20 1.4.2.3 User Function et VBScript ........................................................... 21 1.4.2.4 User Event et VBScript................................................................ 22 1.4.3 Mise en place sur le poste client ..................................................... 23 1.4.4 Autres exemples .............................................................................. 24 PowerBuilder – Développement sur le WEB 1.1 INTRODUCTION PowerBuilder dans son édition Entreprise permet le développement de sites WEB dynamiques. Les outils utilisés sont les suivants : Web Target Web DataWindow DataWindow Web Control for ActiveX DataWindow plug-in PowerBuilder window plug-in PowerBuilder window ActiveX • Web Target Un Web Target (Cible Web) est une collection de fichiers et de composants utilisés pour créer un site WEB. Il peut délivrer dynamiquement le contenu d'une base de données en utilisant des scripts clients ou serveur ou des méthodes de composants stockés sur le serveur n-tiers. • Web DataWindow Le Web DataWindow est un composant client DataWindow léger. Il est implémenté sur le client sans DLL. Il permet la manipulation des données. • DataWindow Web Control for ActiveX C'est un contrôle DataWindow pleinement interactif à utiliser avec InternetExplor. Il permet la gestion des Retrieval Arguments, des styles, des règles de validation. Il est fournit dans un CAB qui permet l'installation sur le poste client et son inscription dans le registre. • DataWindow plug-in Le DataWindow Plug-In permet l'affichage de PSR (PowerSoftReport) , dans une page HTML , qui ont été générés au préalable et stockés sur le serveur Web. Les rapports sont statiques et ne nécessitent pas d'accès à la BD. © Pascal Buguet Imprimé le 19 août 2004 Page 3 PowerBuilder – Développement sur le WEB Le navigateur (Netscape, IE,…) doit supporté les plug-in. La DLL du plug-in doit être présente sur le poste client. • PowerBuilder window plug-in Le PowerBuilder Window Plug-In exécute une application PowerBuilder qui affiche une fenêtre PowerBuilder dans une page HTML. Vous pouvez afficher, saisir des données et les valider dans la base de données. Les connexions utilisées sont les connexions du client. Comme précédemment le navigateur doit accepter les plug-in. Cette technologie requiert un client lourd. • PowerBuilder window ActiveX Le PowerBuilder window ActiveX permet d'avoir une interface évoluée dans une page HTML avec un navigateur qui autorise les ActiveX. En plus des fonctionnalités des plug-in vous pouvez utiliser JavaScript ou VBScript pour accéder à un sous-ensemble de méthodes et d'événements de la fenêtre PowerBuilder. Les connexions sont initialisées par le client avec les paramètres présents sur le client. La lourdeur du poste client – DLL, ActiveX – est l'inconvénient de cette technologie. © Pascal Buguet Imprimé le 19 août 2004 Page 4 PowerBuilder – Développement sur le WEB 1.2 LE DATAWINDOW PLUG-IN 1.2.1 Principes Le DataWindow Plug-In permet l'affichage d'un PSR dans une page HTML. Le navigateur doit accepter les plug-in Netscape (Netscape 3 ou supérieur, IE 3 ou supérieur). Un fichier PSR contient une définition de rapport ( Source et objet). Les données sont celles qui ont été stockées au moment de la création du PSR. Les données sont donc statiques et cela ne nécessite pas de connexion à la BD. Le DWPI affiche les données telles qu'elles ont été formatées dans le dwo (Style, alignement, format,… sauf les RichText). Le développement se fait sur un serveur avec la version Entreprise installée. L'installation des plug-in ne faisant pas partie de l'installation standard;veillez à ce qu'ils soient installés. Ils sont copiés dans le dossier PLUGIN de l'arborescence du système, de PB et du navigateur. • Ecrans Voici les écrans que l'on peut obtenir : en grille, en FreeForm, avec formatages particuliers (Textes inclinés, case à cocher,…). © Pascal Buguet Imprimé le 19 août 2004 Page 5 PowerBuilder – Développement sur le WEB 1.2.2 Mise en place 1.2.2.1 • Sur le serveur Transformation du dwo en PSR Dans une application PowerBuilder vous créez un dwo et vous faites une sauvegarde du dwo au format PSR. File / Save As file employes.psr • Ecriture de la page HTML Vous écrivez cette page HTML <HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> <H3>PBWPI Clients</H3> <P><EMBED SRC=clients.psr width=300 height=1000></P> </BODY> </HTML> EMBED est une spécification HTML pour les plug-in. SRC identifie l'objet à télécharger à partir d'une URL • Préparation du serveur WEB Vous copiez la page HTML et le fichier PSR dans l’arborescence du serveur internet (IIS par exemple ) c:\inetpub\wwwroot\… • Vérification du type MIME utilisé dans la base de registre du serveur Le type MIME c'est le type de contenu. Lancer regedit.exe Allez dans HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\InetInfo\para meters\mime Et vous ajouter cette clé application/datawindow8,psr,,5 © Pascal Buguet Imprimé le 19 août 2004 Page 6 PowerBuilder – Développement sur le WEB 1.2.2.2 • Sur le poste client Vérifications préalables Vérifiez : La connexion Internet / Intranet La version du navigateur La présence de la DLL ( NPDWE80.DLL) pour ce plug-in; Elle se trouve dans le dossier des plug-in d’internet du client (c:\program files\plus!\plugins par exemple). Si elle est absente vous la copiez. • Affichage de la page A partir du navigateur du poste client tapez l'URL. Par exemple http://140.0.0.105/dwpi_clients.htm © Pascal Buguet Imprimé le 19 août 2004 Page 7 PowerBuilder – Développement sur le WEB http://140.0.0.105/dwpi_villes.htm avec ce code HTML ci : <HTML> <HEAD><TITLE>PSR</TITLE></HEAD> <BODY> <H1>DWPI Villes</H1> <P><EMBED SRC=villes.psr width=700 height=400></P> </BODY> </HTML> © Pascal Buguet Imprimé le 19 août 2004 Page 8 PowerBuilder – Développement sur le WEB 1.3 LE POWERBUILDER WINDOW PLUG-IN 1.3.1 Principes Le PowerBuilder Window Plug-in permet l'affichage d'une fenêtre Child dans une page HTML. La fenêtre peut contenir des contrôles variés ( contrôles communs, OLE, OCX, DataWindow, TreeView,…). Il est aussi possible d'ouvrir des fenêtres Popup et Response. L'objet peut contenir des PBD (PowerBuilder Dynamic Library). Il y a deux PBWPI : la version standard (NPPBA80.DLL) et la version sécurisée (NPPBS80.DLL). La version standard accède auX fichiers locaux et aux applications locales qu'elles peuvent exécuter. Les paramètres de sécurité du navigateur peuvent être bloquants. La version sécurisée ne permet pas l'accès : aux BD aux External Functions à Internet aux E-Mail à l'OLE à EAS à la DDE • Ecrans Types d'écrans que vous pouvez obtenir. Cette fenêtre contient un sle, deux boutons ; le premier bouton remplit le sle et le deuxième bouton ouvre la petite fenêtre popup que l’on voit à droite. © Pascal Buguet Imprimé le 19 août 2004 Page 9 PowerBuilder – Développement sur le WEB 1.3.2 Mise en place 1.3.2.1 • Sur le serveur L'application Vous créer une application PowerBuilder. La ou les fenêtres qui seront utilisées doivent être de type Child (Eventuellement Popup et Response). Vous créez un projet en PCode (PBD). N'oubliez pas les PBR (PowerBuilder Resource) si vous en avez. • Ecriture de la page HTML Code de la première version (Une fenêtre, un sle et un bouton) <HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> <H1>Plug_in Window 1</H1> <P><EMBED SRC=web_1.pbd width=200 height=100 window=w_remplir></p> </BODY> </HTML> Code de la deuxième version telle qu’elle apparaît dans la copie d’écran cidessus. <html> <head><title></title></head> <body> <h1>Plug_in_Window1</h1> <P><embed src=web_1.pbd width=150 height=100 window=w_remplir window=w_popup></p> </body> </html> • Préparation du serveur WEB Exemple d'élément EMBED avec des attributs étendus. <EMBED SRC=app_pbwpi.pbd Width=300 Height=300 WINDOW = w_enfant LIBRARY=http://140.0.0.105/pb/fic1.pbd LIBRARY=http://140.0.0.105/pb/fic2.pbd © Pascal Buguet Imprimé le 19 août 2004 Page 10 PowerBuilder – Développement sur le WEB APPLICATION=app_pbwpi> L'option Library permet le téléchargement de bibliothèques supplémentaires. L'option Application permet la prise en charge des variables, fonctions,… de niveau application/ Vous vérifiez l'installation des DLL serveur. Cf procédure d'installation sur le serveur avec l'option des plug-in. Vous copiez les fichiers PBD sur votre site WEB (Arborescence InetPub\wwwroot\…. • Vérification du type MIME Dans Regedit ajouter une des clés suivantes : application/vnd.powerbuilder8,pbd,,5 pour la version standard application/vnd.powerbuilder8-s pbd,,5 pour la version secure, © Pascal Buguet Imprimé le 19 août 2004 Page 11 PowerBuilder – Développement sur le WEB en attendant <HTML> <!-- CODEBASE="http://140.0.0.105/pbrx80.ocx" --> <SCRIPT LANGUAGE="VBSCRIPT"> <!-sub PBRX1_clicked(flags,xpos,ypos) document.ma_forme.tb_pb_ev.value=xpos document.ma_forme.tb_user_fct.value=ypos end sub ' ----sub clic_x() dim li_x li_x = pbrx1.pointerx() document.ma_forme.tb_pb_ev.value = li_x end sub ' ---sub invoque_of() dim ls_fct ls_fct = "of_close" pbrx1.InvokePBFunction(ls_fct) end sub ' --sub invoque_ue() dim ls_ue ls_ue = "ue_close" pbrx1.TriggerPbEvent(ls_ue) end sub --> </SCRIPT> <HEAD><TITLE></TITLE></HEAD> <BODY> <H1>PBWAX Villes</H1> <P><OBJECT ID="pbrx1" NAME="pbrx1" width=400 height=200 CLASSID="CLSID:88881304-8888-1000-8000-080009AC61A9"> <PARAM NAME="_Version" VALUE="65536"></PARAM> <PARAM NAME="_ExtentX" VALUE="5962"></PARAM> <PARAM NAME="_ExtentY" VALUE="2164"></PARAM> <PARAM NAME="_StockProps" VALUE="0"></PARAM> © Pascal Buguet Imprimé le 19 août 2004 Page 12 PowerBuilder – Développement sur le WEB <PARAM NAME="PBWindow" VALUE="w_enfant"></PARAM> <PARAM NAME="LibList" VALUE="http://140.0.0.105/app_pbwax.pbd;"></PARAM> <PARAM NAME="PBApplication" VALUE="app_pbwax"></PARAM> </OBJECT> <FORM NAME="ma_forme"> <P><INPUT TYPE=Text NAME="tb_pb_fct" SIZE="20"> <INPUT TYPE=BUTTON VALUE="Fonction PB" ONCLICK="call clic_x()"> <P><INPUT TYPE=Text NAME="tb_pb_ev" SIZE="20"> <INPUT TYPE=BUTTON VALUE="Event PB" ONCLICK="call appel_fct_pb()"> <P><INPUT TYPE=Text NAME="tb_user_fct" SIZE="20"> <INPUT TYPE=BUTTON VALUE="Fonction USER" ONCLICK="call invoque_of()"> <P><INPUT TYPE=Text NAME="tb_ue" SIZE="20"> <INPUT TYPE=BUTTON VALUE="EVENT USER" ONCLICK="call invoque_ue()"> </FORM> </BODY> </HTML> © Pascal Buguet Imprimé le 19 août 2004 Page 13 PowerBuilder – Développement sur le WEB 1.3.2.2 • Sur le poste client Vérifications préalables Vérifiez : La connexion Internet / Intranet La version du navigateur La présence d'une des DLL ( NPPBA80.DLL ou NPPBS80.DLL) pour ce plugin; Elle se trouve dans le dossier des plug-in d’internet du client (c:\program files\plus!\plugins par exemple). Si elle est absente vous la copiez. Les Runtime DLL de PowerBuilder dans un dossier référencé par un PATH. PBVM80.DLL Tous les cas LIBJCC.DLL Tous les cas PBDWE80.DLL DataWindow et DataStore PBRTC80.DLL RichText PBFNT80.INI Références vers des polices inaccessibles PBLAB80.INI Formats prédéfinis des étiquettes des DataWindows. PBTRA80.DLL Traçage de connexions BD. Si vous n'avez pas inséré dans un PBR des images, vous les copiez dans le chemin spécifié dans les propriétés des contrôles (Recopie de l'arborescence de développement). Si vous accéder à une BD vous installez la couche cliente (Client Oracle8 par exemple) et vous la configurez. • Affichage de la page A partir du navigateur du poste client tapez l'URL. Par exemple http://140.0.0.105/page_plug_in_window1.htm © Pascal Buguet Imprimé le 19 août 2004 Page 14 PowerBuilder – Développement sur le WEB 1.3.3 Autres exemples 1.3.3.1 Fenêtre avec une ListBox © Pascal Buguet Imprimé le 19 août 2004 Page 15 PowerBuilder – Développement sur le WEB 1.3.3.2 Fenêtre avec une Gestion de DataWindow • Dans le navigateur • Le code HTML <HTML> <HEAD><TITLE></TITLE></HEAD> <BODY> <H1>PBWPI Villes</H1> <P><EMBED SRC=web_1.pbd width=300 height=200 window=w_tests window=w_popup window w_dw_villes></P> </BODY> </HTML> • Le code PowerBuider • Les paramétrages Oracle, ODBC des postes… © Pascal Buguet Imprimé le 19 août 2004 Page 16 PowerBuilder – Développement sur le WEB 1.4 LE POWERBUILDER WINDOW ACTIVEX 1.4.1 Principes La PowerBuilder Window ActiveX ( PBWAx) possède les mêmes fonctionalités que la PowerBuilber Window Plug-In (PBWPI) plus la possibilité de coder des appels JavaScript et VBScript à des fonctions PB, des UserEvents PB, des fonctions personnalisées et des événements personnalisés (User-Events). Comme avec la PBWPI les connections BD sont locales. Le navigateur doit supporter les ActiveX. Les interfaces possibles sont : Accès BD DW maître-détails Treview, ListView,… Contrôles OLE,… PowerBuilder propose deux ActiveX : PBRX80.OCX pour la version standard PBRXS80.OCX pour la version sécurisée. L'OCX est inclus comme élément dans la page HTML. Le client est un client lourd qui doit posséder les DLL PowerBuilder sur son poste (PBVM80.DLL, LIBJCC.DLL,…) et l'OCX (Qui peut être téléchargé – option CODEBASE – mais qui peut être installé au préalable sur le poste avec regsvr32 dans le répertoire system de l'arborescence Windows, par exemple regsvr32.exe c:\winnt\system\pbrx80.ocx). © Pascal Buguet Imprimé le 19 août 2004 Page 17 PowerBuilder – Développement sur le WEB 1.4.2 Mise en place sur le serveur La mise en place est semblable à celle de la PBWPI. • L'application Vous installez l'ActiveX. Vous stockez sur le serveur l'application qui a été développée sur le poste développeur. Seules les fenêtres Child sont acceptées dans ce type de projet, et elles ne doivent pas posséder de menus, de boutons de contrôle,... Les fenêtres Popup et Response doivent être ouvertes par la Child. Vous créez un projet EXE avec des PBD. • Ecriture de la page HTML Cette fois-ci dans la page HTML il faut utilisez l'élément OBJECT en spécifiant le Class ID, le(s) PBD, le nom de la fenêtre Child. <OBJECT NAME="PBRX1" WIDTH=225 HEIGHT=83 CLASSID="CLSID:88881304-8888-1000-8000-080009AC61A9" CODEBASE="http://140.0.0.105/pbrx80.ocx"> <PARAM NAME="_Version" VALUE="65536"></PARAM> <PARAM NAME="_ExtentX" VALUE="5962"></PARAM> <PARAM NAME="_ExtentY" VALUE="2164"></PARAM> <PARAM NAME="_StockProps" VALUE="0"></PARAM> <PARAM NAME="PBWindow" VALUE="w_enfant"></PARAM> <PARAM NAME="LibList" VALUE="http://140.0.0.105/app_pbwax.pbd;"></PARAM> <PARAM NAME="PBApplication" VALUE="app_pbwax"></PARAM> </OBJECT> Les attributs : OBJECT : l'élément OCX dans la page HTML. CLASSID : l'identifiant de la classe; c'est id de la classe Pbrx80. CODEBASE : l'URL de stockage de l'OCX PBRX80.OCX ou PBRXS80.OCX. Les paramètres : PBWindow : le nom de la fenêtre Child. LIBLIST : la liste des PBD. Le séparateur est le ;. PBAPPLICATION : le nom de l'application. © Pascal Buguet Imprimé le 19 août 2004 Page 18 PowerBuilder – Développement sur le WEB 1.4.2.1 PB Event et VBScript Les événements PB disponibles Activate Clicked Close Desactivate DoubleClicked Hide Key MouseDown PBMouseDown PBMouseUp Resize Show SystemKey Timer Exemple de script <SCRIPT LANGUAGE="VBScript"> <!-Sub PBRX1_Clicked(flags, xpos, ypos) document.buttonForm.passedXPos.value = xpos document.buttonForm.passedYPos.value = ypos end sub --> </SCRIPT> © Pascal Buguet Imprimé le 19 août 2004 Page 19 PowerBuilder – Développement sur le WEB 1.4.2.2 PB function et VBScript Voici la liste des fonctions disponibles : PointerX renvoie la distance du pointer par rapport au bord gauche de la fenêtre. PointerY renvoie la distance du pointer par rapport au haut de la fenêtre. Print imprime la fenêtre SetRedraw Boolean : permet le redimensionnement de la fenêtre. Timer crée un timer. <SCRIPT LANGUAGE="VBScript"> <!-dim cumSeconds cumSeconds = 0 Sub pbSetTime() dim li_return dim li_interval li_interval = clockForm.timerInterval.value li_return = pbrx1.Timer(li_interval) if li_return 1 THEN msgBox "Set Timer failed" end if end sub //--> </SCRIPT> © Pascal Buguet Imprimé le 19 août 2004 Page 20 PowerBuilder – Développement sur le WEB 1.4.2.3 User Function et VBScript La fonction d'appel Sub invokeFunction() Dim retcd Dim myForm Dim args(1) Dim rc Dim numargs Dim theFunc Dim rcfromfunc retcd = 0 numargs = 1 rc = 0 theFunc = "of_args" Set myForm = Document.buttonForm args(0) = buttonForm.textToPB.value retcd = PBRX1.InvokePBFunction(theFunc, numargs, args) rc = PBRX1.GetLastReturn() if rc 1 then msgbox "Error. Empty string." end if PBRX1.ResetArgElements() end sub <FORM NAME="buttonForm"> <P><INPUT TYPE=Text NAME="textToPB" SIZE="20"> <P><INPUT TYPE=BUTTON VALUE="Invoke Function" ONCLICK="call invokeFunction()"> </FORM> © Pascal Buguet Imprimé le 19 août 2004 Page 21 PowerBuilder – Développement sur le WEB 1.4.2.4 User Event et VBScript Sub TrigEvent( ) Dim retcd Dim myForm Dim args(1) Dim rc Dim numargs Dim theEvent retcd = 0 numargs = 1 rc = 0 theEvent = "ue_args" Set myForm = Document.buttonForm args(0) = buttonForm.textToPB.value retcd = PBRX1.TriggerPBEvent(theEvent, numargs, args) rc = PBRX1.GetLastReturn() if rc 1 then msgbox "Error. Empty string." end if PBRX1.ResetArgElements() end sub <FORM NAME="buttonForm"> <P><INPUT TYPE=Text NAME="textToPB" SIZE="20"> <P><INPUT TYPE=BUTTON VALUE="Trigger Event" ONCLICK="call TrigEvent()"> </FORM> Notes : code avec FrontPage ou WebTargets HTML ou ActiveX Control Pad. © Pascal Buguet Imprimé le 19 août 2004 Page 22 PowerBuilder – Développement sur le WEB 1.4.3 Mise en place sur le poste client Vous installez : L'ActiveX (Optionnel). Les bibliothèques de déploiement (PBVM80.DLL,…). les DLL Microsoft suivantes : MFCC42.DLL MSVRCRT.DLL URL.DLL URLMOM.DLL. Les connexions BD Les OLE serveurs utilisés de la fenêtre. Les contrôles ActiveX supplémentaires de la fenêtre. Vous sollicitez la page HTML dans votre navigateur. http://140.0.0.105/pbwax_dw_villes.htm © Pascal Buguet Imprimé le 19 août 2004 Page 23 PowerBuilder – Développement sur le WEB 1.4.4 Autres exemples © Pascal Buguet Imprimé le 19 août 2004 Page 24