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

Adaptive Planning-functies

Verbindingsfunctie testen

De functie Verbinding testen wordt gebruikt om te bepalen of Integratie verbinding kan maken met een extern systeem. De functie Verbinding testen moet waar of onwaar retourneren om het resultaat aan te geven.
Contextparameter
De testverbinding is voorzien van één parameter, 'context'.
Methode
Parameters
Retourtype
Omschrijving
getDataSource()
ai.dataSource
Retourneert de actieve gegevensbron.
getCalendar()
ai.calendar
Retourneert de
Adaptive Planning
Kalender
Voorbeeld
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; } }

Functie voor importeren van structuur

De functie Structuur importeren wordt gebruikt voor het maken/bijwerken van het schema van de gegevensbron (dat wil zeggen tabellen en kolommen) dat is gedefinieerd door een extern systeem. De functie Structuur importeren moet een ai.structure.structureBuilder-object retourneren.
Contextparameter
De functie Structuur importeren is voorzien van één parameter, 'context'.
Methode
Parameters
Retourtype
Omschrijving
getDataSource()
ai.dataSource
Retourneert de actieve gegevensbron.
getProgressManager()
ai.progressManager
Retourneert een object dat kan worden gebruikt om de waarde voor het percentage voltooid van de taak Structuur importeren bij te werken.
getStructureBuilder()
ai.structure.structureBuilder
Retourneert een object dat wordt gebruikt om de gegevensbronstructuur te maken - tabellen, kolommen, parameters, enzovoort.
getCalendar()
ai.calendar
Retourneert de
Adaptive Planning
Kalender
Voorbeeld
function importStructure(context) { //getDataSource var dataSource=context.getDataSource(); // getStructureBuilder var builder = context.getStructureBuilder(); //getCalendar var calendar= context.getCalendar(); }
ai.progressManager
Met het object ai.progressManager kan een gebruiker handmatig het voltooiingspercentage instellen van de taak waarop het importstructuurscript wordt uitgevoerd. De uitvoering van het script is goed voor 70% van het totale percentage voltooide taken. Daarom worden voortgangswaarden die via ai.progressManager zijn gedefinieerd, geschaald om de voortgang van de algehele taak weer te geven. Voorbeeld: als u het percentage voltooid van ai.progressManager instelt op 100%, komt dit neer op 70% van de actieve taak, 50% is gelijk aan 35% van de actieve taak, enzovoort.
Functies
Methode
Parameters
Retourtype
Omschrijving
getProgress()
Getal
Retourneert het voltooiingspercentage van het script zoals gedefinieerd door de gebruiker. Als de gebruiker het percentage voltooid niet eerder heeft ingesteld, retourneert deze functie 0.
setProgress( value )
  • waarde: Getal Waarde om scriptpercentage voltooid in te stellen op
Hiermee stelt u het scriptpercentage voltooid in. Dit werkt als volgt:
  • Alleen numerieke waarden worden geaccepteerd, zoals 0, 10, 22,5, 100, 110.
  • Waarden groter dan 100 worden behandeld als 100.
  • Waarden die kleiner zijn dan de huidige scriptvoortgang worden genegeerd. Voorbeeld: roep setProgress(50) aan gevolgd door setProgress(40). Dit resulteert in het percentage voltooid van het script op 50%.
  • Alle andere invoertypen voor waarde hebben geen invloed op de voortgang van het script.
Voorbeeld
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
Functies
Methode
Parameters
Retouren
Omschrijving
addTable( tableId )
  • tableId : Unieke tekenreeks-ID van de tabel
ai.structure.editableTable
Hiermee maakt en retourneert u een nieuwe tabel voor de gegevensbron.
Voorbeeld
Biedt de mogelijkheid om de tabellen en kolomstructuur te definiëren die met gegevens worden gevuld.
function importStructure(context) { ........ //getStructureBuilder var builder = context.getStructureBuilder(); //Example addTable( tableId )-"Sample" var table = builder.addTable("Sample"); ....... }
ai.structure.editableTable
Functies
Methode
Parameters
Retouren
Omschrijving
setDisplayName( displayName )
displayName: tekenreekswaarde om de weergavenaameigenschap van de tabel in te stellen.
ai.structure.editableTable
Hiermee stelt u de weergavenaam van de tabel in.
addColumn( columnId )
columnId : Tekenreeks RemoteId van de kolom
ai.structure.editableColumn
Hiermee wordt een nieuwe onderliggende kolom van de tabel gemaakt en geretourneerd.
addRequiredParameter( parameterId )
parameterId : tekenreeks-ID van de parameter
ai.structure.editableParameter
Hiermee wordt een nieuwe vereiste parameter voor de tabel gemaakt en geretourneerd. Er moet een toewijsbare parameter worden ingesteld als de waarde van een vereiste parameter wanneer deze tabel wordt gebruikt als onderdeel van ImportData of ImportStructure.
ai.structure.editableColumn
Functies
Methode
Parameters
Retouren
Omschrijving
setDisplayName( value )
  • value : Tekenreekswaarde om de eigenschap displayName van de kolommen in te stellen op
ai.structure.editableColumn
Hiermee stelt u de weergavenaam van de kolom in.
setDisplayOrder( value )
  • value : Tekenreekswaarde om de eigenschap displayOrder van de kolommen in te stellen op
ai.structure.editableColumn
Hiermee stelt u de weergavevolgorde van de kolom in.
setIncludeByDefault( value )
  • value : Boole-waarde om de eigenschap IsEnabled voor kolommen in te stellen op
ai.structure.editableColumn
Hiermee stelt u de kolom in die moet worden ingeschakeld voor gegevensimport.
setIncludeInKey( value )
  • value : Boole-waarde om de eigenschap includeInKey van de kolommen in te stellen op
ai.structure.editableColumn
Hiermee wordt aangegeven of de kolom deel uitmaakt van de tabelsleutel.
setMandatoryForImports( value )
  • value : Boole-waarde om aan te geven of deze kolom is ingeschakeld voor gegevensimport door verplicht
ai.structure.editableColumn
Hiermee stelt u de kolom in die voor gegevensimport moet worden ingeschakeld door verplicht.
setNonFilterable( value )
  • value : Boole-waarde om de niet-filterbare eigenschap van de kolommen in te stellen op
ai.structure.editableColumn
Hiermee wordt aangegeven of de kolom kan worden opgenomen in een externe query.
setRemoteColumnType( value )
  • value : Tekenreekswaarde om de eigenschap remoteColumnType van de kolommen in te stellen op
ai.structure.editableColumn
Hiermee stelt u het externe gegevenstype van de kolom in, bijvoorbeeld 'string', 'integer', enzovoort
setTextColumnType( length )
  • lengte : Geheel getal Maximumlengte van de waarden die deze kolom kan bevatten
ai.structure.editableColumn
Hiermee maakt u van de kolom een tekstkolom.
setIntegerColumnType()
ai.structure.editableColumn
Hiermee maakt u van de kolom een kolom met een geheel getal.
setFloatColumnType()
ai.structure.editableColumn
Hiermee maakt u van de kolom een kolom met dubbele precisie.
setBooleanColumnType()
ai.structure.editableColumn
Hiermee maakt u van de kolom een Boole-kolom.
setDateTimeColumnType()
ai.structure.editableColumn
Hiermee maakt u van de kolom een datum-tijdkolom.
ai.structure.editableParameter
Functies
Methode
Parameters
Retouren
Omschrijving
setDisplayName( value )
  • value : Tekenreekswaarde om de eigenschap displayName van de parameters in te stellen op
Hiermee stelt u de weergavenaam van de parameter in.
setForDataImport( value )
  • value : Boole-waarde die aangeeft of de parameter toegankelijk is in een ImportData-script
Hiermee wordt een parameter voor het importeren van gegevens ingeschakeld.
setTypePeriodRange()
Wijzigt het type van de parameter in een periodebereik
Voorbeeld
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); .............. }

