Ir para o conteúdo principal
Adaptive Planning
Última atualização: 2023-06-23
Funções do Adaptive Planning

Funções do Adaptive Planning

Testar função de conexão

A função Testar conexão é usada para determinar se a Integração pode se conectar a um sistema externo. A função Testar conexão deve retornar verdadeiro ou falso, indicando o resultado.
Parâmetro de contexto
A conexão de teste é fornecida com um parâmetro, "contexto".
Método
Parâmetros
Tipo de retorno
Descrição
getDataSource()
ai.dataSource
Retorna a fonte de dados ativa.
getCalendar()
ai.calendar
Retorna o
Adaptive Planning
Calendário
Exemplo
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; } }

Função de importação de estrutura

A função Importar estrutura é usada para criar/atualizar o esquema da fonte de dados (ou seja, tabelas e colunas) definido por um sistema externo. A função Importar estrutura deve retornar um objeto ai.structura.estruturaBuilder.
Parâmetro de contexto
A função Importar estrutura é fornecida com um parâmetro, "contexto".
Método
Parâmetros
Tipo de retorno
Descrição
getDataSource()
ai.dataSource
Retorna a fonte de dados ativa.
getProgressManager()
ai.progressManager
Retorna um objeto que pode ser usado para atualizar o valor percentual de conclusão da tarefa Importar estrutura.
getStructureBuilder()
ai.structure.structureBuilder
Retorna um objeto que é usado para criar a estrutura da fonte de dados - tabelas, colunas, parâmetros etc.
getCalendar()
ai.calendar
Retorna o
Adaptive Planning
Calendário
Exemplo
function importStructure(context) { //getDataSource var dataSource=context.getDataSource(); // getStructureBuilder var builder = context.getStructureBuilder(); //getCalendar var calendar= context.getCalendar(); }
ai.progressManager
O objeto ai.progressManager permite que um usuário defina manualmente o percentual de conclusão da tarefa que está executando o script de importação de estrutura. A execução do script é responsável por 70% do percentual geral de conclusão da tarefa. Portanto, os valores de progresso definidos por meio de ai.progressManager são dimensionados para representar o progresso da tarefa geral. Exemplo: definir o percentual de conclusão de ai.progressManager como 100% equivaleria a 70% da tarefa em execução, 50% equivaleria a 35% da tarefa em execução e assim por diante.
Funções
Método
Parâmetros
Tipo de retorno
Descrição
getProgress()
Número
Retorna o percentual de conclusão do script conforme definido pelo usuário. Se o usuário não definiu anteriormente o percentual de conclusão, essa função retornaria 0.
setProgress( value )
  • value: valor numérico para definir o percentual de conclusão do script como
Define o percentual de conclusão do script. Isso funciona da seguinte forma:
  • Somente valores numéricos são aceitos, como 0, 10, 22,5 100, 110.
  • Valores maiores que 100 são tratados como 100.
  • Valores inferiores ao andamento do script atual são ignorados. Exemplo: chame setProgress(50) seguido por setProgress(40). Isso resulta no percentual de conclusão do script em 50%.
  • Todos os outros tipos de entrada para "valor" não terão efeito no andamento do script,
Exemplo
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
Funções
Método
Parâmetros
Devoluções
Descrição
addTable( tableId )
  • tableId: cadeia de caracteres de ID exclusiva da tabela
ai.structure.editableTable
Cria e retorna uma nova tabela para a fonte de dados.
Exemplo
Permite definir as tabelas e a estrutura de colunas que serão preenchidas por dados.
function importStructure(context) { ........ //getStructureBuilder var builder = context.getStructureBuilder(); //Example addTable( tableId )-"Sample" var table = builder.addTable("Sample"); ....... }
ai.structure.editableTable
Funções
Método
Parâmetros
Devoluções
Descrição
setDisplayName( displayName )
displayName : valor da cadeia de caracteres para definir a propriedade de nome de exibição da tabela.
ai.structure.editableTable
Define o nome de exibição da tabela.
addColumn( columnId )
columnId: cadeia de caracteres RemoteId da coluna
ai.structure.editableColumn
Cria e retorna uma nova coluna filho da tabela.
addRequiredParameter( parameterId )
ParameterId: ID da cadeia de caracteres do parâmetro
ai.structure.editableParameter
Cria e retorna um novo parâmetro obrigatório para a tabela. Um parâmetro atribuível deve ser definido como o valor de um Parâmetro obrigatório quando essa tabela é usada como parte de ImportData ou ImportStructure.
ai.structure.editableColumn
Funções
Método
Parâmetros
Devoluções
Descrição
setDisplayName( value )
  • value: valor da cadeia de caracteres para definir a propriedade displayName das colunas como
ai.structure.editableColumn
Define o nome de exibição da coluna.
setDisplayOrder( value )
  • value: valor da cadeia de caracteres para definir a propriedade displayOrder das colunas como
ai.structure.editableColumn
Define a ordem de exibição da coluna.
setIncludeByDefault( value )
  • value: valor booliano para definir a propriedade IsEnabled das colunas como
ai.structure.editableColumn
Define a coluna a ser habilitada para importação de dados.
setIncludeInKey( value )
  • value: valor booliano para definir a propriedade includeInKey das colunas como
ai.structure.editableColumn
Indica se a coluna faz parte da chave da tabela.
setMandatoryForImports( value )
  • value: valor booliano para indicar se esta coluna está habilitada para importações de dados por
ai.structure.editableColumn
Define a coluna a ser habilitada para importação de dados como obrigatória.
setNonFilterable( value )
  • value: valor booliano para definir a propriedade nonFilterable das colunas como
ai.structure.editableColumn
Indica se a coluna pode ser incluída em uma consulta remota.
setRemoteColumnType( value )
  • value: valor da cadeia de caracteres para definir a propriedade remotaColumnType das colunas como
ai.structure.editableColumn
Define o tipo de dados remotos da coluna, por exemplo, "cadeia de caracteres", "inteiro" etc.
setTextColumnType( length )
  • length: número inteiro - comprimento máximo dos valores que esta coluna pode conter
ai.structure.editableColumn
Torna a coluna uma coluna de texto.
setIntegerColumnType()
ai.structure.editableColumn
Torna a coluna uma coluna de números inteiros.
setFloatColumnType()
ai.structure.editableColumn
Torna a coluna uma coluna de precisão dupla.
setBooleanColumnType()
ai.structure.editableColumn
Torna a coluna uma coluna booliana.
setDateTimeColumnType()
ai.structure.editableColumn
Torna a coluna uma coluna de data e hora.
ai.structure.editableParameter
Funções
Método
Parâmetros
Devoluções
Descrição
setDisplayName( value )
  • value: valor da cadeia de caracteres para definir a propriedade displayName dos parâmetros como
Define o nome de exibição do parâmetro.
setForDataImport( value )
  • value: valor booliano que indica se o parâmetro estará acessível em um script ImportData
Habilita o parâmetro para importação de dados.
setTypePeriodRange()
Altera o tipo do parâmetro para um Intervalo de períodos
Exemplo
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); .............. }

