Introducción:
El propósito de este blog es mostrar el uso de una matriz multidimensional con las APIs de scripting de SAC Analytics Designer.
Más específicamente, en relación con las tareas de calendario, ya que las funcionalidades integradas me parecían insuficientes.
El contexto principal es recuperar información de las tareas de calendario para el ciclo de planificación actual ordenado por la secuencia de pasos.
Configuración:
Existen varias tareas de calendario en un modelo de planificación. Queremos acceder y usar un subconjunto de estas basado en sus nombres (y ordenados por el nombre).
Problema:
Los IDs de las tareas de calendario se pueden recuperar a través de la función de integración de calendario. Además, los nombres de estas tareas luego se pueden acceder.
Sin embargo, no hay un objeto para filtrar y ordenar por nombre y aún tener disponible el ID.
Esto podría lograrse con múltiples variables y bucles múltiples a través de ellos, pero sería más eficiente si tuviéramos una matriz de dos columnas con toda la información disponible.
La última solución se muestra a continuación.
Implementación:
La posibilidad general de trabajar con matrices multidimensionales en el Designer se describe en el Manual del Desarrollador (
https://d.dam.sap.com/a/3Y16uka/DeveloperHandbookSACAnalyticsDesigner_v12.1_final.pdf
) - en la Versión 12.1 se puede encontrar en el capítulo 4.4.14.
Al igual que en otros casos, las funcionalidades del dialecto JavaScript de Application Design no son tan potentes como en los desarrollos estándar de JavaScript, pero con algunos trucos se puede lograr una buena solución.
En nuestro caso de uso con tareas de calendario, primero recuperaremos algunas tareas de ejemplo:
var rel_tasks = CI_1.getRelatedTaskIds();
Eso nos da las siguientes 8 entradas
rel_tasks
Ahora podemos crear la matriz bidimensional con 8 filas (basado en la longitud de "rel_tasks"):
var numRows = rel_tasks.length;
var arr1D = ArrayUtils.create(Type.string);
var arr2D = [arr1D];
for (var i = 1; i < numRows; i++) {
arr2D.push(ArrayUtils.create(Type.string));
}
La matriz "arr2D" es ahora una matriz vacía de 2 columnas y 8 filas de tipo string.
La siguiente parte es la operación crucial, para una mejor comprensión aquí se encuentran los nombres de nuestros 8 valores de ejemplo en el orden de sus IDs:
STEP1_2022