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 | Sí | Sí |
Límite de tiempo de CPU | Cantidad de tiempo que el motor V8 puede usar recursos de CPU | 10 minutos | Sí | Sí |
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 | Sí | Sí |
Demora entre llamadas de red | 1 segundo | Sí | Sí | |
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 | Sí | Sí |
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 | Sí | Sí |
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 | Sí | Sí |
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 | Sí | Sí |
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 | Sí | 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 | Sí | 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 | Sí | 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 delAdaptive Planningred
- 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.