Função de importação de dados

A função Importar dados é usada para trazer linhas de uma fonte externa e importá-las para as tabelas de preparação da Integração. O mecanismo para importar linhas é o objeto ai.rowset, que é fornecido por meio do parâmetro "context" transmitido para a função Import Data.
Parâmetro de contexto
A função Importar dados é fornecida com um parâmetro, "contexto".
Método
Parâmetros
Tipo de retorno
Descrição
getRowset()
Gera um aviso de suspensão de uso da API nos registros após a habilitação do suporte para getRowset(ColumnIds) conforme sua solicitação com a versão 2021R1. O método getRowset() continuará a funcionar, mas ignorará todos os parâmetros.
ai.rowset
Retorna o objeto Rowset ao qual as linhas são adicionadas. O Rowset define a Tabela, Colunas e MaxRows.
getRowset([columnIds])
Abra um caso no Workday Customer Center para habilitar o indicador da funcionalidade "
serviços em nuvem personalizados com leituras da tabela de preparação por colunas especificadas
".
[Column Ids]
ai.rowset
Retorna o objeto Rowset ao qual as linhas são adicionadas, na ordem das colunas especificada. O Rowset define a Tabela, Colunas e MaxRows.
getDataSource()
ai.dataSource
Retorna a fonte de dados ativa.
getCalendar()
ai.calendar
Retorna o
Adaptive Planning
Calendário
Exemplo
Este exemplo pressupõe que o conjunto de linhas contém uma coluna de Número inteiro e uma coluna de Texto em ordem.
function importData(context) { ........... var rowset = context.getRowset(); .......... var rowset= context.getRowset([ 'NAME', 'ID']); }
ai.rowset
O objeto Rowset é o mecanismo pelo qual as "linhas" dentro do script de um usuário são transportadas para a pilha de integrações. Um conjunto de linhas modela a forma (nomes das colunas e seus tipos de dados, maxRows e tableId) da tabela na qual um usuário está executando o script PreviewData ou ImportData.
Funções
Método
Parâmetros
Tipo de retorno
Descrição
addRow( cells )
cells : Array<Primitive Types> Matriz de valores para cada coluna, em ordem
Adiciona uma matriz de valores de célula como uma linha ao Conjunto de linhas. Os valores de célula devem ser um objeto String (pode ser nulo), Number (inteiro finito ou decimal), booliano ou de data válido. Cada tipo de valor de célula deve corresponder ao tipo de dados de coluna correspondente na ordem definida por getColumnNames. O número de valores de célula deve corresponder ao número de colunas definidas.
getTableId()
Cadeia de caracteres
Retorna a ID da tabela que está sendo pré-visualizada.
getMaxRows()
Número inteiro
Retorna o número máximo de linhas permitidas neste Rowset. 0 significa desconhecido, conforme usado por ImportData.
getColumns()
Array<ai.dataSource.table.column>
Retorna as colunas da tabela selecionadas para a pré-visualização.
setSmartParsingEnabled(val)
  • val: valor booliano que indica se essa funcionalidade deve ser ativada ou desativada
