Passer au contenu principal
Adaptive Planning
Fonctions Adaptive Planning

Fonctions Adaptive Planning

Tester la fonction de connexion

La fonction Tester la connexion permet de déterminer si Integration peut se connecter à un système externe. La fonction Tester la connexion doit renvoyer Vrai ou Faux pour indiquer le résultat.
Paramètre contextuel
La tâche Tester la connexion est fournie avec un paramètre "contexte".
Méthode
Paramètres
Type de retour
Description
getDataSource()
ai.dataSource
Renvoie la source de données active.
getCalendar()
ai.calendar
Renvoie
Adaptive Planning
Calendrier
Exemple
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; } }

Fonction d'import de la structure

La fonction Importer la structure permet de créer/mettre à jour le schéma de la source de données (c.-à-d. tables et colonnes) défini par un système externe. La fonction Importer la structure doit renvoyer un objet ai.structure.structurebuilder.
Paramètre contextuel
La fonction Importer la structure est fournie avec 1 paramètre, "contexte".
Méthode
Paramètres
Type de retour
Description
getDataSource()
ai.dataSource
Renvoie la source de données active.
getProgressManager()
ai.progressManager
Renvoie un objet qui peut être utilisé pour mettre à jour la valeur du pourcentage d'avancement de la tâche Importer la structure.
getStructureBuilder()
ai.structure.structurebuilder
Renvoie un objet utilisé pour créer la structure de la source de données - tables, colonnes, paramètres, etc.
getCalendar()
ai.calendar
Renvoie
Adaptive Planning
Calendrier
Exemple
function importStructure(context) { //getDataSource var dataSource=context.getDataSource(); // getStructureBuilder var builder = context.getStructureBuilder(); //getCalendar var calendar= context.getCalendar(); }
ai.progressManager
L'objet ai.progressManager permet à un utilisateur de définir manuellement le pourcentage d'avancement de la tâche qui exécute son script Importer la structure. L'exécution du script représente 70 % du pourcentage d'avancement global de la tâche. Par conséquent, les valeurs d'avancement définies via ai.progressManager sont dimensionnées pour représenter la progression de la tâche dans son ensemble. Exemple : si vous définissez le pourcentage d'avancement de ai.progressManager à 100 %, cela correspond à 70 % de la tâche en cours d'exécution, 50 % correspond à 35 % de la tâche en cours d'exécution, etc.
Fonctions
Méthode
Paramètres
Type de retour
Description
getProgress()
Nombre
Renvoie le pourcentage d'avancement du script tel que défini par l'utilisateur. Si l'utilisateur n'a pas précédemment défini le pourcentage d'avancement, cette fonction renvoie 0.
setProcess( value )
  • value : valeur numérique à laquelle définir le pourcentage d'avancement du script
Définit le pourcentage d'avancement du script. Cela fonctionne comme suit :
  • Seules les valeurs numériques sont acceptées, telles que 0, 10, 22,5 100, 110.
  • Les valeurs supérieures à 100 sont traitées comme des 100.
  • Les valeurs inférieures à la progression du script en cours sont ignorées. Exemple : appelez setProcess(50) suivi de setProcess(40). Le pourcentage d'avancement du script est alors de 50 %.
  • Tous les autres types de saisie pour 'valeur' n'auront aucun effet sur la progression du script.
Exemple
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
Fonctions
Méthode
Paramètres
Retours
Description
addTable(tableId)
  • tableId : chaîne d'identifiant unique de la table
ai.structure.editableTable
Crée et renvoie une nouvelle table pour la source de données.
Exemple
Permet de définir la structure des tables et des colonnes qui seront renseignées par les données.
function importStructure(context) { ........ //getStructureBuilder var builder = context.getStructureBuilder(); //Example addTable( tableId )-"Sample" var table = builder.addTable("Sample"); ....... }
ai.structure.editableTable
Fonctions
Méthode
Paramètres
Retours
Description
setDisplayName( displayName )
displayName : Valeur de chaîne pour définir la propriété du nom d'affichage de la table sur.
ai.structure.editableTable
Définit le nom d'affichage de la table.
AddColumn( columnId)
columnId : chaîne d'identifiant distant de la colonne
ai.structure.editableColumn
Crée et renvoie une nouvelle colonne enfant de la table.
addRequiredParameter(paramètreId )
parameterId : chaîne d'identifiant du paramètre
ai.structure.editableParameter
Crée et renvoie un nouveau paramètre obligatoire pour la table. Un paramètre affectable doit être défini comme valeur d'un paramètre obligatoire lorsque cette table est utilisée avec ImportData ou ImportStructure.
ai.structure.editableColumn
Fonctions
Méthode
Paramètres
Retours
Description
setDisplayName( value )
  • value : valeurs de chaîne pour définir la propriété displayName des colonnes
ai.structure.editableColumn
Définit le nom d'affichage de la colonne.
setDisplayOrder( value )
  • value : valeurs de chaîne pour définir la propriété displayOrder des colonnes sur
ai.structure.editableColumn
Définit l'ordre d'affichage de la colonne.
setIncludeByDefault( value )
  • value : Valeur booléenne pour définir la propriété des colonnes IsEnabled sur
ai.structure.editableColumn
Permet d'activer la colonne pour l'import de données.
setIncludeInKey( value )
  • value : valeur booléenne pour définir la propriété includeInkey des colonnes
ai.structure.editableColumn
Indique si la colonne fait partie de la clé de table.
setMandatoryForImports( value )
  • value : valeur booléenne pour indiquer si cette colonne est activée pour les imports de données par obligatoire
ai.structure.editableColumn
Définit la colonne pour qu'elle soit activée pour l'import de données obligatoire.
setNonFilterable( value )
  • value : Valeur booléenne pour définir la propriété nonFilterable des colonnes sur
ai.structure.editableColumn
Indique si la colonne peut être incluse dans une requête distante.
setRemoteColumnType( value )
  • value : Valeur de chaîne pour définir la propriété RemoteColumnType des colonnes
ai.structure.editableColumn
Définit le type de données distantes de la colonne, par exemple 'chaîne', 'entier', etc.
setTextColumnType( length )
  • profile : longueur maximum des valeurs que cette colonne peut contenir
ai.structure.editableColumn
La colonne devient une colonne texte.
setIntegerColumnType()
ai.structure.editableColumn
Change la colonne en colonne de nombre entier.
setFloatColumnType()
ai.structure.editableColumn
Change la colonne en une colonne à double précision.
setBooleanColumnType()
ai.structure.editableColumn
Change la colonne d'une colonne booléenne.
setDateTimeColumnType()
ai.structure.editableColumn
Fait de la colonne une colonne Date et heure.
ai.structure.editableParameter
Fonctions
Méthode
Paramètres
Retours
Description
setDisplayName( value )
  • value : Valeur de chaîne pour définir la propriété displayName des paramètres sur
Définit le nom d'affichage du paramètre.
setForDataImport( value )
  • value : valeur booléenne indiquant si le paramètre sera accessible dans un script ImportData
Active le paramètre pour l'import des données.
setTypePeriodRange()
Remplace le type du paramètre par une Plage de périodes
Exemple
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); .............. }

