L’instruction Calliu permet de déclencher l’appel d’une procédure distante (RPC) depuis un serveur de traitement Safe X3.
La procédure peut correspondre à un sous-programme L4G situé sur un Serveur d’Application Safe X3 ou à une méthode statique d’une classe Java située dans un container OSGI d’un serveur Safe X3 Bridge Java (Syntaxe 1), ou bien à une méthode publique d’une Widget graphique liée à un champ de classe d’écran en cours d’affichage dans une session Safe X3 Cliente (Syntaxe 2).
Calliu =expr_procedure With [args,...] Using [abreviation]
Calliu procedure With [args,...] Using [abreviation]
Calliu =expr_method From [M:Classe_Mask]id_zone With [args,...]
Calliu method From [M:Classe_Mask]id_zone With [args,...]
Elément | Description | Restriction |
Expr_procedure | Expression de type Char | Identifiant du sous-programme L4G ou de la méthode java à appeler. |
procedure | Variable ou constante de type Char | idem. |
Expr_Method | Expression de type Char | Identifiant de la méthode à appeler |
Method | Constante de type Char | idem. |
[M:Classe_Mask]id_zone | Identifiant | Identifiant d’une zone de classe d’écran |
Args,... | Liste d’arguments séparés par des ‘,’. | Il doit y avoir adéquation entre la liste d’arguments passée et la liste d’arguments attendue par le sous-programme (comme dans un Call) ou la méthode cible. |
Abreviation | Identifiant | Identifie la session Safe X3 distante ; |
# Appel de la Macro VBA « Hello » contenue dans le document Word Office
# affiché dans le bloc bureautique « BB1 » de l’écran « ZTS »en cours de
# saisie dans une session cliente.
Calliu "Hello" From [M:ZTS]BB1 with “Scott”
End
# Valorisation d’une plage de cellule dans un la deuxième feuille d’un
# document Excel Office affiché dans le bloc bureautique « BB2 » de l’écran
# « ZTS » en cours de saisie dans une session cliente.
Local Char TABTESTCHAR1(250)(1..40)
Local Integer I
For I= 1 To 40
TABTESTCHAR1(I) =" # Tab1 Occur " + num$(I - 1)
Next I
Calliu ".._setRow" From [M:ZTS]BB2 With 2, "B3:J3", TABTESTCHAR1
End
# Exécution sur le serveur de traitement « astragale » du sous-programme
# « HELLO » du traitement L4G «TEST» situé sur le dossier « DEMOFRA » du
# serveur d’application « mercure »
Local Char NAME(250)
Onerrgo $OPE OpAdxd "astragale:16000" With "mercure:5500@DEMOFRA","FRA","myUserId","myPassword" Using [EXT]
Onerrgo $RPC
NAME = “Scott”
Calliu "TEST:HELLO" With NAME Using [EXT]
Onerrgo $CLO
OPADXD Using [EXT]
End
$OPE
Local Char WMESS(255)
WMESS= "Erreur Ouverture Opadxd : N°"-num$(errn)-" ligne"-num$(errl) + "." + chr$(10) + "- Mess Fixe : " + errmes$(errn) + "." + chr$(10) + "- Détail : " + errm
Errbox WMESS
End
$RPC
Errbox "Erreur Calliu : N°"-num$(errn)-"en ligne"-num$(errl) + "." + chr$(10) + "- Mess Fixe : " + errmes$(errn) + "." + chr$(10) + "- Détail : " + errm
Resume
$CLO
Errbox "Erreur Fermeture Opadxd : N°"-num$(errn)-"en ligne"-num$(errl) + "." + chr$(10) + "- Mess Fixe : " + errmes$(errn) + "." + chr$(10) + "- Détail : " + errm
Resume
# Exécution sur le serveur Safe X3 Bridge Java « pluton » de la méthode
# statique « m_Hello » de la classe Java
# « com.sage.x3.runtime.bundle.deamon.CTest »
# Ouverture d'un lien avec le serveur Bridge Java
Onerrgo $CLOSEADX
OpAdxd "pluton:5689" With "DUMMY","FRA","myUserId","myPassword" Using [JAVASRV]
# Appel de la méthode
Calliu "com.sage.x3.runtime.bundle.deamon.CToolTest:m_Hello" With "Scott" Using [JAVASRV]
$CLOSEADX
# Fermeture du lien établi avec le serveur Bridge Java
OpAdxd Using [JAVASRV]
Dans le cas de la première Syntaxe, l’appel ne peut aboutir que si une session a été préalablement établie avec le serveur de traitement Safe X3 ou le serveur Safe X3 Bridge Java cible. L’instruction Opadxd permet d’établir une session avec un de ces types de serveur. Lors de l’appel d’un sous programme L4G, les arguments peuvent être passés par variable ou par valeur suivant la définition du sous-programme appelé. Dans ce cas de figure, hormis que le sous-programme s’exécute dans le contexte de la session du Serveur de traitement Safe X3 distant, le comportement de l’instruction Calliu est comparable à celui de l’instruction Call. Lors de l’appel d’une méthode d’une classe Java située dans un container OSGI d’un serveur Safe X3 Bridge Java, les arguments peuvent être passés par variable ou par valeur suivant les implémentations.
Dans le cas de la deuxième Syntaxe, l’appel ne peut aboutir que si la classe d’écran qui contient le champ cible est bien en cours de saisie dans la session Safe X3 cliente courante. Actuellement seuls les champs d’écran de type « Bloc Graphique DHTML » ou « Bloc MS Office » peuvent faire l’objet de ce type d’appel distant.
Si la méthode à solliciter correspond à une fonction JavaScript, les arguments sont passés par valeur. Si la méthode à solliciter correspond à une macro VBA d’un document MS Office, les arguments sont passés par variable.
Que la méthode appelée soit écrite en VBA ou en JavaScript, les types natifs L4G sont sérialisés (marshalling) en Variant COM.
Par défaut, les erreurs sont levées par la procédure distante sont présentées à l’utilisateur dans une boite d’information.Par défaut, les erreurs sont levées par la procédure distante sont présentées à l’utilisateur dans une boite d’information.
Dans le cas où une étiquette de déroutement en cas d’erreur (Onerrgo) a été déclarée dans le sous-programme qui exécute l’instruction Calliu, les erreurs levées par la procédure distante sont publiées dans les variables systèmes ad hoc de la session Safe X3 appelante: Errm Errn Errp Errl.
Erreur | Description |
ERNET (130) | Erreur réseau. |
ERCHNNOEX (131) | Le canal de communication n'est pas établi. |