L4G >  CALLIU  

Afficher tout Masquer tout

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).

Syntaxe

Syntaxe 1 : Appel à distance d’un sous-programme L4G ou d’une méthode Java "void"

Calliu =expr_procedure With [args,...] Using [abreviation]
Calliu procedure With [args,...] Using [abreviation]

Syntaxe 2 : Appel d’une méthode publique d’une Widget graphique liée à un champ d’une Classe écran

Calliu =expr_method From [M:Classe_Mask]id_zone With [args,...]
Calliu method From [M:Classe_Mask]id_zone With [args,...]

Paramètres

Elément 

Description 

Restriction

Expr_procedure

Expression de type Char 

Identifiant du sous-programme L4G ou de la méthode java à appeler.
Dans le cas d‘un sous-programme L4G, cet identifiant doit respecter le formalisme "nom_du_traitement :sous_programme".
Dans le cas d'une méthode Java, cet identifiant doit respecter le formalisme "classe:methode_statique" 

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 ‘,’.
Ces arguments peuvent être des variables, des constantes ou des expressions de n’importe quel type, tableaux compris.

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 ;
La session ayant été préalablement établie suite à l’exécution de l’instruction Opadxd

Exemples

# 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]

Description

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.

Erreurs associées

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.
Le canal de communication correspondant à l'identifiant [abreviation] a été rompu.

 ERCHNNOEX (131)

Le canal de communication n'est pas établi.
Le canal de communication correspondant à l'identifiant  [abreviation] n'a pas été préalablement établi via l'instruction Opadxd.

Erreurs associées

OpadxdFunciuCallErrmErrpErrn - Errl