Functie voor importeren van gegevens

De functie Gegevens importeren wordt gebruikt om rijen uit een externe bron te halen en deze te importeren in faseringstabellen voor integratie. Het mechanisme voor het importeren van rijen is het object ai.rowset, dat wordt geleverd via de parameter 'context' die wordt doorgegeven aan de functie Gegevens importeren.
Contextparameter
De functie Gegevens importeren is voorzien van één parameter, 'context'.
Methode
Parameters
Retourtype
Omschrijving
getRowset()
Genereert een API-afschaffingswaarschuwing in de logboeken nadat de ondersteuning getRowset(ColumnIds) op uw verzoek heeft ingeschakeld met de 2021R1-release. De methode getRowset() blijft werken, maar negeert eventuele parameters.
ai.rowset
Retourneert het Rowset-object waaraan rijen worden toegevoegd. De rijset definieert de tabel, kolommen en max. rijen.
getRowset([columnIds])
Open een case in het Workday Customer Center om de functiemarkering '
aangepaste cloudservices leest faseringstabel op basis van opgegeven kolommen
' in te schakelen.
[Column Ids]
ai.rowset
Retourneert het Rijenset-object waaraan rijen worden toegevoegd, in de opgegeven kolomvolgorde. De rijset definieert de tabel, kolommen en max. rijen.
getDataSource()
ai.dataSource
Retourneert de actieve gegevensbron.
getCalendar()
ai.calendar
Retourneert de
Adaptive Planning
Kalender
Voorbeeld
In dit voorbeeld wordt ervan uitgegaan dat de rijenset op volgorde een kolom met een geheel getal en een tekstkolom bevat.
function importData(context) { ........... var rowset = context.getRowset(); .......... var rowset= context.getRowset([ 'NAME', 'ID']); }
ai.rowset
Het Rowset-object is het mechanisme waarmee rijen in een gebruikersscript naar de integratiestack worden getransporteerd. Een rijset modelleert de vorm (kolomnamen en de bijbehorende gegevenstypen, maxRows en tableId) van de tabel waarop een gebruiker het script PreviewData of ImportData uitvoert.
Functies
Methode
Parameters
Retourtype
Omschrijving
addRow( cells )
cellen: Matrix<Primitive Types> Matrix met waarden voor elke kolom, in volgorde:
Hiermee wordt een matrix met celwaarden als rij aan de rijset toegevoegd. Celwaarden moeten een geldig object Tekenreeks (kan null zijn), Getal (eindig geheel getal of decimaal), Boole-object of Datumobject zijn. Elk celwaardetype moet overeenkomen met het bijbehorende kolomgegevenstype in de volgorde die is gedefinieerd door getColumnNames. Het aantal celwaarden moet overeenkomen met het aantal gedefinieerde kolommen.
getTableId()
String
Retourneert de tabel-ID van de tabel waarvan een voorbeeld wordt weergegeven.
getMaxRows()
Geheel getal
Retourneert het maximum aantal toegestane rijen in deze rijset. 0 betekent onbekend, zoals gebruikt door ImportData.
getColumns()
Array<ai.dataSource.table.column>
Retourneert de tabelkolommen die voor het voorbeeld zijn geselecteerd.
setSmartParsingEnabled( val )
  • val : Boole-waarde die aangeeft of deze functie moet worden in- of uitgeschakeld
