LES SERVEURS AUTOMATION
Transcription
LES SERVEURS AUTOMATION
PowerBuilder – Les serveurs Automation CHAPITRE 1 LES SERVEURS AUTOMATION Chapitre 1 LES SERVEURS AUTOMATION ............................................... 2 1.1 Définition ................................................................................................... 3 1.2 Un UserObject comme Serveur Automation............................................. 5 1.2.1 Objectif.............................................................................................. 5 1.2.2 Démarche........................................................................................... 5 1.2.3 Schéma .............................................................................................. 5 1.2.4 Etapes détaillées ................................................................................ 6 1.2.4.1 Création de la classe et de la méthode de calcul............................ 6 1.2.4.2 Construction de la library .............................................................. 6 1.2.4.3 Création du projet........................................................................... 7 1.2.4.4 Déploiement du projet.................................................................. 10 1.2.4.5 Inscription et vérification dans la Base du Registre..................... 10 1.2.4.6 Utilisation du Serveur COM que vous avez créé......................... 12 1.2.4.7 Exemple d'utilisation avec Visual Basic ...................................... 13 1.3 PowerBuilder comme Serveur Automation............................................. 14 1.3.1 Principe............................................................................................ 14 1.3.2 Interfaces ......................................................................................... 14 1.3.3 Utilisation ........................................................................................ 15 1.3.3.1 Commentaires............................................................................... 16 1.4 NAMED SERVER .................................................................................. 18 1.4.1 Le Serveur ....................................................................................... 18 1.4.2 L'utilisation...................................................................................... 18 1.5 Serveur COM distant (DCOM) ............................................................... 20 © Pascal Buguet Imprimé le 19 août 2004 Page 2 PowerBuilder – Les serveurs Automation 1.1 DEFINITION Nous avons vu dans un chapitre précédent les serveurs automation, Excel par exemple; nous allons voir dans ce chapitre comment créer un serveur automation avec PowerBuilder. Un serveur automation PowerBuilder est une classe PowerBuilder non visuelle transformée en serveur automation, disponible pour des applications PowerBuilder ou toute autre application supportant l'automation. PowerBuilder permet la création de "library" de type PBD (PowerBuilber Dynamic Library) ou DLL (Dynamic Linking Library). La version Profesional ne permet que la création de PBD; c'est la version Entreprise qui permet la création de DLL. La création de serveur automation est utile pour créer des serveurs de traitement qui contiennent des règles de gestion. © Pascal Buguet Imprimé le 19 août 2004 Page 3 PowerBuilder – Les serveurs Automation Il existe trois méthodes pour accéder aux objets PowerBuilder : • Créer une classe PowerBuilder et l'enregistrer comme serveur automation. Cette solution présente l'avantage de pouvoir repérer dans le navigateur du registre votre classe et de devoir coder simplement. C'est le schéma suivant. Client PBD ou DLL La connexion au serveur automation invoque l'environnement d'exécution de PowerBuilder. Les classes ne sont pas partagées. • Utiliser PowerBuilder comme Serveur Automation et instancier les classes que vous avez créées. Cette solution présente l'avantage de pouvoir travailler avec plusieurs classes dans le même objet. Vous travaillez avec l'entrée suivante du registre PowerBuilder.Application qui a été inscrite lors de l'installation de PowerBuilder. L'environnement de PowerBuilder n'est instancié qu'une seule fois. Vous pouvez invoquer toutes les méthodes de vos classes et de PowerBuilder (Privées et systèmes). Les classes sont partagées. C'est le schéma suivant PBD ou DLL Client PowerBuilder .Application PBD ou DLL • Créer un Serveur Nommé et pouvoir invoquer plusieurs instances de PowerBuilder. © Pascal Buguet Imprimé le 19 août 2004 Page 4 PowerBuilder – Les serveurs Automation 1.2 UN USEROBJECT COMME SERVEUR AUTOMATION 1.2.1 Objectif A titre d'exemple nous allons créer une classe qui calcule le montant de la TVA à payer en fonction de la catégorie d'un produit. 1.2.2 Démarche • • • • • • • • Création du WorkSpace Création de l'application Création d'un UserObject de type CustomClass Construction de la bibliothèque (Build Library) Création du projet Déploiement de ce projet Enregistrement du serveur dans la base de registre Création d'un projet pour tester le composant COM 1.2.3 Schéma Ws_serveur_com_tva.pbw (Workspace) App_serveur_com_tva.pbl (Library) N_cst_tva (User Object – Custom Class) Of_tva (Méthode) P_serveur_com_tva (Project) © Pascal Buguet Imprimé le 19 août 2004 Page 5 PowerBuilder – Les serveurs Automation 1.2.4 Etapes détaillées 1.2.4.1 Création de la classe et de la méthode de calcul. Nous créons un UserObject n_cst_tva avec une méthode of_tva 1.2.4.2 Construction de la library Vous sélectionnez la bibliothèque (la PBL) et cliquez droit. Vous cliquez ensuite sur l'option Build Runtime Library. Vous choisissez entre du Pcode (PseudoCode : plus rapide en test) ou du code machine (DLL plus rapide en exécution). © Pascal Buguet Imprimé le 19 août 2004 Page 6 PowerBuilder – Les serveurs Automation 1.2.4.3 Création du projet Vous créez un nouveau projet de type Automation Server ( Avec l'assistant – Wizard ) • Les étapes Premier écran d'ouverture, vous cliquez sur Next Vous Sélectionnez la PBL Vous sélectionnez la classe. Dans le troisième cas vous sélectionnerez l'application. © Pascal Buguet Imprimé le 19 août 2004 Page 7 PowerBuilder – Les serveurs Automation Vous nommez votre projet (p_serveur_com_tva par exemple) et vous en donnez une description Vous donnez un ID qui sera l'ID dans le registre Vous générez un GUID (Global Unique Identifier) en cliquant sur le bouton New; vous nommez le fichier REG qui permettra l'inscription dans le registre Vous sélectionnez l'option Type Library pour que dans le browser de classes vous ayez les caractéristiques (Attributs, méthodes) de votre serveur © Pascal Buguet Imprimé le 19 août 2004 Page 8 PowerBuilder – Les serveurs Automation Vous générez le GUID et spécifiez le nom du fichier TLB (Type Library). Vous sélectionnez Uses Machine Code si vous avez construit une DLL. Récapitulatifs © Pascal Buguet Imprimé le 19 août 2004 Page 9 PowerBuilder – Les serveurs Automation 1.2.4.4 Déploiement du projet En cliquant sur le bouton "Deploy" 1.2.4.5 • Inscription et vérification dans la Base du Registre Inscription Vous inscrivez votre serveur automation en double cliquant sur le fichier d'extension REG créé précédemment. Vous trouverez le nom du projet (p_serveur_com_tva) et le nom de la classe (n_cst_tva). • Vérification dans la Base de registre Vous lancez Regedit.exe (Dans le répertoire de Windows) à partir de l'explorateur ou de tout autre moyen et vous recherchez votre nouvelle entrée avec Edition / Rechercher. © Pascal Buguet Imprimé le 19 août 2004 Page 10 PowerBuilder – Les serveurs Automation © Pascal Buguet Imprimé le 19 août 2004 Page 11 PowerBuilder – Les serveurs Automation 1.2.4.6 Utilisation du Serveur COM que vous avez créé. Vous créez une nouvelle application pour tester le composant. • L'écran de test • Le principe 1) Connexion à votre serveur (Instanciation de la classe) 2) Utilisation de la méthode • Le script oleobject lole_tva int li_retour lole_tva = create oleobject li_retour = lole_tva.ConnectToNewObject("p_serveur_com_tva") if li_retour < 0 then messagebox("Alerte","Impossible de se connecter au composant P_serveur_com_tva") else sle_tva.text = string(lole_tva.of_tva(real(sle_montant.text))) end if if isvalid(lole_tva) then destroy(lole_tva) setnull(lole_tva) end if • Commentaires Vous déclarez une variable de type objet oleobject lole_tva © Pascal Buguet Imprimé le 19 août 2004 Page 12 PowerBuilder – Les serveurs Automation Vous l'instanciez lole_tva = create oleobject Vous vous connectez au serveur Automation ou vous créez un nouvel objet lole_tva.ConnectToNewObject("p_serveur_com_tva") Vous utilisez une de ses méthodes lole_tva.of_tva(real(sle_montant.text)) Vous retrouvez votre serveur COM dans le browser dans la rubrique OLE / Programmable Objects. 1.2.4.7 Exemple d'utilisation avec Visual Basic ' --------------------------Private Sub cb_test_click() ' --------------------------Dim ole_auto as object Set ole_auto = CreateObject("p_serveur_com_tva") If ole_auto is Nothing Then Messagebox("Impossible d'instancier le projet") Else Tb_resultat.Text = str(ole_auto.of_tva(val(tb_prix.Text))) End If End Sub © Pascal Buguet Imprimé le 19 août 2004 Page 13 PowerBuilder – Les serveurs Automation 1.3 POWERBUILDER COMME SERVEUR AUTOMATION 1.3.1 Principe La démarche est identique mise à part dans les scripts où l'on se connecte au serveur PowerBuilber.Application. Ici le schéma est différent : Projet + Classe(s) + Méthode(s) 1.3.2 Interfaces • Le user Object • L'interface utilisateur • L'écran de conception © Pascal Buguet Imprimé le 19 août 2004 Page 14 PowerBuilder – Les serveurs Automation 1.3.3 Utilisation • Principes d'utilisation 1) Se connecter au serveur "PowerBuilder.Application" 2) Instancier un ou plusieurs objets 3) Utiliser les méthodes des objets instanciés. • Les scripts Les variables d'instance Oleobject iole_pba Oleobject iole_pb_server_arith Le script Open de la fenêtre int li_statut iole_pba = create oleobject li_statut = iole_pba.ConnectToNewObject("powerbuilder.application") if li_statut < 0 then messagebox("Alerte!!!","Impossible de se connecter à PowerBuilder") return else messagebox("Alerte!!!","Connexion à PowerBuilder") end if iole_pba.libraryList = "c:\pascal\pb8\pb_server\pb_server.pbd" iole_pba.machinecode= FALSE iole_pb_server_arith = iole_pba.createobject("n_cst_arithmetique") if isnull(iole_pb_server_arith) then messagebox("Alerte!!!","Impossible d'instancier n_cst_arithmetique") return else messagebox("Alerte!!!","Instanciation de n_cst_arithmetqiue réussie") end if iole_pb_server_chaines = iole_pba.createobject("n_cst_chaines") if isnull(iole_pb_server_chaines) then © Pascal Buguet Imprimé le 19 août 2004 Page 15 PowerBuilder – Les serveurs Automation messagebox("Alerte!!!","Impossible d'instancier n_cst__chaines") return else messagebox("Alerte!!!","Instanciation de n_cst_chaines réussie") end if Le script Close destroy iole_pb_server_arith destroy iole_pb_server_chaines iole_pba.DisconnectObject() destroy iole_pba Les scripts des boutons sle_resultat.text = string(iole_pb_server_arith.of_add(integer(sle_x.text) ,integer(sle_y.text))) sle_resultat2.text = string(iole_pb_server_arith.of_multi(integer(sle_x2.text) ,integer(sle_y2.text))) sle_resultat3.text = iole_pb_server_chaines.of_concat(sle_sx.text,sle_sy.text) 1.3.3.1 Commentaires Les variables Objet sont des variables d'instance Il y a au moins deux variables Objet : une pour PowerBuilder.Application (iole_pba) et une par classe à instancier (Iole_pb_server_arith, iole_pb_server_chaines,…) Connexion au serveur iole_pba.ConnectToNewObject("powerbuilder.application") Spécification de l'emplacement et du type de code pour la bibliothèque iole_pba.libraryList = "c:\pascal\pb8\pb_server\pb_server.pbd" iole_pba.machinecode= FALSE Instanciation d'une classe © Pascal Buguet Imprimé le 19 août 2004 Page 16 PowerBuilder – Les serveurs Automation iole_pba.createobject("n_cst_arithmetique") Utilisation d'une méthode iole_pb_server_arith.of_multi(…) © Pascal Buguet Imprimé le 19 août 2004 Page 17 PowerBuilder – Les serveurs Automation 1.4 NAMED SERVER 1.4.1 Le Serveur La démarche est identique mise à part le choix dans la création du projet. Lors d'une étape vous choisissez la bibliothèque au lieu de choisir la classe (UserObject). 1.4.2 L'utilisation • Ecran • Principes d'utilisation 1) Connexion au NamedServer 2) Instanciation des classes 3) Utilisation des méthodes. © Pascal Buguet Imprimé le 19 août 2004 Page 18 PowerBuilder – Les serveurs Automation • Les scripts Le script Open int li_statut iole_server = create oleobject li_statut = iole_server.ConnectToNewObject("p_pb_name_server") if li_statut < 0 then messagebox("Alerte!!!","Impossible de se connecter à p_pb_name_server") return else messagebox("Alerte!!!","Connexion à p_pb_name_server") end if iole_arith = iole_server.createobject("n_cst_arithmetique") if isnull(iole_arith) then messagebox("Alerte!!!","Impossible d'instancier n_cst_arithmetique") return else messagebox("Alerte!!!","Instanciation de n_cst_arithmetqiue réussie") end if Le script Close destroy iole_arith iole_server.DisconnectObject() destroy iole_server Les scripts des boutons sle_resultat.text = string(iole_arith.of_add(integer(sle_x.text) ,integer(sle_y.text))) sle_resultat2.text = string(iole_arith.of_multi(integer(sle_x2.text) ,integer(sle_y2.text))) • Commentaires La connexion au serveur nommé iole_server.ConnectToNewObject("p_pb_name_server") Pour le reste c'est la même chose Instanciation des classes Utilisation des méthodes © Pascal Buguet Imprimé le 19 août 2004 Page 19 PowerBuilder – Les serveurs Automation 1.5 SERVEUR COM DISTANT (DCOM) © Pascal Buguet Imprimé le 19 août 2004 Page 20