Passa al contenuto principale
Adaptive Planning
Funzioni di Adaptive Planning

Funzioni di Adaptive Planning

Funzione di verifica connessione

La funzione Verifica connessione viene utilizzata per determinare se l'integrazione può connettersi a un sistema esterno. La funzione Test Connection deve restituire true o false indicando il risultato.
Parametro di contesto
La connessione di test include un parametro, "context".
Metodo
Parametri
Tipo reso
Descrizione
getDataSource()
ai.dataSource
Restituisce l'origine dati attiva.
getCalendar()
ai.calendar
Restituisce
Adaptive Planning
Calendario
Esempio
function testConnection(context) { // Step 1: Create a https request to send to Earthquake USGS API var url = 'https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/all_hour.atom'; var method = 'GET'; var body = ``; var headers = {}; // Step 2: Send request and receive response try{ var response = ai.https.request(url, method, body, headers); ai.log.logInfo("Test Connection Successful"); } catch(e) { ai.log.logInfo("Test Connection Failed"); } // Step 3: Interrogate response to see if it was successful. Return true or false depending on the result. if (response.getHttpCode() == '200') { var body = response.getBody(); return true; } else { return false; } }

Funzione di importazione struttura

La funzione Import Structure viene utilizzata per creare/aggiornare lo schema dell'origine dati (ad esempio tabelle e colonne) definito da un sistema esterno. La funzione Import Structure deve restituire un oggetto ai.structure.structureBuilder.
Parametro di contesto
La funzione Import Structure include un parametro, "context".
Metodo
Parametri
Tipo reso
Descrizione
getDataSource()
ai.dataSource
Restituisce l'origine dati attiva.
getProgressManager()
ai.progressManager
Restituisce un oggetto che può essere utilizzato per aggiornare il valore della percentuale di completamento dell'attività Importazione struttura.
getStructureBuilder()
ai.structure.structureBuilder
Restituisce un oggetto utilizzato per creare la struttura dell'origine dati: tabelle, colonne, parametri e così via.
getCalendar()
ai.calendar
Restituisce
Adaptive Planning
Calendario
Esempio
function importStructure(context) { //getDataSource var dataSource=context.getDataSource(); // getStructureBuilder var builder = context.getStructureBuilder(); //getCalendar var calendar= context.getCalendar(); }
ai.progressManager
L'oggetto ai.progressManager consente a un utente di impostare manualmente la percentuale di completamento dell'attività che esegue lo script Import Structure. L'esecuzione dello script rappresenta il 70% della percentuale complessiva di completamento dell'attività. Pertanto, i valori di avanzamento definiti tramite ai.progressManager vengono ridimensionati per rappresentare lo stato di avanzamento dell'attività complessiva. Esempio: l'impostazione della percentuale di completamento di ai.progressManager su 100% equivale al 70% dell'attività in esecuzione, al 50% equivale al 35% dell'attività in esecuzione e così via.
Funzioni
Metodo
Parametri
Tipo reso
Descrizione
getProgress()
Numero
Restituisce la percentuale di completamento dello script definita dall'utente. Se l'utente non ha impostato in precedenza la percentuale di completamento, questa funzione restituirà 0.
setProgress( value )
  • value: Number Valore su cui impostare la percentuale di completamento dello script
Imposta la percentuale di completamento dello script. Funziona come segue:
  • Sono accettati solo valori numerici come 0, 10, 22,5 100, 110.
  • I valori superiori a 100 vengono considerati come 100.
  • I valori inferiori all'avanzamento dello script corrente vengono ignorati. Esempio: chiamare setProgress(50) seguito da setProgress(40). In questo modo la percentuale di completamento dello script è del 50%.
  • Tutti gli altri tipi di input per "valore" non influiranno sull'avanzamento dello script,
Esempio
function importStructure(context) { .......... var progressManager = context.getProgressManager(); // Set script progress % to 10 progressManager.setProgress(10); // Increase script progress % to 50 progressManager.setProgress(50.0); // Set progress to 100 by using value greater than 100 progressManager.setProgress(230); progressManager.getProgress(); // returns 100 // Increase progress by 10% based on current progress progressManager.setProgress(progressManager.getProgress() + 10); .......... return builder; }
ai.structure.structureBuilder
Funzioni
Metodo
Parametri
Resi
Descrizione
addTable( tableId )
  • tableId : ID univoco stringa della tabella
ai.structure.editableTable
Crea e restituisce una nuova tabella per l'origine dati.
Esempio
Consente di definire le tabelle e la struttura delle colonne che verranno popolate dai dati.
function importStructure(context) { ........ //getStructureBuilder var builder = context.getStructureBuilder(); //Example addTable( tableId )-"Sample" var table = builder.addTable("Sample"); ....... }
ai.structure.editableTable
Funzioni
Metodo
Parametri
Resi
Descrizione
setDisplayName( displayName )
displayName : String Valore su cui impostare la proprietà del nome visualizzato della tabella.
ai.structure.editableTable
Imposta il nome visualizzato della tabella.
addColumn( columnId )
columnId : String RemoteId della colonna
ai.structure.editableColumn
Crea e restituisce una nuova colonna figlio della tabella.
addRequiredParameter( parameterId )
parameterId : ID stringa del parametro
ai.structure.editableParameter
Crea e restituisce un nuovo parametro obbligatorio per la tabella. È necessario impostare un parametro assegnabile come valore di un Parametro obbligatorio quando la tabella viene utilizzata come parte di ImportData o ImportStructure.
ai.structure.editableColumn
Funzioni
Metodo
Parametri
Resi
Descrizione
setDisplayName( value )
  • value : String Valore su cui impostare la proprietà displayName delle colonne
ai.structure.editableColumn
Imposta il nome visualizzato della colonna.
setDisplayOrder( value )
  • value : String Valore su cui impostare la proprietà displayOrder delle colonne
ai.structure.editableColumn
Imposta l'ordine di visualizzazione della colonna.
setIncludeByDefault( value )
  • value : valore booleano su cui impostare la proprietà IsEnabled delle colonne
ai.structure.editableColumn
Imposta la colonna da abilitare per l'importazione dei dati.
setIncludeInKey( value )
  • value : valore booleano su cui impostare la proprietà includeInKey delle colonne
ai.structure.editableColumn
Indica se la colonna fa parte della chiave della tabella.
setMandatoryForImports( value )
  • value : valore booleano per indicare se questa colonna è abilitata per l'importazione di dati in base a un valore obbligatorio
ai.structure.editableColumn
Imposta la colonna in modo che sia abilitata per l'importazione dei dati come obbligatoria.
setNonFilterable( value )
  • value : valore booleano su cui impostare la proprietà nonFilterable delle colonne
ai.structure.editableColumn
Indica se la colonna può essere inclusa in una query remota.
setRemoteColumnType( value )
  • value : String Valore su cui impostare la proprietà remoteColumnType delle colonne
ai.structure.editableColumn
Imposta il tipo di dati remoti della colonna, ad esempio 'string', 'integer' e così via
setTextColumnType( length )
  • length : Intero Lunghezza massima dei valori che questa colonna può contenere
ai.structure.editableColumn
Trasforma la colonna in una colonna di testo.
setIntegerColumnType()
ai.structure.editableColumn
Rende la colonna una colonna di numeri interi.
setFloatColumnType()
ai.structure.editableColumn
Rende la colonna una colonna a precisione doppia.
setBooleanColumnType()
ai.structure.editableColumn
Rende la colonna una colonna booleana.
setDateTimeColumnType()
ai.structure.editableColumn
Trasforma la colonna in una colonna data e ora.
ai.structure.editableParameter
Funzioni
Metodo
Parametri
Resi
Descrizione
setDisplayName( value )
  • value : String Valore su cui impostare la proprietà displayName dei parametri
Imposta il nome visualizzato del parametro.
setForDataImport( value )
  • value : valore booleano che indica se il parametro sarà accessibile in uno script ImportData
Abilita il parametro per l'importazione dei dati.
setTypePeriodRange()
Modifica il tipo del parametro in un Intervallo di periodi
Esempio
function importStructure(context) { ............... //addColumn var valueColumn= table.addColumn('Value'); //setDisplayName valueColumn.setDisplayName('Value'); // Set the data type for the column - Can be Integer, Float, DateTime or Boolean values valueColumn.setFloatColumnType(); //setDisplayOrder valueColumn.setDisplayOrder('0'); //setIncludeByDefault valueColumn.setIncludeByDefault(true); //setRemoteColumnType valueColumn.setRemoteColumnType('float'); // setIncludeInKey valueColumn.setIncludeInKey(false); //setMandatoryForImports valueColumn.setMandatoryForImports(false); .............. }

Funzione di importazione dati

La funzione Import Data viene utilizzata per importare righe da un'origine esterna e importarle nelle tabelle di gestione temporanea dell'integrazione. Il meccanismo per l'importazione delle righe è l'oggetto ai.rowset, fornito tramite il parametro "context" passato alla funzione Import Data.
Parametro di contesto
La funzione Import Data dispone di un parametro, "context".
Metodo
Parametri
Tipo reso
Descrizione
getRowset()
Genera un avviso di deprecazione dell'API nei registri dopo che il supporto ha abilitato getRowset(ColumnIds) su richiesta con la versione 2021R1. Il metodo getRowset() continuerà a funzionare ma ignorerà i parametri.
ai.rowset
Restituisce l'oggetto Rowset a cui vengono aggiunte le righe. Il Rowset definisce la Tabella, le Colonne e MaxRows.
getRowset([columnIds])
Aprire un ticket nel Workday Customer Center per abilitare il flag della funzionalità "
servizi cloud personalizzati legge la tabella di gestione temporanea in base a colonne specificate
".
[Column Ids]
ai.rowset
Restituisce l'oggetto Set di righe a cui vengono aggiunte le righe, nell'ordine delle colonne specificato. Il Rowset definisce la Tabella, le Colonne e MaxRows.
getDataSource()
ai.dataSource
Restituisce l'origine dati attiva.
getCalendar()
ai.calendar
Restituisce
Adaptive Planning
Calendario
Esempio
Questo esempio presuppone che il set di righe contenga una colonna Intero e una colonna Testo in ordine.
function importData(context) { ........... var rowset = context.getRowset(); .......... var rowset= context.getRowset([ 'NAME', 'ID']); }
ai.rowset
L'oggetto Rowset è il meccanismo mediante il quale le "righe" all'interno dello script di un utente vengono trasportate nello stack di integrazione. Un Rowset modella la forma (nomi delle colonne e relativi tipi di dati, maxRows e tableId) della tabella in base alla quale un utente esegue lo script PreviewData o ImportData.
Funzioni
Metodo
Parametri
Tipo reso
Descrizione
addRow( cells)
cell : Array<Primitive Types> Matrice di valori per ogni colonna, in ordine
Aggiunge una matrice di valori di cella sotto forma di riga al Set di righe. I valori delle celle devono essere un oggetto String (può essere null), Number (Intero finito o Decimale), Boolean o Date. Ogni tipo di valore di cella deve corrispondere al tipo di dati della colonna corrispondente nell'ordine definito da getColumnNames. Il numero di valori cella deve corrispondere al numero di colonne definito.
getTableId()
String
Restituisce l'ID della tabella visualizzata in anteprima.
getMaxRows()
Intero
Restituisce il numero massimo di righe consentite in questo set di righe. 0 significa sconosciuto, in quanto utilizzato da ImportData.
getColumns()
Array<ai.dataSource.table.column>
Restituisce le colonne della tabella selezionate per l'anteprima.
setSmartParsingEnabled( val )
  • val : valore booleano che indica se attivare o disattivare questa funzionalità
Se possibile, l'abilitazione di questa impostazione analizzerà automaticamente ogni valore di cella della stringa nel tipo di dati obbligatorio delle colonne di destinazione durante la funzione addRow(). In questo modo, l'utente non deve cercare il tipo di dati di una colonna di destinazione e eseguire l'analisi manuale se il tipo di dati del valore per la cella corrente non corrisponde al tipo di dati delle colonne di destinazione. Ciò è particolarmente utile quando si gestiscono API di terze parti che restituiscono tutti i valori di riga come stringhe tramite JSON o XML e ogni valore di cella può essere analizzato correttamente in valori Integer, Float, Boolean o DateTime.
getSmartParsingEnabled()
Booleano
Restituisce vero se questa impostazione è abilitata. Il valore predefinito è false.
function importData(context) { var dataSource = context.getDataSource(); var settings = dataSource.getSettings(); var rowset = context.getRowset(); //Set and Get SmartParsingEnabled() value rowset.setSmartParsingEnabled(true); ai.log.logInfo(getSmartParsingEnabled()); //true //Set a Start date and End date in the Designer Settings tab with the name "Period Range" var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10); var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10); //get columns var columns = rowset.getColumns(); for (var i = 0; i < dataSample.rows.length; i++) { var colName; var cells = []; for (var j = 0; j < columns.length; j++) { var colValue; var re = /\\\-/g; if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDateString))) { colName = columns[j].getId(); colValue = dataSample.rows[i][colName]; cells.push(colValue.toString().replace(re, '.')); } } if (cells.length == columns.length) { //add rows rowset.addRow(cells); } } }

Funzione di anteprima dati

La funzione Anteprima dati viene utilizzata per eseguire query su un sistema esterno per le righe di dati per la tabella e le colonne specificate. È limitato dal numero massimo di righe che il sistema esterno consente a un utente di visualizzare durante un'anteprima in quel sistema.
Parametro di contesto
La funzione Preview Data include un parametro, 'context'.
Metodo
Parametri
Tipo reso
Descrizione
getDataSource()
ai.dataSource
Restituisce l'origine dati attiva.
getRowset()
ai.rowset
Restituisce l'oggetto Rowset a cui vengono aggiunte le righe. Il Rowset definisce la Tabella, le Colonne e MaxRows.
getCalendar()
ai.calendar
Restituisce
Adaptive Planning
Calendario
Esempio
Consente di visualizzare in anteprima i dati archiviati nell'origine cloud.
function previewData(context) { var dataSource = context.getDataSource(); var settings = dataSource.getSettings(); var rowset = context.getRowset(); //Set and Get SmartParsingEnabled() value rowset.setSmartParsingEnabled(true); ai.log.logInfo(getSmartParsingEnabled()); //true //Set a Start date and End date in the Designer Settings tab with the name "Period Range" var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10); var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10); //get columns var columns = rowset.getColumns(); for (var i = 0; i < dataSample.rows.length; i++) { var colName; var cells = []; for (var j = 0; j < columns.length; j++) { var colValue; var re = /\\\-/g; if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDateString))) { colName = columns[j].getId(); colValue = dataSample.rows[i][colName]; cells.push(colValue.toString().replace(re, '.')); } } if (cells.length == columns.length) { //add rows rowset.addRow(cells); } } }

Esempio di connessione di test, importazione e anteprima dati combinati

//Consider a static JSON Data Sample set dataSample = { rows: [ {"Value": 10, "Measure": "", "Test": "Palo Alto", "Effective Date": "2018-11-01"}, {"Value": 20, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"}, {"Value": 30, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"}, {"Value": 40, "Measure": " ", "Test": "Palo Alto", "Effective Date": "2018-11-01"}, {"Value": 50, "Measure": "1 ", "Test": "Pleasanton", "Effective Date": "2018-11-01"}, {"Value": 10, "Measure": "2 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"}, {"Value": 20, "Measure": "3 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"}, {"Value": 30, "Measure": "4 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"}, {"Value": 40, "Measure": "5 ", "Test": "Pleasanton", "Effective Date": "2018-12-01"} ] }; //Table Definition ExternalMetadataDefinition = { Tables: [{ name: "dataSample", displayName: "Sample", columns: [{ name: "Value", displayName: "Value", type: "float", includeByDefault: true }, { name: "Measure", displayName: "Measure", includeByDefault: true }, { name: "Test", displayName: "Test", includeByDefault: true }, { name: "Effective Date", displayName: "Date", type: "datetime", includeByDefault: true }] }] }; //Since this example uses a static data source,testConnection() function can return true function testConnection(context) { return true; } //Import Structure function importStructure(context) { var addColumn = function(table, column, order) { var recordColumn = table.addColumn(column.name); recordColumn.setDisplayName(column.displayName); switch (column.type) { case "text": recordColumn.setTextColumnType(column.length); break; case "int": recordColumn.setIntegerColumnType(); break; case "float": recordColumn.setFloatColumnType(); break; case "boolean": recordColumn.setBooleanColumnType(); break; case "datetime": recordColumn.setDateTimeColumnType(); break; default: recordColumn.setTextColumnType(200); break; } recordColumn.setDisplayOrder(order); recordColumn.setIncludeByDefault(column.includeByDefault || false); recordColumn.setIncludeInKey(column.includeInKey || false); recordColumn.setMandatoryForImports(column.mandatoryForImport || false); recordColumn.setRemoteColumnType(column.remoteColumnType || "String"); }; var builder = context.getStructureBuilder(); for (var i = 0; i < ExternalMetadataDefinition.Tables.length; i++) { var externalTable = ExternalMetadataDefinition.Tables[i]; var table = builder.addTable(externalTable.name); table.setDisplayName(externalTable.displayName); for (var j = 0; j < externalTable.columns.length; j++) { addColumn(table, externalTable.columns[j], j + 1); } } } function previewData(context) { //Since the data is static, previewData() function can invoke importData() importData(context); } function importData(context) { var dataSource = context.getDataSource(); var settings = dataSource.getSettings(); var rowset = context.getRowset(); //Set and Get SmartParsingEnabled() value rowset.setSmartParsingEnabled(true); ai.log.logInfo(getSmartParsingEnabled()); //true //Set a Start date and End date in the Designer Settings tab with the name "Period Range" var startDateString = dataSource.getSetting("Period Range").getValue().getFromPeriodStartDateTime().substring(0, 10); var endDateString = dataSource.getSetting("Period Range").getValue().getToPeriodEndDateTime().substring(0, 10); //get columns var columns = rowset.getColumns(); for (var i = 0; i < dataSample.rows.length; i++) { var colName; var cells = []; for (var j = 0; j < columns.length; j++) { var colValue; var re = /\\\-/g; if ((new Date(dataSample.rows[i]["Effective Date"]) >= new Date(startDateString)) && (new Date(dataSample.rows[i]["Effective Date"]) < new Date(endDateString))) { colName = columns[j].getId(); colValue = dataSample.rows[i][colName]; cells.push(colValue.toString().replace(re, '.')); } } if (cells.length == columns.length) { //add rows rowset.addRow(cells); } } }

Funzione di esportazione dati (solo caricatore cloud personalizzato)

La funzione Esporta dati viene utilizzata per esportare le righe quando si creano script di caricatori cloud personalizzati . Il meccanismo per l'esportazione delle righe è il
ai.rowset
oggetto, fornito tramite
context
parametro passato alla funzione di esportazione.
context.createTableReader()
restituisce un lettore. Utilizzare
reader.readRow()
per leggere le righe di dati della tabella di origine.
reader.readRow()
restituisce le colonne di dati nell'ordine predefinito. Se
context.createTableReader()
viene chiamato con una matrice di ID colonna, le colonne vengono disposte in base all'ordine delle colonne nel parametro.
Parametro di contesto
La funzione di esportazione dati include un parametro, "context".
Metodo
Parametri
Tipo reso
Descrizione
createTableReader()
matrice facoltativa dei nomi delle colonne della tabella di origine
TableReader
Restituisce l'origine dati attiva. L'ordine delle colonne è uguale a quello specificato nel parametro.
TableReader Object
Metodo
Parametri
Tipo reso
Descrizione
readRow()
matrice di valori
Matrice di valori dall'origine dati.
Esempio
// Manually invoke this method via 'Run manually' function exportData(context) { // Step 1: Get the data var reader = context.createTableReader(); // Step 2: Process and export the data var row = null; // If reader.readRow() returns null, then there are no more records. while ((row = reader.readRow()) !== null) { // Send the row to the external system or process it for a subsequent bulk update. ai.log.logInfo(JSON.stringify(row)); } }