Skip to main content
Adaptive Planning
Laatst bijgewerkt: 2023-06-23
Concept: ontwerp

Concept: ontwerp

De CCDS-API is ontworpen om de integratiegebruiker te helpen bij het verbinden met de gegevensbron, het maken van objecten in de gegevensbron, het parseren van XML, het converteren van datums en het regelmatig gebruiken van items bij het maken van een gegevensbron.

Naamruimten

De JavaScript-engine biedt toegang tot ingebouwde
Adaptive Planning
Integratie via de 'adaptive' naamruimten of 'ai' (
Adaptive Planning
) naamruimte (alias). Dit is vergelijkbaar met populaire JavaScript-bibliotheken zoals 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');
Onder de hoofdnaamruimte
ai
worden een aantal kernfuncties weergegeven zodat JavaScript kan communiceren met internet en
Adaptive Planning
Discovery-/integratiefuncties. Deze openbare JavaScript-API's zijn gemodelleerd met behulp van Node.js-API's (https://nodejs.org/) als voorbeeld.

Functies

Functies halen gegevens op en stellen deze in om de API consistent te maken, en inkapseling te bieden en setters en getters expliciet toe te staan. Functies bieden ook inkapseling van C#-objecten om alleen JavaScript-taalfunctionaliteit te tonen en onnodige overschrijding van de JavaScript-/C#-grens te voorkomen voor betere prestaties. Getters worden voorafgegaan door get en setters worden voorafgegaan door set.
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Functiecontext

Elke functie die door een CCDS wordt aangeroepen, heeft een contextobject. De context bevat alleen-lezen objecten om te helpen bij de verwerking.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
De context bestaat uit objecten die komen uit C#. Voor betere prestaties vermijden we dat C#-objecten in JavaScript worden weergegeven door elk object in een JavaScript-object in te kapselen. Zo kan de communicatie over de JavaScript-/C#-grens heen worden beheerd. Als u bijvoorbeeld de context voor tabellen opvraagt, wordt het C#-object verpakt in een JavaScript-object geretourneerd. Wanneer er een objecthiërarchie is, verpakken we elk niveau in een JavaScript-object. Wanneer u naar de kolommen in een tabel vraagt, retourneren we een lijst met objecten die zijn verpakt in JavaScript.

Beperkingen

De onderstaande beperkingen zijn van toepassing op een actieve CCDS-scriptprocessessie.
Instelling
Omschrijving
Standaardwaarde
Configureerbare app-instelling?
Configureerbare tenantinstelling?
Max. heap-megabytes
Hoeveelheid RAM die de V8-engine kan verbruiken.
800
Ja
Ja
CPU-tijdslimiet
Hoeveelheid tijd dat de V8-engine CPU-resources kan gebruiken.
10 minuten
Ja
Ja
Limiet uitvoeringsduur
Hoeveelheid tijd dat de V8-engine kan worden uitgevoerd, ongeacht of deze actief CPU-resources gebruikt.
60 minuten
Ja
Ja
Vertraging tussen internetoproepen
1 seconde
Ja
Ja
Logboeklimiet per seconde
Maximum aantal logboeken dat per seconde op basis van een script kan worden gemaakt.
5
Ja
Ja
Logboeklimiet per uur
Maximum aantal logboeken dat per uur op basis van een script kan worden gemaakt.
1000
Ja
Ja
Netwerkgebruikslimiet in megabyte
Maximum aantal megabytes dat een script via het netwerk kan verzenden en ontvangen.
5 gigabyte
Ja
Ja
Milliseconden tussen asynchrone scriptserviceaanvragen
Wordt gebruikt om het verkeer tussen de taakservice en een scriptrunnerproces te beperken. Als het scriptrunnerproces de vraag van de taakservice kan bijhouden, wordt de wachttijd teruggebracht tot 0 milliseconden.
200 milliseconden
Nee
Nee
Max. pagina's met scriptresultaten per aanvraag
Het aantal pagina's met gegevens dat de taakservice kan opvragen bij de opslagplaats van een scriptrunner.
50
Nee
Nee
Max. paginagrootte
Aantal rijen met gegevens dat door de taakservice wordt opgevraagd op elke pagina met gegevens
10000
Ja
Ja
De onderstaande limieten zijn van toepassing op de CCDS-scriptpoolmanager.
Instelling
Omschrijving
Standaardwaarde
Configureerbare app-instelling?
Configureerbare tenantinstelling?
Max. grootte van scriptpool
Maximum aantal gelijktijdig uitgevoerde scriptprocessen.
100
Ja
Nee
Minimale grootte van scriptpool
Minimum aantal scriptprocessen dat tegelijkertijd moet worden uitgevoerd (gebruikt voor pre-warm van scriptrunnerprocessen).
0
Ja
Nee
Wacht-time-out scriptpool
Maximumtijd dat een aanvraag voor een scriptrunnerproces in de wachtrij kan worden geplaatst.
180 seconden
Ja
Nee
Maximale wachtrijgrootte scriptpool
Maximum aantal wachtende aanvragen voor een scriptrunnerproces.
1000
Nee
Nee

Andere limieten:

  • Als u de methode ai.https.sax.parser niet in uw script gebruikt, geldt er een limiet voor de grootte van een XML-bestand voor het parseren. De maximale grootte is niet bekend, maar ter referentie: het is mogelijk om een bestand van 10 MB te parseren met een heapgrootte van 100 MB. We raden u aan ai.https.sax.parser te gebruiken voor grote bestanden.
  • Scripts hebben geen toegang tot IP-adressen binnen de
    Adaptive Planning
    netwerk.
  • HTTP wordt niet ondersteund, alleen HTTPS.

Bekende problemen

  • Tijdens importData/importStructure roept een gegevensbron testConnection aan. In CCDS betekent dit twee afzonderlijke scriptrunnerprocessen. Het is mogelijk dat het eerste proces is gemaakt om testConnection uit te voeren. Het tweede proces om importData/importStructure uit te voeren, kan in de wachtrij worden geplaatst in poolmanager en leidt uiteindelijk tot een time-out, waarna het mislukt.
  • Verwante flexibele instellingen kunnen dezelfde weergavenaam hebben. Daarom wordt in scripts die toegang hebben tot een instelling via getSetting(displayName) slechts één instance geretourneerd en is er geen garantie welke wordt geretourneerd. Gebruikers mogen geen verwante flexibele instellingen maken met dezelfde weergavenaam.