¿Cómo eliminar un item de una producción por código?
Hola a todos,
Estoy intentado eliminar un item de una producción a través de una rutina que instala y deshabilita items.
Para añadir no tengo problemas, incluso para habilitar y deshabilitar algunos items en particular.
El problema me surge cuando intento eliminar el item de la producción, porque cuando lo hace, la producción se queda inestable y solo vuelve a funcionar cuando se añade nuevamente este item en la colección (o se elimina de forma manual el item en el fichero produccion.cls
Este es mi intento de código:
set produccionName="MyApp.production" set itemDelete = "MyApp.BP.item" if ##class(Ens.Config.Item).NameExists(produccionName,itemDelete, .idItem) { write !,"Removing BP: "_itemDelete set objItem=##class(Ens.Config.Item).%OpenId(idItem) do objItem.%Delete() kill objItem do ##class(Ens.Director).RestartProduction(0,1) }
En el mejor de los casos, no hace nada y el item se mantiene. He probado también usando directamente el método %DeleteId() y algunas funciones de la clase Ens.Config.Production como RemoveItem
¿Alguna idea?
Un gran saludo,
Francisco López
Hay que retocar multiples clases para manipular una producción:
Hay que cargar la definición del XML, manipular esta definición y volver a grabar los cambios al XML.
Aquí un ejemplo:
wow... tengo que probarlo, tiene muy buena pinta
Lo utilizo en una herramienta adhoc de gestión de despliegues de Integración; permite borrar / añadir nuevos componentes a una producción en funcionamiento, y configurarlos con sus parametros que pueden ser distintos en los entornos test / prod.
Probado, implementado y funcionando... una gran idea
Te importaría realizar la misma respuesta en el community en inglés, hasta que no se implememte la funcionalidad de traducir las respuestas aceptadas, hay que estar hacíendolo así. De esta forma quedará registrado en ambos foros, y la solución es muy buena.
https://community.intersystems.com/post/how-delete-item-production-code
Muchas gracias
Aqui otra solución mucho más sencilla
Un saludo,
Francisco López