Fonction Importer des données

La fonction Importer des données permet d'importer des lignes depuis une source externe et de les importer dans des tables temporaires Integration. Le mécanisme d'import des lignes est l'objet ai.rowset, qui est fourni via le paramètre 'context' transféré dans la fonction Importer des données.
Paramètre contextuel
La fonction Importer des données est fournie avec un paramètre "contexte".
Méthode
Paramètres
Type de retour
Description
getRowset()
Génère un avertissement de dépréciation d'API dans les journaux une fois que le support a activé getRowset(ColumnIds) à votre demande avec la version 2021R1. La méthode getRowset() continue de fonctionner, mais ignore tous les paramètres.
ai.rowset
Renvoie l'objet d'ensemble de lignes auquel sont ajoutées les lignes. L'ensemble de lignes définit la table, les colonnes et MaxRows.
getRowset([columnIds])
Ouvrez un cas dans Workday Customer Center pour activer l'indicateur de fonctionnalité "
les services Cloud personnalisés lit le tableau de stockage par colonnes spécifiées
".
[Column Ids]
ai.rowset
Renvoie l'objet Ligne auquel sont ajoutées les lignes, dans l'ordre des colonnes que vous avez indiqué. L'ensemble de lignes définit la table, les colonnes et MaxRows.
getDataSource()
ai.dataSource
Renvoie la source de données active.
getCalendar()
ai.calendar
Renvoie
Adaptive Planning
Calendrier
Exemple
Dans cet exemple, nous supposons que la ligne contient une colonne Entier et une colonne Texte dans l'ordre.
function importData(context) { ........... var rowset = context.getRowset(); .......... var rowset= context.getRowset([ 'NAME', 'ID']); }
ai.rowset
L'objet d'ensemble de lignes est le mécanisme par lequel les "lignes" à l'intérieur du script utilisateur sont transportées dans la pile Integration. Un ensemble de lignes modélise la forme (noms de colonne et leurs types de données, maxRows et tableId) de la table sur laquelle un utilisateur exécute son script PreviewData ou ImportData.
Fonctions
Méthode
Paramètres
Type de retour
Description
addRow( cells )
Cellules :Array<Primive Types> Tableau de valeurs pour chaque colonne, dans l'ordre
Ajoute un tableau de valeurs de cellule sous forme de ligne à l'ensemble de lignes. Les valeurs de cellule doivent être un objet de type chaîne (peut être nul), numérique (entier fin ou décimal), booléen ou date valide. Chaque type de valeur de cellule doit correspondre à son type de données de colonne correspondant dans l'ordre défini par getColumnNames. Le nombre de valeurs de cellule doit correspondre au nombre de colonnes définies.
getTableId()
String
Renvoie l'identifiant de la table prévisualisée.
getMaxRows()
Integer
Renvoie le nombre maximum de lignes autorisées dans cet ensemble de lignes. 0 signifie inconnu, tel qu'il est utilisé par ImportData.
getColumns()
Array<ai.dataSource.table.column>
Renvoie les colonnes de table sélectionnées pour l'aperçu.
setSmarchParsingEnabled( val )
  • val : valeur booléenne indiquant si cette fonctionnalité doit être activée ou désactivée
