Show Menu
SUJETS×

Implémenter des méthodes SOAP

Introduction

Il est possible de créer des méthodes SOAP en Javascript. Cette fonctionnalité permet simplement des traitements applicatifs, elle peut remplacer le développement de JSPs et leur invocation dans les formulaire.
Ces méthodes SOAP se comporteront de la même façon que celles définies nativement dans l'application. Les mêmes attributs sont supportés : statique, clé seule et const.

Définition d'une bibliothèque de méthodes

La création d'une bibliothèque de méthodes se divise en deux parties :
  • La déclaration SOAP des méthodes,
  • La définition (ou l'implémentation) en JavaScript.

Déclaration

Les méthodes doivent d’abord être déclarées dans les schémas (pour en savoir plus sur la création et l’édition des schémas, consultez cette section ).
Leur déclaration est similaire à celle des méthodes natives. La seule différence est l’ajout de l’attribut 'library' spécifiant le nom de la bibliothèque de méthodes dans laquelle se trouve la définition.
Ce nom correspond au nom (avec l'espace de nommage) de l'entité de type 'Code JavaScript'.
Exemple:
La méthode testLog(msg) est déclarée dans une extension de nms:recipient
<method name="testLog" static="true" library="cus:test">
     <parameters>
       <param name="message" type="string" inout="in"/>
     </parameters>
   </method>

L'espace de nommage et le nom utilisés pour la bibliothèque sont indépendants de l'espace de nommage et du nom du schéma dans lequel se trouve la déclaration.

Définition

Les méthodes SOAP sont implémentées sous forme de fonctions Javascript regroupées dans un script représentant une bibliothèque.
Une bibliothèque de méthodes peut regrouper des fonctions pour différents schémas ou inversement, les fonctions d'un même schéma peuvent être definies dans des bibliothèques séparées.
Le script peut contenir du code qui sera exécuté au chargement initial de la bibliothèque.
1. Nom
Le nom de la fonction doit respecter le format suivant :
 <schema-namespace>_<schema-name>_<method-name>

Exemple:
La fonction JavaScript suivante correspond à l'implémentation de la méthode déclarée plus haut. Elle doit être définie dans l'entité de type 'Code JavaScript' et de nom 'cus:test'.
function nms_recipient_testLog(message)
 {
   logInfo("*** " + message)
 }

2. Signature
La signature de la fonction doit inclure un argument correspondant à chaque paramètre de type 'in' ou 'inout' de la déclaration.
Cas particuliers :
  • les méthodes non statiques : la fonction doit inclure un argument supplémentaire en première position correspondant à l'entité XML passée sous forme d'objet de type 'xml' (E4X).
  • les méthodes de type "clé seule" : la fonction doit inclure un argument supplémentaire en première position correspondant à clé passée sous forme de chaîne de caractères.
3. Valeurs retournées
La fonction doit retourner une valeur pour chaque paramètre déclaré de type 'out' ou 'inout'. Cas particulier : Si la méthode est déclarée avec aucun des attributs 'statique', 'clé seule' et 'const', La première valeur retournée doit correspondre à l'entité modifiée. Il est possible de retourner un nouvel objet ou de retourner le premier paramètre modifié.
Par exemple :
function nms_recipient_setLastName(self, name)
 {
   self.@lastName = name
   return self
 }

Lorsque plusieurs valeurs doivent être retournées, celles-ci doivent être retournées sous la forme d'un tableau.
Exemple:
function nms_recipient_getKey(self)
 {
   return [self.@firstName, self.@lastName]
 }