Ir para o conteúdo principal
Adaptive Planning
Última atualização: 2023-06-23
Conceito: design

Conceito: design

A API da fonte de dados em nuvem personalizada foi projetada para ajudar o operador de integração a se conectar à fonte de dados, criar objetos dentro da fonte de dados, analisar XML, converter datas e utilizar itens com frequência ao criar uma fonte de dados.

Namespaces

O mecanismo JavaScript fornece acesso ao
Adaptive Planning
Integração por meio de namespaces "adaptativos" ou "ai" (
Adaptive Planning
) namespace (Alias). É semelhante às conhecidas bibliotecas JavaScript, como a jQuery (https://jquery.com/).
// JavaScript short namespace example. ai.log.logError('this is a log'); // JavaScript long namespace example. adaptive.log.logError('this is a log');
Abaixo do namespace raiz "
ai
", várias funções principais são expostas para permitir que o JavaScript interaja com a Internet e o
Adaptive Planning
Funcionalidades do Discovery/Integração Essas APIs JavaScript públicas são modeladas usando APIs Node.js (https://nodejs.org/) como um guia.

Funções

As funções obtêm e definem dados para tornar a API consistente, proporcionam encapsulamento e permitem explicitar o set e o get. Também proporcionam o encapsulamento de objetos da linguagem C# para expor somente as funcionalidades da linguagem JavaScript, evitando assim, ultrapassar a fronteira entre a linguagem JavaScript e a linguagem C# para melhorar o desempenho. Os gets têm como prefixo o termo get, e os sets têm como prefixo o termo set.
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Contexto das funções

Cada função chamada por uma fonte de dados em nuvem personalizada usa um objeto de contexto. O contexto contém objetos somente leitura para ajudar no processamento.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
O contexto é composto de objetos transferidos da linguagem C#. Para melhorar o desempenho, evitamos expor objetos da linguagem C# no JavaScript, encapsulando cada objeto em um objeto JavaScript. Isso permite o gerenciamento da comunicação na fronteira entre o JavaScript e o C#. Por exemplo, quando o contexto de tabelas é solicitado, o objeto C# retorna um objeto JavaScript encapsulado. Quando há hierarquia de objetos, encapsulamos cada nível em um objeto JavaScript. Quando são solicitadas colunas em uma tabela, retornamos uma lista de objetos JavaScript encapsulados.

Limitações

Os limites a seguir se aplicam a sessões em execução para o processamento de scripts de fontes de dados em nuvem personalizadas.
Configuração
Descrição
Valor por padrão
AppSetting configurável?
Definição de locatário configurável?
Megabytes de heap máximo
Quantidade de RAM que o mecanismo V8 pode consumir.
800
Sim
Sim
Limite de tempo da CPU
Tempo em que o mecanismo V8 pode usar os recursos da CPU.
10 minutos
Sim
Sim
Limite de duração da execução
Tempo de execução do mecanismo V8, independentemente de estar usando ativamente os recursos da CPU.
60 minutos
Sim
Sim
Atraso entre chamadas de rede
1 segundo
Sim
Sim
Limite de registros por segundo
Número máximo de registros que podem ser criados por script, por segundo.
5
Sim
Sim
Limite de registros por hora
Número máximo de registros que podem ser criados por script, por hora.
1.000
Sim
Sim
Megabytes de limite de uso da rede
Máximo de megabytes que um script pode enviar e receber pela rede.
5 gigabytes
Sim
Sim
Milissegundos entre solicitações assíncronas de serviço de script
Usado para restringir o tráfego entre o serviço de tarefas e um processo executor de scripts. Se o processo executor de scripts consegue atender à demanda do serviço de tarefas, o tempo de espera cai para 0 milissegundo.
200 milissegundos
Não
Não
Máximo de páginas de resultados do script por solicitação
Número de páginas de dados que o serviço de tarefas pode solicitar do repositório de um executor de scripts.
50
Não
Não
Tamanho máximo da página
Número de linhas de dados que o serviço de tarefas solicita em cada página de dados
10.000
Sim
Sim
Os limites a seguir se aplicam a gerenciadores de agrupamentos de scripts de fontes de dados em nuvem personalizadas.
Configuração
Descrição
Valor por padrão
AppSetting configurável?
Definição de locatário configurável?
Tamanho máximo do agrupamento de scripts
Número máximo de processos de script que podem se executados simultaneamente.
100
Sim
Não
Tamanho mínimo do agrupamento de scripts
Número mínimo de processos de script que podem ser executados de uma vez (usado para preparar os processos executores de script).
0
Sim
Não
Tempo limite de espera do agrupamento de scripts
Tempo máximo em que a solicitação de um processo executor de scripts pode ficar na fila de execução.
180 segundos
Sim
Não
Tamanho máximo da fila do agrupamento de scripts
Número máximo de solicitações em espera de um processo executor de scripts.
1.000
Não
Não

Outros limites:

  • Sem usar o método ai.https.sax.parser no script, há um limite para o tamanho de um arquivo XML para análise. O limite superior de tamanho não é conhecido, mas para referência, é possível analisar um arquivo de 10 mb com um tamanho de heap de 100 mb. Recomendamos usar o ai.https.sax.parser para arquivos grandes.
  • Os scripts não podem acessar IPs dentro do
    Adaptive Planning
    rede.
  • Não há suporte para HTTP, somente para HTTPS.

Problemas conhecidos

  • Durante o processo importData/importStructure, a fonte de dados chama o testConnection. Em uma fonte de dados em nuvem personalizada, isso significa que são dois processos separados do executor de scripts. É possível que o primeiro processo seja criado com êxito para executar o testConnection. O segundo processo para executar o importData/importStructure pode ser enfileirado no gerenciador de agrupamentos e, depois, atinge o tempo limite e falha.
  • As configurações flexíveis irmãs podem ter o mesmo nome de exibição. Portanto, em scripts que acessam uma configuração via getSetting(displayName), somente uma única instância é retornada e não há garantia de qual delas é retornada. O usuários não devem criar configurações flexíveis irmãs com o mesmo nome de exibição.