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