Zum Hauptinhalt wechseln
Adaptive Planning
Zuletzt aktualisiert: 2023-06-23
Konzept: Design

Konzept: Design

Die CCDS-API soll den Integrationsoperator dabei unterstützen, eine Verbindung zur Datenquelle herzustellen, Objekte innerhalb der Datenquelle zu erstellen, XML zu parsen, Datumsangaben zu konvertieren und Elemente bei der Erstellung einer Datenquelle häufig zu nutzen.

Namespaces

Die JavaScript-Engine bietet Zugriff auf integriert
Adaptive Planning
Integration über die Namespaces „adaptive“ oder „ai“ (
Adaptive Planning
) Namespace (Alias). Dies ist vergleichbar mit gängigen JavaScript-Bibliotheken wie 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');
Unterhalb des Root-Namespace
ai
ist eine Reihe von Kernfunktionen verfügbar, die die Interaktion von JavaScript mit dem Internet ermöglichen
Adaptive Planning
Discovery/Integration-Features. Diese öffentlichen JavaScript-APIs werden mithilfe der Node.js-APIs (https://nodejs.org/) modelliert.

Funktionen

Funktionen rufen Daten ab und legen sie fest, um die API-Konsistenz sicherzustellen, sie ermöglichen die Kapselung und lassen Setter und Getter explizit zu. Funktionen ermöglichen auch die Kapselung von C#-Objekten, um nur die Funktionen der JavaScript-Sprache verfügbar zu machen und ein unnötiges Überschreiten der JavaScript/C#-Grenze zu verhindern und so die Performance zu verbessern. Gettern wird das Präfix „get“ und Settern das Präfix „set“ vorangestellt.
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Kontext von Funktionen

Jede von einer CCDS aufgerufene Funktion verwendet ein Context-Objekt. Der Kontext enthält schreibgeschützte Objekte, die die Verarbeitung erleichtern.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
Der Kontext besteht aus Objekten, die von C# übergeben wurden. Zur Verbesserung der Performance wird vermieden, C#-Objekte in JavaScript bereitzustellen, indem jedes Objekt in einem JavaScript-Objekt gekapselt wird. Dies ermöglicht die Verwaltung der Kommunikation über die JavaScript/C#-Grenze hinweg. Wird zum Beispiel der Kontext für Tabellen abgefragt, wird das C#-Objekt in ein JavaScript-Objekt gekapselt zurückgegeben. Wenn eine Objekthierarchie vorhanden ist, wird jede Ebene in einem JavaScript-Objekt gekapselt. Werden die Spalten in einer Tabelle abgefragt, wird eine Liste der in JavaScript gekapselten Objekte zurückgegeben.

Einschränkungen

Die folgenden Grenzwerte gelten für eine laufende CCDS-Skriptverarbeitungssitzung.
Einstellung
Beschreibung
Standardwert
AppSetting konfigurierbar?
Mandanteneinstellung konfigurierbar?
Maximale Anzahl von Heap-Megabytes
Menge an RAM, die die V8-Engine verbrauchen kann.
800
Ja
Ja
CPU-Zeitbegrenzung
Zeitdauer, für die die V8-Engine CPU-Ressourcen verwenden kann.
10 Minuten
Ja
Ja
Maximale Ausführungsdauer
Zeitdauer, für die die V8-Engine ausgeführt werden kann, unabhängig davon, ob sie aktiv CPU-Ressourcen verwendet.
60 Minuten
Ja
Ja
Verzögerung zwischen Netzwerkaufrufen
1 Sekunde
Ja
Ja
Maximale Protokollanzahl pro Sekunde
Maximale Anzahl von Protokollen, die pro Sekunde per Skript erstellt werden können.
5
Ja
Ja
Maximale Protokollanzahl pro Stunde
Maximale Anzahl von Protokollen, die pro Stunde per Skript erstellt werden können.
1.000
Ja
Ja
Megabyte-Begrenzung für Netzwerkverwendung
Maximale Anzahl von Megabytes, die ein Skript über das Netzwerk senden und empfangen kann.
5 Gigabyte
Ja
Ja
Milliseconds Between Async Script Service Requests
Wird verwendet, um den Datenverkehr zwischen Aufgabenservice und einem Script Runner-Prozess zu drosseln. Wenn der Script Runner-Prozess mit der Anforderung des Aufgabenservice Schritt halten kann, sinkt die Wartezeit auf 0 Millisekunden.
200 Millisekunden
Nein
Nein
Max Script Result Pages Per Request
Anzahl von Datenseiten, die der Aufgabenservice aus dem Repository eines Script Runner anfordern kann.
50
Nein
Nein
Max Page size
Anzahl von Datenzeilen, die der Aufgabenservice auf jeder Datenseite anfordert.
10.000
Ja
Ja
Die folgenden Grenzwerte gelten für den CCDS-Skriptpoolmanager.
Einstellung
Beschreibung
Standardwert
AppSetting konfigurierbar?
Mandanteneinstellung konfigurierbar?
Max Script Pool Size
Maximale Anzahl gleichzeitig ausgeführter Skriptprozesse.
100
Ja
Nein
Min Script Pool Size
Minimale Anzahl von Skriptprozessen, die gleichzeitig ausgeführt werden können (wird zum „Vorwärmen“ von Script Runner-Prozessen verwendet).
0
Ja
Nein
Script Pool Wait Timeout
Maximale Zeit, für die eine Anforderung eines Script Runner-Prozesses in die Warteschlange gestellt werden kann.
180 Sekunden
Ja
Nein
Max Script Pool Queue Size
Maximale Anzahl wartender Anforderungen für einen Script Runner-Prozess.
1.000
Nein
Nein

Weitere Grenzwerte:

  • Ohne die Verwendung der Methode ai.https.sax.parser in einem Skript gibt es einen Grenzwert für die Größe von XML-Dateien für das Parsing. Der obere Größengrenzwert ist nicht bekannt, aber als Referenz gilt: Es ist möglich, eine 10 MB große Datei mit einer Heap-Größe von 100 MB zu parsen. Wir empfehlen die Verwendung der Methode „ai.https.sax.parser“ für große Dateien.
  • Skripte können nicht auf IPs innerhalb von zugreifen
    Adaptive Planning
    -Netzwerk.
  • HTTP wird nicht unterstützt, nur HTTPS.

Bekannte Probleme

  • Während der Ausführung der Funktion „importData“/„importStructure“ ruft eine Datenquelle die Funktion „testConnection“ auf. In der CCDS bedeutet dies zwei separate Script Runner-Prozesse. Es ist möglich, dass der erste Prozess erfolgreich erstellt wird, um „testConnection“ auszuführen. Der zweite Prozess für die Ausführung der Funktion „importData“/„importStructure“ kann sich in der Warteschlange des Poolmanagers befinden und möglicherweise zu einem Timeout führen und fehlschlagen.
  • Flexible Einstellungen für gleichgeordnete Elemente können denselben Anzeigenamen haben. Daher wird in Skripten, die über „getSetting(displayName)“ auf eine Einstellung zugreifen, nur eine einzelne Instanz zurückgegeben und es gibt keine Garantie, welche zurückgegeben wird. Benutzer sollten daran gehindert werden, flexible Einstellungen für gleichgeordnete Elemente mit demselben Anzeigenamen zu erstellen.