Développement > Dictionnaire scripts > Scripts > Web services 

Cette fonction permet de générer simplement des web services SOAP à des applications extérieures à SAFE X3.

Pour publier un web service, les compétences requises sont celles d'un développeur SAFE X3.

Cette fonction gère les éléments suivants :

  • Le nom du web service est le nom de publication qui sera fourni à l'extérieur
  • Génération du traitement qui sera executé à l'appel du web service (appelé programme Wrapper WJ+nom du web service, si le nombre de champs à publier est très important le programme wrapper sera scindé en deux et il y aura un second traitement de nom WK + nom du web service)
  • Le mapping est défini dans un onglet dédié, dans lequel il est possible, avec certaines règles, de renommer les champs et les groupes, de désélectionner des champs, de préciser des options permettant de générer des contrôles de type dans le fichier XSD (dont le but est de permettre un premier niveau de validation des flux produits par des applications tierces avant entrée dans le progiciel)
  • Génération des fichiers xml d'écrivant le web service au format SAFE X3 et au format XSD

Il existe deux types de web services :

Sous-programme

Le nom du sous-programme doit être renseigné. Il doit avoir été préalablement crée dans le dictionnaire des sous-programme.

Les champs du web service sont les paramètres du sous programme. Ils sont assemblés en groupe, par défaut selon leur ordre et leur cardinalité, il est ensuite possible de modifier le regroupement dans l'onglet de mapping

Objet

Un code objet, et éventuellement un code transaction, doivent être renseignés.

Les champs du web service sont les champs des écrans de l'objet
Il est possible, mais déconseillé pour ne pas surcharger le flux envoyé, de publier les champs invisibles associés à la fenêtre de visualisation publiée.

Cas du serveur XTEND

En paramétrant une interface XTEND, le web service est généré automatiquement en appuyant sur l'icone "Générer l'accès"

Pré-requis

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre

Gestion de l'écran

En-tête

Champs

Les champs suivants sont présents dans cet onglet :

  • Nom de publication (champ PUBLI)

Identifiant du résultat de la publication

  • champ LIBW

 

  • Type (champ TYPOBJ)

Type de fonction à publier (objet ou non objet)

Fermer

 

Onglet Définition

Champs

Les champs suivants sont présents dans cet onglet :

Objet

Objet à publier.

  • Transaction (champ VARIANTE)

Choix de la transaction, pour un objet ayant des transactions.

  • champ LIBVAR

 

  • Zones invisibles (champ INVISIBLE)

Flag permettant la publication ou non des champs invisibles transmissibles.

Service

  • Script (champ PRG)

Pour une fonction non objet, on publie le traitement et sous-programme qui lui sont associé.

  • Sous-programmes (champ SUBPRG)

 

Informations

  • Publié le (champ DATPUB)

Informations générées par la publication.

  • Par (champ USERP)

 

  • Programme (champ NOMPG)

 

Fermer

 

Onglet Mapping

Présentation

L'onglet mapping permet :

  • De sélectionner les champs à publier
  • De renommer les noms de groupes et les noms de champs 
  • De réorganiser, avec certaines contraintes, les champs publiés dans de nouveaux groupes  
  • De définir des propriétés sur les champs permettant de créer des XSD plus complètes afin de permettre de valider des flux XML avant leur entrée dans le progiciel, ou avant de les soumettre à un logiciel tiers

Examinons les différentes valeurs qu'il est possible de renseigner dans cet onglet.

La colonne "Sélection" permet de sélectionner ou de sélectionner un champ du flux XML produit ou interprété par le serveur de web services. La déselection unitaire d'un champ de contrôle dans les tableaux (classiquement appelé champ numéro de ligne) est interdite.

La colonne "Groupe" permet de regrouper les champs dans des entités homogènes. Par défaut les champs sont intégrés dans des groupes :

  • selon leur ordre de définition et tant qu'ils ont la même cardinalité pour les sous programmes. On trouvera ainsi par défaut des groupes G1, G2, ..Gn
  • par bloc d'écran pour les objets, dont le nom par défaut est l'abréviation du masque d'écran suivi de "_" et du rang du bloc

Il est possible de renommer les groupes, individuellement ou pour tout le groupe existant pour les sous-programmes, pour tout le groupe pour les objets, et d'attribuer un même nom de groupe à plusieurs entités à la condition qu'elles soient contigues dans le flux produit et qu'elles soient de même cardinalité (Il n'est pas possible de regrouper un bloc liste avec un bloc tableau, ou une variable dimensionée avec une variable qui ne l'est pas).

La colonne "Niveau" est utilisée exclusivement pour produire les XSD adaptées aux modèles d'export, elle n'est pas saisissable.

La colonne "Code" est le nom de l'élément. par défaut c'est le nom du champ ou du paramètre du sous-programme. Il est possible de le renommer.

