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 dansAdaptive Planningré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.