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 deAdaptive Planningnetwerk.
- 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.