Passer au contenu principal
Adaptive Planning
Dernière mise à jour : 2023-06-23
Concept : conception

Concept : conception

L'API SDCP est conçue pour permettre à l'opérateur d'intégration de se connecter à la source de données, de créer des objets dans la source de données, d'analyser le langage XML, de convertir des dates et d'utiliser régulièrement des éléments lors de la création d'une source de données.

Espaces de noms

Le moteur JavaScript permet d'accéder aux
Adaptive Planning
Intégration via les espaces de noms 'adaptive' ou 'ai' (
Adaptive Planning
) espace de nom (alias). Son fonctionnement est identique aux bibliothèques JavaScript populaires, telles que jQuery (https://jquery.com/).
// JavaScript short namespace example. ai.log.logError('this is a log'); // JavaScript long namespace example. adaptive.log.logError('this is a log');
Sous l'espace de noms '
ai
' racine, plusieurs fonctions de base sont exposées pour que le code JavaScript puisse interagir avec Internet et à l'.
Adaptive Planning
Fonctionnalités Discovery/Integration. Ces API JavaScript publiques sont modélisées en utilisant les API Node.js (https://nodejs.org/) comme guide.

Fonctions

Les fonctions obtiennent et définissent des données pour assurer la cohérence de l'API, fournir une encapsulation et autoriser explicitement les accesseurs en lecture ("getters") et les accesseurs en écriture ("setters"). Les fonctions permettent aussi d'encapsuler des objets C# afin d'exposer uniquement la fonctionnalité du langage JavaScript et d'éviter de confondre inutilement JavaScript/C# pour améliorer les performances. Les "getters" incluent un préfixe "get" et les "setters" un préfixe "set".
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Contexte des fonctions

Chaque fonction qu'appelle une SDCP utilise un objet Contexte. Le contexte contient des objets en lecture seule pour faciliter le traitement.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
Le contexte est composé d'objets transférés depuis C#. Pour améliorer les performances, nous évitons d'exposer les objets C# dans JavaScript en encapsulant chacun d'entre eux dans un objet JavaScript. Nous pouvons alors gérer les communications entre JavaScript et C#. Par exemple, pour connaître le contexte des tables, l'objet C# est renvoyé encapsulé dans un objet JavaScript. En la présence d'une hiérarchie d'objets, nous encapsulons chaque niveau dans un objet JavaScript. Pour connaître les colonnes composant une table, nous renvoyons une liste d'objets JavaScript encapsulés.

Restrictions

Les restrictions suivantes s'appliquent à une session de traitement des scripts d'une SDCP en cours.
Paramètre
Description
Valeur par défaut
Paramètre AppSetting configurable ?
Paramètre Tenant configurable ?
Mégaoctets de tas max
Quantité de RAM que le moteur V8 peut consommer.
800
Oui
Oui
Temps limite processeur
Durée pendant laquelle le moteur V8 peut utiliser les ressources du processeur.
10 minutes
Oui
Oui
Limite de durée d'exécution
Durée pendant laquelle le moteur V8 peut s'exécuter, qu'il utilise activement ou non les ressources du processeur.
60 minutes
Oui
Oui
Délai entre les appels réseau
1 seconde
Oui
Oui
Limite de journaux par seconde
Nombre maximum de journaux qu'un script peut créer par seconde.
5
Oui
Oui
Limite de journaux par heure
Nombre maximum de journaux qu'un script peut créer par heure.
1000
Oui
Oui
Limite d'utilisation du réseau en mégaoctets
Nombre maximum de mégaoctets qu'un script peut envoyer et recevoir via le réseau.
5 gigaoctets
Oui
Oui
Délai en millisecondes entre deux requêtes asynchrones du service de script
Sert à accélérer le trafic entre le service de tâches et le processus d'un exécuteur de scripts. Si le processus de l'exécuteur de scripts peut répondre aux demandes du service de tâches, alors le délai d'attente chute à 0 milliseconde.
200 millisecondes
Non
Non
Nombre de pages de résultats maximum du script pour chaque demande
Nombre de pages de données que le service de tâche peut interroger dans le référentiel d'un exécuteur de scripts.
50
Non
Non
Taille maximale d'une page
Nombre de lignes de données que le service de tâches va interroger dans chaque page de données
10 000
Oui
Oui
Les restrictions ci-dessous s'appliquent au gestionnaire de pools de scripts SDCP.
Paramètre
Description
Valeur par défaut
Paramètre AppSetting configurable ?
Paramètre Tenant configurable ?
Taille maximale du pool de scripts
Nombre maximum de processus de scripts en cours d'exécution simultanée.
100
Oui
Non
Taille minimale du pool de scripts
Nombre minimum de processus de scripts en cours d'exécution à un moment donné (permet de tester les processus de l'exécuteur de scripts).
0
Oui
Non
Expiration du délai d'attente du pool de scripts
Durée maximale de mise en attente de la demande d'un processus de l'exécuteur de scripts.
180 secondes
Oui
Non
Taille maximale de la file d'attente du pool de scripts
Nombre maximum de demandes en attente pour un processus de l'exécuteur de scripts.
1000
Non
Non

Autres restrictions :

  • Sans utiliser la méthode ai.https.sax.parser dans votre script, la taille d'un fichier XML est limitée pour son analyse. La limite de taille supérieure est inconnue mais, à titre de référence, il est possible d'analyser un fichier de 10 Mo avec une taille de tas de 100 Mo. Nous recommandons d'utiliser ai.https.sax.parser pour les fichiers de grande taille.
  • Les scripts ne peuvent pas accéder aux IP dans
    Adaptive Planning
    réseau.
  • Le protocole HTTP n'est pas pris en charge ; seul le protocole HTTPS est pris en charge.

Problèmes connus

  • Lors de l'exécution de la fonction importData/importStructure, une source de données va appeler testConnection. Dans une SDCP, cela correspond à deux processus distincts de l'exécuteur de scripts. Il est possible que le premier processus ait été créé pour exécuter testConnection. Le second processus servant à exécuter importData/importStructure peut être placé en file d'attente dans le Gestionnaire de viviers et arriver à expiration, pour échouer au final.
  • Les noms des paramètres flexibles apparentés peuvent être identiques. Par conséquent, dans les scripts accédant à un paramètre via getSetting(displayName), une seule instance sera renvoyée, sans garantir laquelle. Les utilisateurs ne doivent pas être autorisés à créer des paramètres flexibles apparentés avec des noms identiques.