Saltar al contenido principal
Adaptive Planning
Última actualización: 2023-06-23
Funciones de Adaptive Planning

Funciones de Adaptive Planning

Probar función de conexión

La función Probar conexión se utiliza para determinar si la integración puede conectarse a un sistema externo. La función Probar conexión debe devolver verdadero o falso para indicar el resultado.
Parámetro de contexto
La conexión de prueba se proporciona con un parámetro, "context".
Método
Parámetros
Tipo de valor devuelto
Descripción
getDataSource()
ai.dataSource
Devuelve el origen de datos activo.
getCalendar()
ai.calendar
Devuelve el
Adaptive Planning
Calendario
Ejemplo
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; } }

Importar función de estructura

La función Importar estructura se utiliza para crear o actualizar el esquema del origen de datos (es decir, tablas y columnas) definido por un sistema externo. La función Importar estructura debe devolver un objeto ai.structure.structureBuilder.
Parámetro de contexto
La función Importar estructura se proporciona con un parámetro, "contexto".
Método
Parámetros
Tipo de valor devuelto
Descripción
getDataSource()
ai.dataSource
Devuelve el origen de datos activo.
getProgressManager()
ai.progressManager
Devuelve un objeto que se puede utilizar para actualizar el valor de porcentaje completado de la tarea Importar estructura.
getStructureBuilder()
ai.structure.structureBuilder
Devuelve un objeto que se utiliza para crear la estructura del origen de datos: tablas, columnas, parámetros, etc.
getCalendar()
ai.calendar
Devuelve el
Adaptive Planning
Calendario
Ejemplo
function importStructure(context) { //getDataSource var dataSource=context.getDataSource(); // getStructureBuilder var builder = context.getStructureBuilder(); //getCalendar var calendar= context.getCalendar(); }
ai.progressManager
El objeto ai.progressManager permite a un usuario definir manualmente el porcentaje completado de la tarea que ejecuta su secuencia de comandos Importar estructura. La ejecución de la secuencia de comandos representa el 70 % del porcentaje total de tareas completadas. Por lo tanto, los valores de progreso definidos mediante ai.progressManager se escalan para representar el progreso de la tarea global. Ejemplo: establecer el porcentaje completado de ai.progressManager en 100 % equivaldría al 70 % de la tarea en ejecución, el 50 % equivaldría al 35 % de la tarea en ejecución, etc.
Funciones
Método
Parámetros
Tipo de valor devuelto
Descripción
getProgress()
Número
Devuelve el porcentaje completado de la secuencia de comandos definido por el usuario. Si el usuario no ha definido previamente el porcentaje completado, esta función devolverá 0.
setProgress( value )
  • value: Valor numérico para establecer el porcentaje de secuencia de comandos completado
Establece el porcentaje de finalización de la secuencia de comandos. Esto funciona de la siguiente manera:
  • Solo se aceptan valores numéricos como 0, 10, 22,5, 100 y 110.
  • Los valores superiores a 100 se tratan como 100.
  • Se ignoran los valores inferiores al progreso de la secuencia de comandos actual. Ejemplo: llame a setProgress(50) seguido de setProgress(40). Esto da como resultado que el porcentaje de secuencia de comandos se complete en un 50 %.
  • El resto de tipos de entrada para "valor" no afectarán al progreso de la secuencia de comandos.
Ejemplo
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
Funciones
Método
Parámetros
Devoluciones
Descripción
addTable( tableId )
  • tableId : ID exclusivo de cadena de la tabla
ai.structure.editableTable
Crea y devuelve una nueva tabla para el origen de datos.
Ejemplo
Permite definir las tablas y la estructura de columnas que se rellenarán con datos.
function importStructure(context) { ........ //getStructureBuilder var builder = context.getStructureBuilder(); //Example addTable( tableId )-"Sample" var table = builder.addTable("Sample"); ....... }
ai.structure.editableTable
Funciones
Método
Parámetros
Devoluciones
Descripción
setDisplayName( displayName )
displayName : valor de cadena en el que establecer la propiedad de nombre de visualización de la tabla.
ai.structure.editableTable
Establece el nombre de visualización de la tabla.
addColumn( columnId )
columnId : cadena RemoteId de la columna
ai.structure.editableColumn
Crea y devuelve una nueva columna secundaria de la tabla.
addRequiredParameter( parámetroId )
ParameterId : ID de cadena del parámetro
ai.structure.editableParameter
Crea y devuelve un nuevo parámetro obligatorio para la tabla. Se debe establecer un parámetro asignable como valor de Parámetro obligatorio cuando esta tabla se utiliza como parte de ImportData o ImportStructure.
ai.structure.editableColumn
Funciones
Método
Parámetros
Devoluciones
Descripción
setDisplayName( value )
  • value : Valor de cadena para establecer la propiedad displayName de las columnas en
ai.structure.editableColumn
Establece el nombre de visualización de la columna.
setDisplayOrder( value )
  • value : Valor de cadena para establecer la propiedad displayOrder de las columnas en
ai.structure.editableColumn
Establece el orden de visualización de la columna.
setIncludeByDefault( value )
  • value : valor booleano para establecer la propiedad IsEnabled de las columnas en
ai.structure.editableColumn
Establece la columna que se activará para la importación de datos.
setIncludeInKey( value )
  • value : valor booleano para establecer la propiedad includeInKey de las columnas en
ai.structure.editableColumn
Indica si la columna forma parte de la clave de tabla.
setMandatoryForImports( value )
  • value : valor booleano para indicar si esta columna está activada para importaciones de datos por
ai.structure.editableColumn
Establece la columna que se activará para la importación de datos de forma obligatoria.
setNonFilterable( value )
  • value : valor booleano para establecer la propiedad nonFilterable de las columnas en
ai.structure.editableColumn
Indica si la columna se puede incluir en una consulta remota.
setRemoteColumnType( value )
  • value : valor de cadena para establecer la propiedad remoteColumnType de las columnas en
ai.structure.editableColumn
Establece el tipo de datos remotos de la columna, por ejemplo, "cadena", "entero", etc.
setTextColumnType( length )
  • length : longitud máxima de valores enteros que puede contener esta columna
ai.structure.editableColumn
Convierte la columna en una columna de texto.
setIntegerColumnType()
ai.structure.editableColumn
Convierte la columna en una columna de enteros.
setFloatColumnType()
ai.structure.editableColumn
Convierte la columna en una columna de doble precisión.
setBooleanColumnType()
ai.structure.editableColumn
Convierte la columna en una columna booleana.
setDateTimeColumnType()
ai.structure.editableColumn
Convierte la columna en una columna de fecha y hora.
ai.structure.editableParameter
Funciones
Método
Parámetros
Devoluciones
Descripción
setDisplayName( value )
  • value : Valor de cadena para establecer la propiedad displayName de los parámetros en
Establece el nombre de visualización del parámetro.
setForDataImport( value )
  • value : valor booleano que indica si se podrá acceder al parámetro en una secuencia de comandos de ImportData
Activa el parámetro para la importación de datos.
setTypePeriodRange()
Cambia el tipo del parámetro a un rango de periodo
Ejemplo
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); .............. }

