Passer au contenu principal
Adaptive Planning
Fonctions Adaptive Planning

Fonctions Adaptive Planning

Tester une fonction de connexion

La fonction Tester la connexion est utilisée pour déterminer si l’intégration peut se connecter à un système externe. La fonction Tester la connexion doit renvoyer le résultat Vrai ou Faux.
Paramètre contextuel
La connexion Tester est fournie avec un paramètre, 'context'.
Méthode
Paramètres
Type de retour
Description
getDataSource()
ai.dataSource
Renvoie la source de données active.
getCalendar()
ai.calendar
Retourne
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; } }

Importer la fonction de la structure

La fonction Importer la structure est utilisée pour créer/mettre à jour le schéma de la source de données (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 un paramètre, « context ».
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’achèvement de la tâche Importer la structure.
getStructureBuilder()
ai.structure.structureBuilder
Renvoie un objet utilisé pour créer la structure de source de données - tables, colonnes, paramètres, etc.
getCalendar()
ai.calendar
Retourne
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’achèvement de la tâche qui exécute son script Importer la structure. L’exécution des scripts représente 70 % du pourcentage d’achèvement global de la tâche. Par conséquent, les valeurs de progression définies par l’entremise de ai.progressManager sont mises à l’échelle pour représenter la progression de la tâche globale. Exemple : définir le pourcentage d’achèvement de ai.progressManager à 100 % équivaut à 70 % de la tâche en cours d’exécution, 50 % équivalant à 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’achèvement du script tel que défini pour l’utilisateur. Si l’utilisateur n’a pas défini précédemment le pourcentage d’achèvement, cette fonction renverrait 0.
setProgress( value)
  • value: valeur numérique pour définir le pourcentage d’achèvement du script à
Définit le pourcentage d’achèvement du script. Cela fonctionne comme suit :
  • Seules les valeurs numériques telles que 0, 10, 22,5 100, 110 sont acceptées.
  • Les valeurs supérieures à 100 sont traitées comme 100.
  • Les valeurs inférieures à la progression actuelle du script sont ignorées. Exemple : appelez setProgress(50) suivi de setProgress(40). Cela donne un pourcentage d’achèvement du script à 50 %.
  • Tous les autres types d'entrées 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 : Identifiant unique de la chaîne de la table
ai.structure.editableTable
Crée et renvoie une nouvelle table pour la source de données.
Exemple
Offre la possibilité de définir les tables et la structure de colonnes qui seront remplies 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é de nom d’affichage du tableau à.
ai.structure.editableTable
Définit le nom d'affichage du tableau.
addColumn( columnId )
columnId : Chaîne RemoteId de la colonne
ai.structure.editableColumn
Crée et retourne une nouvelle colonne enfant de la table.
addRequiredParater( parentId )
paramétrId : Identifiant de chaîne 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 en tant que valeur d'un paramètre obligatoire lorsque cette table est utilisée dans le cadre de ImportData ou ImportStructure.
ai.structure.editableColumn
Fonctions
Méthode
Paramètres
Retours
Description
setDisplayName( value)
  • value : valeur 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 : valeur de chaîne pour définir la propriété displayOrder des colonnes à
ai.structure.editableColumn
Définit l'ordre d'affichage de la colonne.
setIncludeByDefault( value)
  • value : Booléen pour définir la propriété IsEnabled des colonnes à
ai.structure.editableColumn
Définit la colonne à activer pour l'importation 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 la table.
setMandatoryForImports( value)
  • value : Valeur booléenne pour indiquer si cette colonne est activée pour les importations de données par Obligatoire
ai.structure.editableColumn
Définit la colonne à activer pour l'importation de données par 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 interrogation distante.
setRemoteColumnType( value )
  • value : String Value 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', 'nombre entier', etc.
setTextColumnType( length )
  • longueur : longueur entière maximum des valeurs que cette colonne peut contenir
ai.structure.editableColumn
Fait de la colonne une colonne de texte.
setIntegerColumnType()
ai.structure.editableColumn
Fait de la colonne une colonne d'entier.
setFloatColumnType()
ai.structure.editableColumn
Fait de la colonne une colonne de double précision.
setBooleanColumnType()
ai.structure.editableColumn
Fait de la colonne une colonne Booléen.
setDateTimeColumnType()
ai.structure.editableColumn
Fait de la colonne une colonne de date et d’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 à
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 un paramètre pour l'importation de données.
setTypePeriodRange()
Remplace le type du paramètre par 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 d'importation de données

La fonction Importer des données est utilisée pour importer des rangées d’une source externe et les importer dans des tables intermédiaires Integration. Le mécanisme d’importation des rangées est l’objet ai.rowset, fourni par l’entremise du paramètre ’context’ passé dans la fonction Import Data.
Paramètre contextuel
La fonction Importer des données est fournie avec un paramètre, « context ».
Méthode
Paramètres
Type de retour
Description
getRowset()
Génère un avertissement de dépréciation de l’API dans les journaux après que le soutien a activé GetRowset(ColumnIds) à votre demande avec la version 2021R1. La méthode getRowset() continuera de fonctionner, mais ignorera tous les paramètres.
ai.rowset
Renvoie l’objet Rowset auquel les rangées sont ajoutées. L'ensemble de rangées définit la table, les colonnes et MaxRows.
getRowset([columnIds])
Ouvrez un cas dans l’espace clients Workday pour activer l’
indicateur de fonctionnalité «  voir les services infonuagiques personnalisés en fonction de colonnes précisées
 ».
[Column IDs]
ai.rowset
Renvoie l’objet Rowset auquel les rangées sont ajoutées, dans l’ordre des colonnes que vous avez indiqué. L'ensemble de rangées définit la table, les colonnes et MaxRows.
getDataSource()
ai.dataSource
Renvoie la source de données active.
getCalendar()
ai.calendar
Retourne
Adaptive Planning
Calendrier
Exemple
Cet exemple suppose que l’ensemble de rangées 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 Rowset est le mécanisme par lequel les « rangées » d’un script d’utilisateurs sont transportées dans la pile Integration. Un Rowset modélise la forme (noms des colonnes et leurs types de données, maxRows et tableId) de la table sur laquelle un utilisateur exécute son script AperçuData ou ImportData.
Fonctions
Méthode
Paramètres
Type de retour
Description
addRow( cells )
cells : Array<Primive Types> Tableau de valeurs pour chaque colonne, par ordre
Ajoute un tableau de valeurs de cellules comme rangée à l’ensemble de rangées. Les valeurs de cellules doivent être des objets de type Chaîne (peut être nulle), Nombre (Entier ou Décimale), Booléen ou Date valides. Chaque type de valeur de cellule doit correspondre au 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éfini.
getTableId()
Chaîne
Renvoie l'identifiant de la table en cours d'aperçu.
getMaxRows()
Entier
Renvoie le nombre maximum de rangées autorisé dans cet ensemble de rangées. 0 signifie des valeurs inconnues, telles qu’elles sont utilisées par ImportData.
getColumns()
Array<ai.dataSource.table.column>
Renvoie les colonnes de table sélectionnées pour l’aperçu.
setSmarParsingEnabled( val )
  • val : Valeur booléenne indiquant s'il faut activer ou désactiver cette fonction
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 cibles pendant l’exécution de la fonction addRow(). Cela évite à un utilisateur de rechercher un type de données de colonnes cibles 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 des colonnes cibles. Cela est particulièrement utile lorsqu’il s’agit d’API tierce qui renvoie toutes les valeurs de rangée sous forme de chaînes via JSON ou XML, et chaque valeur de cellule peut être analysée avec succès en valeurs Entier, Flottant, Booléen ou Date et heure.
getSmartParsingEnabled()
Booléen
Renvoie la valeur Vrai si ce paramètre est activé. La valeur par défaut est 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); } } }

