?>Array ( [lang] => es [id] => 17 )
Scénario de test & Cas d'usage
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.
| 1 | PROC 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; |
| 10 | QUIT; |
| 1 | PROC CAS; |
| 2 | BUILTINS.actionSetFromTable / |
| 3 | TABLE={name='commonTools_repo_v1'}; |
| 4 | RUN; |
| 5 | QUIT; |
| 1 | PROC CAS; |
| 2 | BUILTINS.actionSetFromTable / |
| 3 | TABLE={name='commonTools_repo_v1'}, |
| 4 | name='commonTools_v1_loaded'; |
| 5 | RUN; |
| 6 | QUIT; |
| 1 | PROC 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; |
| 8 | QUIT; |
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.