Función de importación de datos

La función Importar datos se utiliza para traer filas de un origen externo e importarlas a tablas de almacenamiento provisional de integración. El mecanismo para importar filas es el objeto ai.rowset, que se proporciona a través del parámetro "context" que se pasa a la función Import Data.
Parámetro de contexto
La función Import Data se proporciona con un parámetro, "context".
Método
Parámetros
Tipo de valor devuelto
Descripción
getRowset()
Genera un aviso de desactivación de API en los registros después de que el servicio de asistencia técnica active getRowset(ColumnIds) a petición suya con la versión 2021R1. El método getRowset() seguirá funcionando, pero ignorará los parámetros.
ai.rowset
Devuelve el objeto Rowset al que se añaden las filas. El conjunto de filas define la tabla, las columnas y MaxRows.
getRowset([columnIds])
Abra un caso en el Centro de atención al cliente de Workday para activar el indicador de función "los
servicios en la nube personalizados leen la tabla de almacenamiento provisional por columnas especificadas
".
[Column Ids]
ai.rowset
Devuelve el objeto Rowset al que se añaden las filas, en el orden de columnas especificado. El conjunto de filas define la tabla, las columnas y MaxRows.
getDataSource()
ai.dataSource
Devuelve el origen de datos activo.
getCalendar()
ai.calendar
Devuelve el
Adaptive Planning
Calendario
Ejemplo
En este ejemplo se supone que el conjunto de filas contiene una columna Integer y una columna Text en orden.
function importData(context) { ........... var rowset = context.getRowset(); .......... var rowset= context.getRowset([ 'NAME', 'ID']); }
ai.rowset
El objeto Rowset es el mecanismo mediante el cual las "filas" dentro de la secuencia de comandos de un usuario se transportan a la pila de integración. Un Rowset modela la forma (nombres de columna y sus tipos de datos, maxRows y tableId) de la tabla en la que un usuario ejecuta su secuencia de comandos PreviewData o ImportData.
Funciones
Método
Parámetros
Tipo de valor devuelto
Descripción
addRow(celdas)
celdas : Array<Primitive Types> Matriz de valores para cada columna, en orden
Añade una matriz de valores de celda como una fila al conjunto de filas. Los valores de celda deben ser un objeto válido de cadena (puede ser nulo), numérico (entero finito o decimal), booleano o de fecha. Cada tipo de valor de celda debe coincidir con su tipo de datos de columna correspondiente en el orden definido por getColumnNames. El número de valores de celda debe coincidir con el número de columnas definidas.
getTableId()
Cadena
Devuelve el ID de tabla de la tabla de la que se está obteniendo una vista previa.
getMaxRows()
Valor entero
Devuelve el número máximo de filas permitidas en este conjunto de filas. 0 significa desconocido, tal como lo utiliza ImportData.
getColumns()
Array<ai.dataSource.table.column>
Devuelve las columnas de la tabla seleccionadas para la vista previa.
setSmartParsingEnabled( val )
  • val : valor booleano que indica si se debe activar o desactivar esta función.
