Passa al contenuto principale
Adaptive Planning
Ultimo aggiornamento: 2023-06-23
Concetto: Progettazione

Concetto: Progettazione

L'API origine dati cloud personalizzata è progettata per assistere l'operatore di integrazione nella connessione all'origine dati, nella creazione di oggetti all'interno dell'origine dati, nelle analisi XML, nella conversione delle date e nell'utilizzo frequente di elementi durante la creazione di un'origine dati.

Spazi dei nomi

Il motore JavaScript fornisce l'accesso a built-in
Adaptive Planning
Integrazione tramite gli spazi dei nomi "adaptive" o "ai" (
Adaptive Planning
) (Alias) Si tratta di qualcosa di simile alle librerie JavaScript più comuni, come ad esempio 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');
Sotto lo spazio dei nomi radice "
ai
", sono esposte alcune funzioni principali per consentire a JavaScript di interagire con Internet e
Adaptive Planning
Funzionalità di individuazione/integrazione Queste API JavaScript pubbliche sono modellate utilizzando come guida le API Node.js (https://nodejs.org/).

Funzioni

Le funzioni ottengono e impostano i dati per rendere coerente l'API, fornire l'incapsulamento e consentire in modo esplicito setter e getter. Inoltre, le funzioni forniscono l'incapsulamento di oggetti C# per esporre solamente le funzionalità del linguaggio JavaScript e impedire che venga inutilmente superato il limite JavaScript/C#, così da migliorare le performance. I getter hanno il prefisso get, mentre i setter hanno il prefisso set.
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Contesto delle funzioni

Ogni funzione chiamata da un'origine dati cloud personalizzata accetta un oggetto Contesto. Per facilitare l'elaborazione, il contesto contiene oggetti di sola lettura.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
Il contesto è composto da oggetti passati da C#. Per migliorare le performance, si evita di esporre oggetti C# in JavaScript, incapsulandoli singolarmente in un oggetto JavaScript. In questo modo, è possibile gestire la comunicazione superando il limite JavaScript/C#. Ad esempio, quando si richiede il contesto per le tabelle, l'oggetto C# viene restituito incapsulato in un oggetto JavaScript. Se è presente una gerarchia di oggetti, ogni livello viene incapsulato in un oggetto JavaScript. Se si richiedono le colonne in una tabella, viene restituito un elenco di oggetti JavaScript incapsulati.

Limitazioni

A una sessione di elaborazione script dell'origine dati cloud personalizzata in esecuzione si applicano i seguenti limiti:
Impostazione
Descrizione
Valore predefinito
AppSetting configurabile?
Impostazione tenant configurabile?
Max megabyte heap
Quantità di RAM utilizzabile dal motore V8.
800
Limite di tempo CPU
Lasso di tempo durante il quale il motore V8 può utilizzare le risorse della CPU.
10 minuti
Limite durata esecuzione
Lasso di tempo per cui può funzionare il motore V8, indipendentemente dall'utilizzo delle risorse della CPU.
60 minuti
Ritardo tra chiamate di rete
1 secondo
Limite di registri per secondo
Numero massimo di registri che è possibile creare da script al secondo.
5
Limite di registri per ora
Numero massimo di registri che è possibile creare da script all'ora.
1.000
Megabyte limite di utilizzo rete
Limite massimo di megabyte che uno script può inviare e ricevere sulla rete.
5 gigabyte
Milliseconds Between Async Script Service Requests
Parametro utilizzato per limitare il traffico tra il servizio di attività e un processo di esecuzione dello script. Se il processo di esecuzione dello script è in grado di soddisfare la richiesta del servizio di attività, il tempo di attesa scende a 0 millisecondi.
200 millisecondi
No
No
Max Script Result Pages Per Request
Numero di pagine di dati che il servizio di attività può richiedere al repository di un processo di esecuzione dello script.
50
No
No
Max Page size
Numero di righe di dati richieste dal servizio di attività in ogni pagina di dati.
10.000
I limiti seguenti si applicano al gestore del pool di script dell'origine dati cloud personalizzata.
Impostazione
Descrizione
Valore predefinito
AppSetting configurabile?
Impostazione tenant configurabile?
Max Script Pool Size
Numero massimo di processi di script in esecuzione contemporaneamente.
100
No
Min Script Pool Size
Numero minimo di processi di script da eseguire contemporaneamente (utilizzati per il pre-avvio dei processi di esecuzione dello script).
0
No
Script Pool Wait Timeout
Tempo massimo per il quale una richiesta per un processo di esecuzione dello script può rimanere in coda.
180 secondi
No
Max Script Pool Queue Size
Numero massimo di richieste in attesa per un processo di esecuzione dello script.
1.000
No
No

Altri limiti

  • Senza utilizzare il metodo ai.https.sax.parser nello script, esiste un limite alle dimensioni di un file XML per l'analisi. Le dimensioni massime non sono note, tuttavia, a scopo di riferimento, è possibile analizzare un file di 10 MB con una dimensione dell'heap di 100 MB. Per file di grandi dimensioni, si consiglia di utilizzare ai.https.sax.parser.
  • Gli script non possono accedere agli IP all'interno di
    Adaptive Planning
    rete
  • Il protocollo HTTP non è supportato, è supportato solo HTTPS.

Problemi noti

  • Durante importData/importStructure, un'origine dati chiamerà testConnection. Nell'origine dati cloud personalizzata, ciò significa avere due processi di esecuzione dello script separati. È possibile che il primo processo sia stato creato correttamente per eseguire testConnection. Il secondo processo, creato per eseguire importData/importStructure, può essere messo in coda nel gestore del pool, andare in timeout e, infine, non riuscire.
  • Impostazioni flessibili di pari livello possono avere lo stesso nome visualizzato. Pertanto, negli script che accedono a un'impostazione tramite getSetting(displayName), viene restituita un'unica istanza e non è garantito quale verrà restituita. Agli utenti deve essere impedito di creare impostazioni flessibili di pari livello con lo stesso nome visualizzato.