?>Array ( [id] => 17 ) Gestión de Conflictos de Nombres y Manejo de Errores al Restaurar Conjuntos de Acciones - WeAreCAS
builtins actionSetFromTable

Gestión de Conflictos de Nombres y Manejo de Errores al Restaurar Conjuntos de Acciones

Scénario de test & Cas d'usage

Business Context

En un entorno de desarrollo colaborativo, un analista intenta cargar una versión estándar de un conjunto de acciones ('commonTools') desde un repositorio central. Sin embargo, ya tiene una versión modificada localmente con el mismo nombre en su sesión. El test debe validar cómo el sistema maneja este conflicto y cómo el parámetro 'name' puede resolverlo.
Data Preparation

Se crea y guarda una 'versión 1' del conjunto de acciones 'commonTools'. Luego, en la sesión de prueba, se define una 'versión 2' del mismo conjunto de acciones para crear un conflicto de nombres.

Copied!
1PROC CAS;
2 /* 1. Crear y guardar la V1 desde un 'repositorio central' */
3 BUILTINS.defineActionSet / name='commonTools' actions={{name='tool_v1', definition='print "Ejecutando herramienta V1.";'}};
4 RUN;
5 BUILTINS.actionSetToTable / name='commonTools' TABLE={name='commonTools_repo_v1', replace=true};
6 RUN;
7 /* 2. Crear una V2 en la sesión actual para simular el conflicto */
8 BUILTINS.defineActionSet / name='commonTools' actions={{name='tool_v2', definition='print "Ejecutando herramienta V2.";'}};
9 RUN;
10QUIT;

Étapes de réalisation

1
Se intenta restaurar 'commonTools' desde la tabla 'commonTools_repo_v1' sin renombrarlo. Se espera un error, ya que 'commonTools' ya existe en la sesión.
Copied!
1PROC CAS;
2 BUILTINS.actionSetFromTable /
3 TABLE={name='commonTools_repo_v1'};
4 RUN;
5QUIT;
2
Se resuelve el conflicto restaurando el conjunto de acciones desde la tabla pero asignándole un nuevo nombre, 'commonTools_v1_loaded', usando el parámetro 'name'.
Copied!
1PROC CAS;
2 BUILTINS.actionSetFromTable /
3 TABLE={name='commonTools_repo_v1'},
4 name='commonTools_v1_loaded';
5 RUN;
6QUIT;
3
Se verifica que ambos conjuntos de acciones ('commonTools' y 'commonTools_v1_loaded') coexisten en la sesión actual.
Copied!
1PROC CAS;
2 BUILTINS.actionSetInfo; /* Listar todos los action sets */
3 RUN;
4 commonTools.tool_v2; /* Ejecutar V2 */
5 RUN;
6 commonTools_v1_loaded.tool_v1; /* Ejecutar V1 */
7 RUN;
8QUIT;

Expected Result


El primer paso falla con un error indicando que el conjunto de acciones ya existe, lo cual es correcto. El segundo paso se ejecuta con éxito. El tercer paso muestra ambos conjuntos de acciones en la lista de 'actionSetInfo' y las llamadas a 'tool_v1' y 'tool_v2' producen sus respectivos mensajes, demostrando que el parámetro 'name' es la solución efectiva para los conflictos de nombres y permite la coexistencia de múltiples versiones.