AE API REST - Informations générales

Si vous êtes développeur ou administrateur système, vous pouvez utiliser l'API REST pour communiquer avec le système Automation Engine via une l'interface de dernière génération et indépendante en termes de technologie.

Cette rubrique contient les sujets suivants :

Présentation

L'API REST AE propose une interface pour les applications tierces permettant d'interagir avec Automation Engine. L'API REST AE permet également à l'utilisateur de cibler Automation Engine non seulement depuis Java, mais aussi depuis de nombreux langages de programmation.

Les requêtes et réponses REST contiennent des données structurées JSON :

Les propriétés optionnelles dont la valeur est nulle peuvent être enlevées de la charge utile des réponses.

L'API REST AE prend en charge les protocoles HTTP et HTTPS (recommandé). Le protocole HTTPS peut être défini avec le paramètre sslEnabled dans le fichier de configuration Automation Engine (ucsrv.ini). Pour plus d'informations, voir Configuration HTTPS/SSL pour l'API REST AE.

La version actuelle de l'API REST AE est v1. Cette information se répercutant sur l'URI, elle est importante lorsque vous accédez à l'interface de votre API REST Automation Engine.

L'API REST AE peut être installée plusieurs fois. L'installation peut se faire soit avec des numéros de ports différents sur un nœud, soit sur différents nœuds avec le même numéro de port.

Remarques :

API REST AE et ILM

Lors du fonctionnement quotidien d'un système Automation Engine, de grandes quantités de données de rapports, statistiques et historiques s'accumulent. Le partitionnement de la base de données avec ILM constitue une méthode efficace pour gérer cela et conserver la version des objets ainsi que les données des objets supprimés. Les actions ILM requièrent de désactiver des parties des tables de la base de données Automation Engine; par conséquent, aucune action sur la base de données ne doit avoir lieu lorsque vous travaillez avec ILM.

Important ! Le service web REST AE détecte automatiquement si des actions ILM sont en cours et, si tel est le cas, bloque certaines requêtes REST. Dans ce cas, un message d'erreur est renvoyé, signalant que l'API REST est momentanément indisponible en raison d'actions ILM.

Localisation

Les messages de l'API REST sont par défaut en anglais. L'API REST AE ne prend aucune autre langue en charge.

Configurer plusieurs processus de l'API REST

L'installation de JCP est déterminante pour l'API REST AE et la recherche d'objet avancée. Vous pouvez installer un seul JCP. Dans ce cas, toutes les requêtes REST sont envoyées vers cette unique instance de l'API RESTAE et aucune API REST n'est disponible en cas d'arrêt du JCP.

Vous pouvez également configurer un système avec plusieurs JCP. Dans ce cas, deux JCP sont utilisés dans un cluster mais un seul est disponible à la fois.

Important ! En présence de plusieurs JCP, il est impératif que chaque JCP utilise son propre fichier de configuration Automation Engine (ucsrv.ini). Si un seul fichier INI est utilisé pour plusieurs JCP, le premier se connecte avec succès, tandis que les autres s'arrêtent lors de la tentative d'enregistrement du même port REST, si les deux sont exécutés sur le même nœud. Un message d'erreur expliquant le motif de l'arrêt est consigné dans le fichier journal du JCP.

Configurer un système avec plusieurs JCP peut s'avérer avantageux pour équilibrer et obtenir des fonctionnalités de basculement, car les requêtes REST ne sont envoyées et distribuées qu'aux JCP disponibles.

Diagramme de configuration d'un proxy avec des JCP en cluster.

Pour utiliser cette configuration, il faut installer un JCP sur chaque nœud. Port1 et port2 peuvent avoir le même numéro (par exemple 8088, la valeur par défaut dans le fichier de configuration) car les services Web JCP/REST sont exécutés sur des hôtes différents (host1 et host2). Host3:port3 doit être disponible au public en tant que point de contact unique pour toutes les requêtes d'API REST AE. Host1:port1 et host2:port2 ne doivent être connus que par le proxy HTTP / HTTPS.

Si une adresse IP virtuelle est utilisée, les deux JCP peuvent être atteints via la même adresse IP, ce qui signifie que les points terminaux ont la même URI de base : http(s)://{host}:{port}/AE/api/v1/{client}/....

Le client REST ou un proxy HTTP / HTTPS envoie périodiquement une requête /ping pour vérifier la disponibilité des JCP. Selon le résultat, le proxy HTTP / HTTPS connaît les JCP disponibles à ce moment-là.

Le client REST ou HTTP / HTTPS décide ensuite où envoyer les requêtes REST, en fonction de la stratégie de sélection du proxy. Lorsque le client REST envoie les requêtes au proxy HTTP / HTTPS (host3:port3), le proxy les distribue automatiquement à un service web JCP/REST.

Requêtes de vérification de santé

L'API REST AE propose deux différentes requêtes de vérification de santé :

