Saltar al contenido principal
Adaptive Planning
Última actualización: 2023-06-23
Concepto: diseño

Concepto: diseño

La API de CCDS está diseñada para ayudar al operador de integración a conectarse al origen de datos, crear objetos dentro del origen de datos, analizar XML, convertir fechas y utilizar elementos con frecuencia al crear un origen de datos.

Espacios de nombre

El motor de JavaScript proporciona acceso a
Adaptive Planning
Integración a través de los espacios de nombres "adaptable" o "ai" (
Adaptive Planning
) espacio de nombres (Alias). Se asemeja a conocidas bibliotecas de JavaScript como 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');
Debajo del espacio de nombres raíz "
ai
", se exponen varias funciones principales para permitir que JavaScript interactúe con Internet y
Adaptive Planning
Funciones de Discovery/Integración Estas API públicas de JavaScript se modelan utilizando las API de Node.js (https://nodejs.org/) como guía.

Funciones

Las funciones obtienen y configuran datos para que la API sea coherente, proporcionan encapsulación y permiten configuradores y captadores de datos de manera expresa. Las funciones también proporcionan la encapsulación de objetos de C# para exponer solo la funcionalidad de lenguaje de JavaScript y evitar el cruce innecesario del límite entre JavaScript y C# con el fin de mejorar el rendimiento. Las funciones de obtención de datos tienen el prefijo get y las de configuración el prefijo set.
var isEnabled= item.getIsEnabled(); item.setIsEnabled(true);

Contexto de funciones

Cada función llamada por un CCDS toma un objeto de contexto. El contexto incluye objetos de solo lectura para facilitar el procesamiento.
function importData(context) { var tableId = context.getTableId(); var tables = context.getDataSource().getTables(); var setting = context.getDataSource().getSetting('password'); }
El contexto se compone de objetos que se han trasladado desde C#. Para mejorar el rendimiento, se evita exponer objetos de C# en el JavaScript encapsulando cada objeto en un objeto de JavaScript. Así se puede gestionar la comunicación en el límite entre JavaScript y C#. Por ejemplo, al solicitar el contexto de las tablas, se devuelve el objeto de C# encapsulado en un objeto de JavaScript. Cuando hay una jerarquía de objetos, encapsulamos cada nivel en un objeto de JavaScript. Al solicitar las columnas de una tabla, se muestra una lista de objetos encapsulados en JavaScript.

Limitaciones

Los siguientes límites se aplican a una sesión del proceso de secuencia de comandos de CCDS en ejecución.
Opción de configuración
Descripción
Valor por defecto
AppSetting configurable
Opción de configuración de entorno de cliente configurable
Tamaño máximo de pila en megabytes
Cantidad de RAM que puede consumir el motor V8
800
Límite de tiempo de CPU
Cantidad de tiempo que el motor V8 puede usar recursos de CPU
10 minutos
Límite de duración de ejecución
Cantidad de tiempo que el motor V8 puede funcionar con independencia de que esté utilizando o no de forma activa recursos de la CPU
60 minutos
Demora entre llamadas de red
1 segundo
Límite de registros por segundo
Número máximo de registros por segundo que se pueden crear a partir de una secuencia de comandos
5
Límite de registros por hora
Número máximo de registros por hora que se pueden crear a partir de un secuencia de comandos
1000
Límite de uso de la red en megabytes
Número máximo de megabytes que una secuencia de comandos puede enviar y recibir a través de la red
5 gigabytes
Milisegundos entre solicitudes de servicio de secuencia de comandos asíncronas
Se utiliza para limitar el tráfico entre el servicio de tareas y un proceso de ejecución de secuencia de comandos. Si el proceso de ejecución de secuencia de comandos puede satisfacer la demanda del servicio de tareas, el tiempo de espera baja a 0 milisegundos.
200 milisegundos
No
No
Número máximo de páginas de resultados de secuencia de comandos por solicitud
Número de páginas de datos que puede solicitar el servicio de tareas desde el repositorio de un proceso de ejecución de secuencias de comandos
50
No
No
Tamaño máximo de página
Número de filas de datos que solicitará el servicio de tareas en cada página de datos
10 000
Los siguientes límites se aplican al Gerente de grupo de secuencias de comandos CCDS.
Opción de configuración
Descripción
Valor por defecto
AppSetting configurable
Opción de configuración de entorno de cliente configurable
Tamaño máximo del grupo de secuencias de comandos
Número máximo de procesos de secuencias de comandos que se ejecutan simultáneamente
100
No
Tamaño mínimo del grupo de secuencias de comandos
Número mínimo de procesos de secuencias de comandos que se ejecutarán al mismo tiempo (se utiliza para precalentar los procesos de ejecución de secuencia de comandos)
0
No
Tiempo de espera de grupo de secuencia de comandos
Tiempo máximo durante el que se puede poner en cola una solicitud de proceso de ejecución de secuencia de comandos
180 segundos
No
Tamaño máximo de cola de grupo de secuencias de comandos
Número máximo de solicitudes en espera para un proceso de ejecución de secuencia de comandos
1000
No
No

Otros límites:

  • Sin utilizar el método ai.https.sax.parser en la secuencia de comandos, existe un límite en el tamaño de un archivo XML para el análisis. No se conoce el límite de tamaño máximo, pero a modo de referencia, se puede analizar un archivo de 10 MB con un tamaño de almacenamiento dinámico de 100 MB. Se recomienda el uso de ai.https.sax.parser para archivos grandes.
  • Las secuencias de comandos no pueden acceder a las IP dentro del
    Adaptive Planning
    red
  • No se admite HTTP, solo HTTPS.

Problemas conocidos

  • Durante la ejecución de importData/importStructure, un origen de datos llamará a testConnection. Esto significa que hay dos procesos de ejecución de secuencia de comandos independientes en el CCDS. Puede que se cree correctamente el primer proceso para ejecutar testConnection. Sin embargo, es posible que el segundo proceso para ejecutar importData/importStructure esté en cola en el Gerente de grupo y que, finalmente, supere el límite de tiempo y genere un error.
  • Es posible que exista una configuración gemela flexible con el mismo nombre de visualización. Por eso, en las secuencias de comandos que acceden a una configuración a través de getSetting(displayName), solo se devuelve una instancia y no se puede saber cuál es. Los usuarios deben evitar crear configuraciones gemelas flexibles con el mismo nombre de visualización.