Si possible, l'activation de ce paramètre analysera automatiquement chaque valeur de cellule de chaîne dans le type de données obligatoires des colonnes cible pendant la fonction addRow(). Cela évite à un utilisateur de devoir rechercher un type de données de colonnes cible et d'effectuer une analyse manuelle si le type de données de la valeur de la cellule actuelle ne correspond pas au type de données de colonnes cible. Ceci est particulièrement utile lorsque vous traitez avec des API tierces qui renvoient toutes les valeurs de ligne sous forme de chaînes via JSON ou XML, et que chaque valeur de cellule peut être correctement analysée en valeurs Integer, Float, Booléen ou DateTime.
getSmartParsingEnabled()
Boolean
Renvoie Vrai si ce paramètre est activé. La valeur par défaut est false (faux).
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); } } }

Fonction de prévisualisation des données

La fonction Aperçu des données est utilisée pour interroger un système externe afin de recueillir des lignes de données pour la table et les colonnes indiquées. Il est limité au nombre maximum de lignes que le système externe permet à un utilisateur de voir lors d'un aperçu dans ce système.
Paramètre contextuel
La fonction Aperçu des données est fournie avec un paramètre, 'contexte'.
Méthode
Paramètres
Type de retour
Description
getDataSource()
ai.dataSource
Renvoie la source de données active.
getRowset()
ai.rowset
Renvoie l'objet d'ensemble de lignes auquel sont ajoutées les lignes. L'ensemble de lignes définit la table, les colonnes et MaxRows.
getCalendar()
ai.calendar
Renvoie
Adaptive Planning
Calendrier
Exemple
Permet d'afficher un aperçu des données stockées dans la source 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); } } }

Exemple combiné de test de connexion, d'import et de prévisualisation de données

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

Fonction Exporter des données (chargeur Cloud personnalisé uniquement)

La fonction Exporter des données est utilisée pour exporter des lignes lorsque vous créez des scripts de chargeurs Cloud personnalisés . Le mécanisme d'exportation des lignes est le
ai.rowset
objet , qui est fourni via l'objet
context
Paramètre transféré dans la fonction d'export.
context.createTableReader()
renvoie un lecteur. Utiliser
reader.readRow()
pour lire les lignes de données de la table source.
reader.readRow()
renvoie les colonnes de données dans l'ordre par défaut. Si
context.createTableReader()
est appelé avec un tableau de codes de colonne, les colonnes sont organisées dans l'ordre des colonnes du paramètre.
Paramètre contextuel
La fonction Exporter des données est fournie avec un paramètre "contexte".
Méthode
Paramètres
Type de retour
Description
createTableReader()
tableau facultatif de noms de colonne de la table source
TableReader
Renvoie la source de données active. L'ordre des colonnes est identique à celui indiqué dans le paramètre.
Objet TableReader
Méthode
Paramètres
Type de retour
Description
readRow()
tableau de valeurs
Un tableau de valeurs de la source de données.
Exemple
// 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)); } }