Authentification

L'API REST AE prend en charge l'authentification de base. Les informations relatives à l'utilisateur, au département et au mot de passe font partie de l'en-tête HTTP(S) et sont donc utilisées pour l'authentification de base. Automation Engine décide si une requête dans le contexte utilisateur est ou non autorisée et y répond en conséquence.

L'API REST AE ne prend pas en charge le chiffrement du mot de passe pour le mot de passe de la requête REST. Il est recommandé d'utiliser le protocole HTTPS pour sécuriser la transmission de ces informations.

Autorisations

Un système efficace et sécurisé pour protéger l'accès aux données est un élément clé de notre concept de sécurité. La sécurité au niveau des données peut être aussi étendue que l'accès de l'administrateur à un rôle ou aussi restreinte que l'accès en lecture à un seul job d'un répertoire précis.

L'API REST AE requiert également certaines autorisations pour effectuer différentes opérations et vérifie si elles sont en place au moment de les effectuer.

Pour plus d'informations, voir Accorder des autorisations Automation Engine.

Générer à l'exécution

Pour éviter l'expiration de délai des requêtes, l'objet à exécuter doit avoir défini l'attribut Générer la tâche à l'exécution. Lors de l'exécution d'un objet, le système vérifie si cet attribut a été défini en conséquence. S'il n'a pas été défini, l'exécution ne démarre pas.

En définissant cet attribut, le RunID est immédiatement renvoyé, de sorte que la réponse REST vient immédiatement après la requête.

Si cet attribut est défini par Générer la tâche à l'activation, la longueur du temps de traitement peut empêcher une réponse REST immédiate et entraîner une expiration du délai.

Remarque : Lors de la reprise d'une exécution, l'attribut Générer la tâche à l'exécution n'est pas défini.

Interrogation de l'API REST AE

Vous pouvez interroger le serveur pour vérifier le statut d'une séquence requête / réponse REST lorsque le résultat souhaité n'est pas encore disponible. Ainsi, vous pouvez interroger le serveur après l'exécution d'un objet et obtenir le RunID pour vérifier si l'exécution est terminée.

L'exemple suivant montre comment interroger le statut d'exécution via l'API REST AE :

Entrée via PromptSet

Les variables PromptSet peuvent être transmises via la requête de l'API REST AE à l'exécution, à condition que les objets devant être exécutés aient au moins un promptset affecté.

Exemple de contenu de requête REST :

Variable PromptSet Champ Type Recommandations
"&TEXT1#" Champ texte n/d
"&NUMBER1#" Champ numérique n/d
"&CHECKBOX_ARRAY#" Champ Case à cocher* Array=true
&CHECKBOX_STRING# Champ Case à cocher Array = false, separator = ";"
"&MULTILINE1#" Champ de texte multilignes Attribut "Multilignes" coché, \n pour sauts de lignes

* Il est recommandé de définir un champ Case à cocher en tant que Tableau ("Array") lorsqu'il sert à transmettre des valeurs via l'API REST AE.

Remarques :

Filtre de la liste des exécutions

La requête GET ../v1/{client}/executions renvoie une liste de toutes les exécutions. Vous pouvez ajouter des paramètres à la requête dans l'URI pour les filtrer.

Remarque : Interface Web Automic dispose de différents paramètres pour les vues liste, qui sont importants lorsque vous appliquez des filtres. La vue en arborescence qui, en présence de filtres, n'affecte que les tâches parents, et la vue liste qui affecte les deux (les tâches parents et enfants). L'API REST AE ne prend en charge que la vue liste.

Vous pouvez appliquer des filtres pour les paramètres d'exécution suivants :

Vous pouvez combiner les paramètres d'une requête selon les besoins pour générer des filtres simples ou complexes. Ainsi, vous pouvez :

Pagination pour les enfants d'exécutions et les listes d'exécutions

La pagination peut s'avérer utile lorsqu'une requête d'API REST AE renvoie plusieurs résultats, car l'ensemble des résultats, susceptible de changer rapidement et souvent, est divisé en morceaux (pages) par requête / réponse. Ainsi, si vous envoyez une requête pour obtenir tous les enfants d'une exécution, vous risquez d'obtenir des milliers d'enregistrements. L'API REST AE vous permet d'utiliser la pagination pour faciliter la gestion des résultats.

Paramètres de limite

L'API REST AE vous permet de définir les paramètres de limite suivants :

Structure URI avec paramètres de pagination

L'URI contenant les paramètres de pagination se compose des éléments suivants :

http://{host}:{port}/AE/api/v1/{client}/executions/{runid}/children?max_results={number}&start_at_run_id={runid}

Par exemple :

http://192.168.40.116:8088/AE/api/v1/100/executions/1003003/children?max_results=10&start_at_run_id=100301

Dans cet exemple, la requête d'exécution parent demandée 1003003 a 25 requêtes d'exécutions enfants. La réponse paginée est répartie comme suit :

