Manuel d'intégration des applications > Service Web Internal > Utilisation du service Web

Utilisation du service Web

Le service Web Internal constitue l'élément de jonction entre le Client Web et le système AE. Le client Web exécute les opérations du service Web. Ce dernier se sert d'un Utilisateur AE pour se connecter au système AE et exécuter les opérations. Le résultat est ensuite envoyé au Client Web.

Il existe deux méthodes pour accéder au système AE via le service Web.

Vous pouvez utiliser le langage de programmation de votre choix pour créer le Client Web. Les exemples ci-dessous sont écrits dans le langage Java.

Méthode 1 : Utilisateur par défaut

Indiquez dans l'interface Web de configuration un Utilisateur AE que vous voulez utiliser pour accéder au système AE. Le service Web se sert toujours de l'Utilisateur par défaut lorsque le Client Web ne propose aucun ID de session (voir la seconde méthode).

Un port de type "Uc4PortType" est d'abord utilisé pour communiquer avec le service Web :

Uc4PortType port = new UC4Service().getUc4Port();

Vous pouvez exécuter les opérations du service Web par l'intermédiaire de ce port et, par exemple, obtenir une liste de tous les Agents du Client :

List<AgentListItem> list = port.getAgentList();

Méthode 2 : session avec un Utilisateur quelconque

L'Utilisateur par défaut est limité à un Client. Si vous souhaitez accéder à plusieurs Clients ou utiliser plusieurs Utilisateurs pour vous connecter, vous devez créer une session.

Un port de type "Uc4PortType" est à nouveau utilisé pour communiquer avec le service Web :

Uc4PortType port = new UC4Service().getUc4Port();

Connectez-vous ensuite à l'aide de l'opération "logon". L'Utilisateur AE est transmis à l'aide du paramètre. Vous obtenez comme code retour un ID de session que vous pouvez définir dans l'en-tête HTTP. Il est ainsi automatiquement indiqué chaque fois qu'une opération est exécutée.

try{
String sessionID = port.logon(100, "MEIER", "AE", "mot de passe rigoureusement confidentiel", (byte) 'D');

Map<String, List<String>> requestHeaders = (Map<String, List<String>>) context.get(MessageContext.HTTP_REQUEST_HEADERS);

if(requestHeaders == null) {
requestHeaders = new HashMap<String, List<String>>();
context.put(MessageContext.HTTP_REQUEST_HEADERS, requestHeaders);
}

requestHeaders.put("id", Arrays.asList(sessionID));

} catch(UC4WSException e){
System.out.println("ERROR: " + e.toString());
}

Vous pouvez exécuter les opérations du service Web via le port et, par exemple, lire les informations de la base de données à partir de la Supervision système :

DatabaseInformation dbInfos = port.getDatabaseInfo();
String dbName = dbInfos.getDbName();

Terminez la session à l'aide de l'opération "logoff".

port.logoff(sessionID);

Le service Web ferme automatiquement les connexions qui ne sont pas utilisées sur une période donnée. Vous définissez la longueur de ce délai dans l'interface Web de configuration.

Remplissage de masques :READ

Le service Web contient, entre autres, une opération intitulée "executeObject" avec laquelle vous pouvez exécuter des objets. Un des paramètres vous permet de transmettre des valeurs pour des Variables de script dans des masques :READ. Voyons l'exemple suivant :

Le Workflow MAWI.TAG contient le masque :READ suivant :

:BEGINREAD "paramètre d'impression"
:READ &UEBERSCHRIFT#,"00","Veuillez indiquer le remplacement"
:READ &ANZAHL#,"0-5","Veuillez indiquer un nombre",,"N"
:ENDREAD

L'affectation de la valeur à la Variable de script ne s'effectue pas via le nom de la Variable, mais via la légende du champ de saisie. Examinons pour cela l'extrait suivant. Une liste devant contenir les valeurs est d'abord créée. La valeur de la Variable de script &UEBERSCHRIFT# est ensuite définie. Votre légende s'intitule "Veuillez indiquer le remplacement". Elle doit contenir la valeur "règlement final". Cela s'applique également à la Variable de script &NOMBRE#. Enfin, l'opération "executeObject" est exécutée et la liste des valeurs est transmise.

List<InputParameter> read = new ArrayList<InputParameter>();

InputParameter p1 = new InputParameter();
p1.setName("Veuillez indiquer le remplacement");
p1.setValue("Règlement final");
read.add(p1);

InputParameter p2 = new InputParameter();
p2.setName("Veuillez indiquer un nombre");
p2.setValue(2);
read.add(p2);

int runID = port.executeObject("MAWI.TAG", "", read, null, false);

Même si l'objet comporte plusieurs masques :READ, vous n'avez besoin que d'une seule liste de valeurs.

Dans la mesure où l'affectation de la valeur s'effectue via la légende, cette dernière ne doit être utilisée qu'une seule fois.

Pour des raisons de performance, nous vous conseillons d'utiliser un seul gros masque :READ plutôt que plusieurs petits.

Traitement des erreurs

Trois types d'erreurs peuvent se produire :

  1. Le service Web ne peut établir aucune connexion avec l'Automation Engine (par exemple, le processus de communication n'est pas joignable, les données de connexion ne sont pas valables, etc.).
  2. Une erreur de durée d'exécution est survenue lors de l'exécution de l'opération (par exemple, l'objet à exécuter n'existe pas).
  3. Le message SOAP que le Client Web envoie au service Web n'est pas valable.

Le service Web met à disposition une exception intitulée UC4WSException. Elle contient un champ d'informations qui vous permet d'accéder au numéro et au texte du message. Vous pouvez également obtenir ainsi le type de message. à savoir "CONNECT" lorsque l'erreur se produit lors de l'établissement de la connexion ou "REQUEST" lorsque l'opération n'est pas correctement exécutée.

try{

String priority = port.getHighestNotificationPriority();

} catch(UC4WSException e){
System.out.println("numéro de l'erreur : " + e.getFaultInfo().getId();
System.out.println("Fehlertext: " + e.getFaultInfo().getMessage);
}

La langue dans laquelle le texte du message est transmis au Client Web dépend du moment de l'erreur :

 

Rubriques connexes :

Opérations du service Web