Als u deze instelling inschakelt, wordt elke tekenreekscelwaarde indien mogelijk automatisch geparseerd in het vereiste gegevenstype voor doelkolommen tijdens de functie addRow(). Dit voorkomt dat een gebruiker het gegevenstype van een doelkolom hoeft op te zoeken en handmatig moet parseren als het gegevenstype van de waarde voor de huidige cel niet overeenkomt met het gegevenstype van de doelkolom. Dit is met name handig als u te maken hebt met API's van derden die alle rijwaarden als tekenreeksen retourneren via JSON of XML, en elke celwaarde kan worden geparseerd in waarden voor gehele getallen, zwevend, Boole-waarden of DateTime.
getSmartParsingEnabled()
Boole-waarde
Retourneert waar als deze instelling is ingeschakeld. De standaardwaarde is onwaar.
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); } } }

Voorbeeld van gegevensfunctie

De functie Voorbeeld van gegevens wordt gebruikt om een extern systeem op te vragen voor rijen met gegevens voor de opgegeven tabel en kolommen. Het wordt beperkt door het maximum aantal rijen dat een gebruiker kan zien tijdens een voorbeeld in dat systeem.
Contextparameter
De functie Voorbeeld van gegevens heeft één parameter, 'context'.
Methode
Parameters
Retourtype
Omschrijving
getDataSource()
ai.dataSource
Retourneert de actieve gegevensbron.
getRowset()
ai.rowset
Retourneert het Rowset-object waaraan rijen worden toegevoegd. De rijset definieert de tabel, kolommen en max. rijen.
getCalendar()
ai.calendar
Retourneert de
Adaptive Planning
Kalender
Voorbeeld
Biedt de mogelijkheid om een voorbeeld van gegevens te bekijken die zijn opgeslagen in de cloudbron.
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); } } }

Voorbeeld van gecombineerde verbinding testen, importeren en voorbeeld van gegevens bekijken

//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); } } }

Functie voor exporteren van gegevens (alleen aangepast cloudlaadprogramma)

De functie Gegevens exporteren wordt gebruikt om rijen te exporteren wanneer u aangepaste scripts voor cloudlaadprogramma's maakt . Het mechanisme voor het exporteren van rijen is:
ai.rowset
object, dat wordt geleverd via de
context
parameter doorgegeven aan de exportfunctie.
context.createTableReader()
retourneert een lezer. Gebruiken
reader.readRow()
om gegevensrijen van de brontabel te lezen.
reader.readRow()
retourneert gegevenskolommen in de standaardvolgorde. Als
context.createTableReader()
wordt aangeroepen met een matrix met kolom-ID's, worden de kolommen gerangschikt op de volgorde van de kolommen in de parameter.
Contextparameter
De functie Gegevens exporteren is voorzien van één parameter, 'context'.
Methode
Parameters
Retourtype
Omschrijving
createTableReader()
optionele matrix met kolomnamen in brontabel
TableReader
Retourneert de actieve gegevensbron. De kolomvolgorde is hetzelfde als de volgorde die in de parameter is opgegeven.
TableReader Object
Methode
Parameters
Retourtype
Omschrijving
readRow()
matrix met waarden
Een matrix met waarden uit de gegevensbron.
Voorbeeld
// 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)); } }