La colonne "Longueur" permet de définir (si elle n'est pas déjà alimentée par défaut) la longueur maximum du champ, et ce afin de permettre de faire un contrôle de la conformité du flux dans la XSD.

La colonne "No menu local" permet d'identifier les champs qui sont associés à des énumérations. Dans ce cas, la valeur attendue dans le progiciel est un entier correspondant à l'indice de la valeur choisie dans la liste. Si cette colonne est renseignée, la description du menu local sera renseignée dans la XSD et apparait selon une convention de nommage dans touts les langues du dossier. Il est à noter une exception pour le menu local 1 qui est traduit en type booléen.

Voici un exemple de contenu de XSD pour un champ de type menu local

-<xs:simpleType name="TYPIMP">-<xs:annotation> <xs:documentation>Local Menu 22</xs:documentation> <xs:documentation xml:lang="fr">AUS1_3~TYPIMP: Type</xs:documentation> <xs:documentation xml:lang="en">AUS1_3~TYPIMP: Type</xs:documentation> </xs:annotation>-<xs:restriction base="xs:string"> <xs:enumerationvalue="00:FRA:Non initialisé" /> <xs:enumerationvalue="01:FRA:Normal" /> <xs:enumerationvalue="02:FRA:Fax" /> <xs:enumerationvalue="03:FRA:Thermique" /> <xs:enumerationvalue="04:FRA:Couleur" /> <xs:enumerationvalue="00:ENG:Not initialized" /> <xs:enumerationvalue="01:ENG:Normal" /> <xs:enumerationvalue="02:ENG:Fax" /> <xs:enumerationvalue="03:ENG:Thermal" /> <xs:enumerationvalue="04:ENG:Colour" /> </xs:restriction> </xs:simpleType>

Exemple pour un booléen

-<xs:simpleType name="USREXT">-<xs:annotation> <xs:documentation>Local Menu 1</xs:documentation> <xs:documentation xml:lang="fr">AUS5_1~USREXT: Utilisateur externe</xs:documentation> <xs:documentation xml:lang="en">AUS5_1~USREXT: External User</xs:documentation> </xs:annotation> <xs:restrictionbase="xs:boolean" /> </xs:simpleType>

Cette méthode permet à l'application tierce de recevoir et de transmettre l'information sous forme de chaine de caractères, et le serveur de Web services traduira l'information en numérique ou en chaine en fonction des valeurs définies dans le menu local.

Les champs "Saisie mininum" , "Valeur" et "Inclue", et les 3 pendants pour la saisie maximum permettent de définir des restrictions dans la XSD pour vérifier la validité des flux. Il est ainsi possible de définir les bornes (inclues ou non) entre lesquelles la valeur doit être comprise.

Les champs "FractionDigits" et "TotalDigits" permettent, pour les champs numériques, de définir le nombre maximum de chiffres décimaux et le nombre de chiffres totaux de l'information manipulée.

Le champ "Pattern" permet de définir un modèle régulier de format (cf toute documentation sur les XSD).

Fermer

 

Champs

Les champs suivants sont présents dans cet onglet :

Tableau

  • Sélection (champ SELECT)

 

  • Groupe (champ GROUPE)

 

  • Niveau (champ NIVEAU)

 

  • Code (champ CHAMP)

 

  • Intitulé (champ INTIT)

 

  • Nom interne (champ GRPCHP)

 

  • Type paramètre (champ TYPPAR)

 

  • Longueur (champ LONG)

 

  • No menu local (champ NOLIB)

 

  • Dimension (champ DIME)

 

  • Zone obligatoire (champ OBLIG)

 

  • Type argument (champ TYPFCT)

 

  • Saisie minimum (champ AUTMIN)

 

  • Valeur (champ VALMIN)

 

  • Inclue (champ MININCLU)

 

  • Saisie maximum (champ AUTMAX)

 

  • Valeur (champ VALMAX)

 

  • Inclue (champ MAXINCLU)

 

  • FractionDigits (champ FRACTIONDI)

 

  • TotalDigits (champ TOTALDIGIT)

 

  • Pattern (champ PATTERN)

 

Fermer

 

Icône Actions

Déselectionner groupe
Déselectionner groupe

En étant positionné sur une ligne du tableau, cette action permet de désélectionner tous les champs du groupe.

Sélectionner groupe

En étant positionné sur une ligne du tableau, cette action permet de sélectionner tous les champs du groupe.

 

Fermer

 

Boutons spécifiques

Ce bouton déclenche la production :

  • Du programme wrapper WJ + nom de publication (éventuellement aussi le traitement WK + nom de publication) et sa (leur) compilation.
  • Du descriptif XML du web service, stocké dans le répertoire WEBS du répertoire X3_PUB/nom du dossier/GEN/ALL et qui a pour nom  "nom de publication".xml
  • Du descriptif de la XSD du web service, stocké dans le répertoire WEBS du répertoire X3_PUB/nom du dossier/GEN/ALL et qui a pour nom  "nom de publication".xsd

Permet de visualiser la description XML du web services dans une fenêtre browser.

Permet de visualiser la description du XSD du web services dans une fenêtre browser.

Barre de menu

Publication / Publication globale

Ce bouton permet d'enchainer la publication de tous les web services définis dans la table AWEBSERVIC.

Le compte rendu de validation est affiché dans une trace.

Publication / Récupération

Cette action est proposée une fois pour initialiser la table AWEBSERVIC à partir des web services anciennement définis uniquement sur disque.

Messages d'erreur

Il n'y a pas de message d'erreur autre que les messages d'erreur génériques.

Tables mises en oeuvre

SEEREFERTTO Reportez-vous à la documentation de Mise en oeuvre