Mode web : les WebServices (ou Services Web)

Généralités

Introduction

Le WebService (ou Service Web) permet à des applications de dialoguer à distance via Internet et indépendamment des plates-formes et des langages sur lesquels ces applications reposent (interopérabilité).

Cette unité d’application logique fournit des données et des services à d’autres applications Web. Ces applications communiquent entre elles grâce à des langages standards et des normes d’échange (XML, WSDL, Soap et UDDI).

Véritable standard en terme d'intégration et d'échanges B2B, le WebService est l’un des principaux composants de l’offre ACE RETAIL .

Le principe de base est simple : le WebService utilise une chaîne de caractères en entrée et restitue une chaîne de caractères en retour. Ces chaînes de caractères sont convertibles au format XML.

Principes

La publication d’un acte de gestion d’ACE sous forme de WebService n’impacte pas le comportement de cet acte de gestion.

ACE vous propose plusieurs WebServices :

  • sWSGCEService (API GCEServiceassimilate ), entièrement dédié à l’intégration de données (les événements notamment),
  • sWSCRUDManager , un service qui permet d’échanger avec notre base de données, en effectuant des actes aussi basiques que la création d’une donnée, sa consultation, sa modification ou sa suppression,
  • sWSGestionAnalytique qui, dans le module Finance, permet de s’interfacer avec Excel,
  • sBusinessViewRendererrenderXml pour générer le flux de présentation XML d’une businessView.

Aspects techniques

Accès

Les WebServices ACE sont des WebServices standards activés via SOAP, une norme d'échange de messages au format XML. Les paramètres d’entrée sont d’ailleurs organisés au format XML.

Le serveur de webservice se présente sous la forme d'un web module.

Le déploiement de WebService est limité uniquement aux serveurs d'application Oracle (9.0.4 10g).

Installation

Dans le web module contenant les webservices, la Servlet "ServletControl" doit être paramétrée afin de se charger automatiquement au démarrage. En effet, elle initialise les variables d'environnements pour l'ensemble des API .

Par contre, on ne publie pas la "ServletControl" dans le web module (fichier web.xml).

<servlet>

<servlet-name>ServletControl</servlet-name>

<display-name>ServletControl</display-name>

<servlet-class>fr.ACE.technicalframework.application.ServletControl</servlet-class>

<load-on-startup>1</load-on-startup> <!-- This is requiered for webservices. Don't remove. -->

<security-role-ref>

<description>root</description>

<role-name>root</role-name>

<role-link>super-user</role-link>

</security-role-ref>

</servlet>

Fichier de configuration

Une section "webservice_def" du fichier de configuration (dans l'élément "application") vous permet de personnaliser vos WebServices.

Pour en savoir plus, consultez la documentation de référence « Web : le fichier de configuration ».

Le nœud "webservice_def" contient les valeurs par défaut.

Les nœuds "webservice" représentent la définition d'un webservice particulier :

Nom de l'attribut Description
name Clé primaire d'accès à la définition d'un webservice.
entity Entité (voir documentation Multi-entités)
target Cible (ex: VCLI, GART,…)
user Nom de l'utilisateur qui exécute le service.
language Langue des messages d'erreur.

Exemple :

Cet exemple définit le webservice "GestionEvenement"

<webservice_def entity="1" target="MENU" user="DECONNINCK" language="FRA">

<webservice name="GestionEvenement" target="VCDT"/>

<webservice name="LoginManager"/>

</webservice_def>

Les WebServices proposés par ACE

GCEService (WebService d’intégration de données)

La structure du flux d’entrée de ce service d’intégration est spécifiée par un schéma XML commenté.

Pour en savoir plus, consultez la documentation de référence « GCEServiceassimilate ».

L’utilisation de ce service s’adresse à un public initié aux concepts de base d’ACE : les événements, les flux d’événements, les tiers, les produits,…Comme il est d’abord utilisé par des intégrateurs de produit, toutes les parties visibles, et notamment la description du flux, sont rédigées en anglais.

CRUDManager (WebService de mise à jour des données)

Ce WebService permet d’exécuter des transactions de base (CRUD) dans la base ACE (tables) via une couche fonctionnelle (objets métiers).

  • sC pour Create (création),
  • sR pour Retrieve (consultation),
  • sU pour Update (modification),
  • sD pour Delete (suppression).

Il suffit d’utiliser en paramètre d’entrée le nom de la table concernée et les champs-clés de votre action (CRUD).

Pour en savoir plus sur ce WebService et la modélisation de nos données, consultez les documentations de référence : « WebService WSCRUDManager », « Les Structures web ACE » et « Les tables ACE ».

GestionAnalytique (WebService de répartition analytique)

Pour en savoir plus, consultez la documentation de référence « Répartition analytique des postes de commandes en provenance de la place de marché QUADREM »

Structure générale d'entree/sortie d'un WebService

Flux XML en entrée

Les éléments en gras sont invariables.

Les éléments "egx_ws" et "bean_in" sont obligatoires.

L'élément "ctx" est optionnel. Quand il est présent, il est prioritaire sur les paramètres fixés par la définition du webservice dans la configuration.

La partie contenue dans l'élément "bean_in" est complètement variable et dépend de l'API qui est invoquée.

<egx_ws>

<ctx language="ENG" user="scott" password="tiger" target="CLI" entity="1"/>

<bean_in>

<fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementIn>

<tiers>

<typtie>CLI</typtie>

<sigtie>CLI001</sigtie>

</tiers>

</fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementIn>

</bean_in >

</egx_ws>

XML en sortie

Les éléments en gras sont invariables.

Les éléments "egx_ws" et "bean_out" sont obligatoires.

L'élément "ctx" n'existe pas.

La partie contenue dans l'élément "bean_out" est complètement variable et dépend de l'API qui est invoquée.

Sans erreur

<egx_ws>

<bean_out>

<fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementOut>

<codsoc>6601</codsoc>

<evenement>

<achvte>V</achvte>

<typeve>CDE</typeve>

<numeve>245</numeve>

</evenement>

<tiers>

<typtie>CLI</typtie>

<sigtie>CLI002</sigtie>

</tiers>

<datexp>20030721</datexp>

<datliv>20030723</datliv>

</fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementOut>

</bean_out >

</egx_ws>

Avec erreur

<egx_ws>

<bean_out>

<fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementOut>

<codsoc>1</codsoc>

<tiers>

<sigtie>BRCLI101</sigtie>

<typtie>CLI</typtie>

</tiers>

<evenement>

<achvte>V</achvte>

<typeve>CDT</typeve>

<numeve>999</numeve>

</evenement>

<error>

<code>ELT_EXISDE</code>

<paramList>EVE</paramList>

<paramList>V/CDT/999</paramList>

<affi>false</affi>

<val>false</val>

<trace>false</trace>

<label>Element déjà existant ! EVE V/CDT/999</label>

</error>

</fr.generix.metier.bc4j.evenement.common.GestionEvenementcreerEvenementOut>

</bean_out >

</egx_ws>