Page Requête URI Charge utile de la réponse Commentaire
1 ../executions/1003003/children?max_results=10

Liste des 10 premières exécutions

RunID de la dernière exécution listée =1003045

"hasmore"=true(*)

"total"=25(**)

En l'absence du paramètre start_at_run_id, c'est la première page qui est renvoyée.
2 ../executions/1003003/children?max_results=10&start_at_run_id=1003045

Liste des 10 exécutions suivantes

RunID de la première exécution listée <1003045

RunID de la dernière exécution listée =1003034

"hasmore"=true(*)

"total"=25(**)

Le RunID de la première exécution de la page 2 est inférieur à celui de la dernière exécution page 1, il n'y a donc pas de listing dupliqué.
3 ../executions/1003003/children?max_results=10&start_at_run_id=1003034

Liste des 5 prochaines exécutions

RunID de la première exécution listée <1003034

RunID de la dernière exécution listée =1003028

"hasmore"=false(*)

"total"=25(**)

"hasmore"=false indique que c'est la dernière page.

Remarques :

Pagination des rapports

La pagination est également utile lorsqu'un rapport est plutôt volumineux et que son contenu est fractionné en pages de rapport. L'API REST AE effectue la pagination de ces pages de rapport.

Paramètres de limite

Important ! La requête de l'API REST AE ne peut porter que sur le contenu des rapports disponibles dans la base de données AE. Un rapport de job est enregistré dans la base de données si l'option Enregistrer dans : base de données a été sélectionnée dans la section Rapport du job de la page de définition du job. Cette option est sélectionnée par défaut.

Trace

Toutes les activités REST peuvent être tracées à des fins d'analyse. Pour ce faire, sélectionnez un JCP puis faites un clic droit pour sélectionner Options avancées. Cela ouvre une boîte de dialogue où vous pouvez spécifier les indicateurs de trace.

L'indicateur de trace peut également être défini dans le fichier (INI) de configuration Automation Engine. Pour ce faire définissez la clé JCL dans la section TRACE du fichier INI. Les valeurs importantes pour Agent RA Web Service REST sont :

Configuration du serveur Web

Le service Web REST Automation Engine utilise un serveur Web utilisant principalement une configuration prédéfinie. Si vous êtes administrateur système , vous pouvez personnaliser les paramètres répertoriés ici dans la section [REST] du fichier de configuration (ucsrv.ini) :

CORS/SOP

La politique de même origine (SOP = Same Origin Policy) empêche les clients Web d'effectuer des demandes de différentes origines. Vous pouvez contourner cette politique en utilisant le partage de ressource de différentes origines (CORS = Cross-Origin Resource Sharing), afin d'autoriser les origines explicitement.

Par exemple :

Diagramme de configuration du serveur Web.

L'hôte 3 demande un document Web d'origine 1 (Hôte 1, serveur Web) à http://host1:80 (port http par défaut). L'hôte 3 envoie ensuite une demande d'information de l'origine 2 (Hôte 2, AE) à http://host2:8080 (port de service Web REST AE par défaut). La plupart des navigateurs Web usuels vérifient si les demandes inter-domaines sont ou non autorisées. Si non, la demande vers la deuxième origine http://host2:8080 n'est pas autorisée.

Afin d'autoriser ce type de requêtes d'origine croisées, le service Web REST AE doit explicitement demander au navigateur Web d'autoriser la requête. Vous pouvez le définir via le paramètre CORS de la section [REST] du fichier de configuration Automation Engine (ucsrv.ini) :

Si le serveur Web est exécuté sur le même hôte local que le client Web ou le navigateur (Host1 = Host3), vous devez implémenter un simple client REST basé Web, en définissant le paramètre corsAccessControlAllowOrigin à http://localhost:80.

Compression

Un client REST peut demander que la charge utile de réponse soit compressée, afin d'améliorer les performances. Si le service Web REST prend en charge la compression, il renvoie la charge utile au format gzip.

La prise en charge de la compression est désactivée par défaut. Vous pouvez l'activer via le paramètre gzipSupportEnabled de la section [REST] du fichier de configuration Automation Engine (ucsrv.ini).

Thread Pooling

Le serveur Web utilisé par le service Web JCP/REST traite les requêtes à l'aide de threads. Plus on utilise de threads, plus on peut traiter de requêtes REST en parallèle.

Un thread pool conserve plusieurs threads en attente de traitement des requêtes REST. Plus il y a de requêtes entrantes, plus le serveur Web libère de threads automatiquement dans la plage définie dans minPoolSize >= N <= maxPoolSize. Lorsque certains des N threads restent inutilisés pendant un laps de temps supérieur au délai d'expiration défini dans le paramètre idleTimeout, ils sont supprimés afin de libérer des ressources dans le processus JCP.

Voir aussi :