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 doAdaptive Planningrede.
- 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.