Si es posible, al activar este parámetro se analizará automáticamente cada valor de celda de cadena en el tipo de datos obligatorio de las columnas de destino durante la función addRow(). Esto evita que el usuario tenga que buscar el tipo de datos de las columnas de destino y realizar un análisis manual si el tipo de datos del valor de la celda actual no coincide con el tipo de datos de las columnas de destino. Esto es especialmente útil cuando se trata de API de terceros que devuelven todos los valores de fila como cadenas a través de JSON o XML, y cada valor de celda se puede analizar correctamente en valores Integer, Float, Boolean o DateTime.
getSmartParsingEnabled()
Booleano
Devuelve verdadero si este parámetro está activado. El valor por defecto es falso.
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); } } }

Función de vista previa de datos

La función Vista previa de datos se utiliza para consultar un sistema externo en busca de filas de datos para la tabla y las columnas especificadas. Está limitado por el máximo de filas que el sistema externo permite ver a un usuario durante una vista previa en ese sistema.
Parámetro de contexto
La función de vista previa de datos se proporciona con un parámetro, "context".
Método
Parámetros
Tipo de valor devuelto
Descripción
getDataSource()
ai.dataSource
Devuelve el origen de datos activo.
getRowset()
ai.rowset
Devuelve el objeto Rowset al que se añaden las filas. El conjunto de filas define la tabla, las columnas y MaxRows.
getCalendar()
ai.calendar
Devuelve el
Adaptive Planning
Calendario
Ejemplo
Ofrece la posibilidad de obtener una vista previa de los datos almacenados en el origen de la nube.
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); } } }

Ejemplo combinado de prueba de conexión, importación y vista previa de datos

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

Función de exportación de datos (solo cargador en la nube personalizada)

La función Exportar datos se utiliza para exportar filas al crear secuencias de comandos de creación de cargadores en la nube personalizados . El mecanismo para exportar filas es el
ai.rowset
objeto, que se proporciona a través del
context
parámetro pasado a la función de exportación.
context.createTableReader()
devuelve un lector. Utilizar
reader.readRow()
para leer las filas de datos de la tabla de origen.
reader.readRow()
devuelve las columnas de datos en el orden por defecto. Si
context.createTableReader()
se llama con una matriz de IDs de columna, las columnas se organizan por el orden de las columnas en el parámetro.
Parámetro de contexto
La función de exportación de datos se proporciona con un parámetro, "context".
Método
Parámetros
Tipo de valor devuelto
Descripción
createTableReader()
matriz opcional de nombres de columna de tabla de origen
TableReader
Devuelve el origen de datos activo. El orden de las columnas es el mismo que el proporcionado en el parámetro.
Objeto TableReader
Método
Parámetros
Tipo de valor devuelto
Descripción
readRow()
matriz de valores
Una matriz de valores del origen de datos.
Ejemplo
// 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)); } }