Aperçu de la fonction de données

La fonction Aperçu des données est utilisée pour interroger un système externe au sujet de lignes de données pour la table et les colonnes spécifiées. Elle est limitée par le nombre maximum de rangées 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, « context ».
Méthode
Paramètres
Type de retour
Description
getDataSource()
ai.dataSource
Renvoie la source de données active.
getRowset()
ai.rowset
Renvoie l’objet Rowset auquel les rangées sont ajoutées. L'ensemble de rangées définit la table, les colonnes et MaxRows.
getCalendar()
ai.calendar
Retourne
Adaptive Planning
Calendrier
Exemple
Permet d’afficher un aperçu des données stockées dans la source infonuagique.
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 données de test de connexion, d’importation et d’aperçu

//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 d’exportation de données (chargeur infonuagique personnalisé uniquement)

La fonction Exporter des données est utilisée pour exporter des rangées lorsque vous créez des scripts de chargeurs infonuagiques personnalisés . Le mécanisme d’exportation des rangées est le suivant
ai.rowset
objet, fourni par l’entremise de
context
paramètre transmis à la fonction d'exportation.
context.createTableReader()
renvoie un lecteur. Utilisation
reader.readRow()
pour lire les rangées 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ée avec un tableau d’identifiants de colonnes, puis les colonnes sont classées selon l’ordre des colonnes dans le paramètre.
Paramètre contextuel
La fonction Export Data est fournie avec un paramètre, 'context'.
Méthode
Paramètres
Type de retour
Description
createTableReader()
tableau facultatif de noms de colonnes de table source
TableReader
Renvoie la source de données active. L’ordre des colonnes est le même que celui fourni dans le paramètre.
Objet TableTexte
Méthode
Paramètres
Type de retour
Description
readRow()
tableau de valeurs
Un tableau de valeurs provenant 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)); } }