Se possível, habilitar essa configuração analisará cada valor de célula de cadeia de caracteres nos tipos de dados obrigatórios das colunas de destino automaticamente durante a função addRow(). Isso evita que o usuário tenha que consultar o tipo de dados das colunas de destino e fazer uma análise manual se o tipo de dados do valor da célula atual não corresponder ao tipo de dados das colunas de destino. Isso é especialmente útil quando se lida com APIs de terceiros que retornam todos os valores de linha como cadeias de caracteres via JSON ou XML, e cada valor de célula pode ser analisado com êxito em valores inteiros, ponto flutuante, booliano ou de data e hora.
getSmartParsingEnabled()
Booliano
Retorna verdadeiro se essa configuração está habilitada. O valor por padrão é 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); } } }

Função de dados de pré-visualização

A função Preview Data é usada para consultar um sistema externo em busca de linhas de dados para a tabela e colunas especificadas. Ele é limitado pelo número máximo de linhas que o sistema externo permite que um usuário veja durante uma pré-visualização nesse sistema.
Parâmetro de contexto
A função de pré-visualização de dados é fornecida com um parâmetro, "contexto".
Método
Parâmetros
Tipo de retorno
Descrição
getDataSource()
ai.dataSource
Retorna a fonte de dados ativa.
getRowset()
ai.rowset
Retorna o objeto Rowset ao qual as linhas são adicionadas. O Rowset define a Tabela, Colunas e MaxRows.
getCalendar()
ai.calendar
Retorna o
Adaptive Planning
Calendário
Exemplo
Permite pré-visualizar os dados armazenados na fonte em nuvem.
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); } } }

Exemplo de combinação de teste de conexão, importação e pré-visualização de dados

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

Função Exportar dados (somente no carregador em nuvem personalizado)

A função Exportar dados é usada para exportar linhas quando você cria scripts de carregadores em nuvem personalizados . O mecanismo para exportar linhas é o
ai.rowset
O objeto, que é fornecido por meio do
context
O parâmetro é passado para a função de exportação.
context.createTableReader()
retorna um leitor. Uso
reader.readRow()
para ler as linhas de dados da tabela de origem.
reader.readRow()
retorna colunas de dados na ordem por padrão. Se
context.createTableReader()
é chamado com uma matriz de IDs de coluna, as colunas são organizadas pela ordem das colunas no parâmetro.
Parâmetro de contexto
A função Exportar dados é fornecida com um parâmetro, "contexto".
Método
Parâmetros
Tipo de retorno
Descrição
createTableReader()
matriz opcional de nomes de colunas da tabela de origem
TableReader
Retorna a fonte de dados ativa. A ordem das colunas é igual à ordem fornecida no parâmetro.
Objeto TableReader
Método
Parâmetros
Tipo de retorno
Descrição
readRow()
matriz de valores
Uma matriz de valores da fonte de dados.
Exemplo
// 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)); } }