¡Hola, amigos!
A menudo, cuando desarrollamos soluciones comerciales, existe la necesidad de desplegar soluciones sin código fuente, por ejemplo, para preservar la propiedad intelectual.
Una de las formas de conseguirlo es utilizar InterSystems Package Manager.
Aquí he pedido a Midjourney que pinte una propiedad intelectual de software:
¿Cómo se puede lograr esto con IPM?
De hecho, es muy sencillo; basta con añadir la cláusula Deploy="true" en el elemento Resource del manifiesto module.xml. Ver Documentación.
He decidido pasaros el ejemplo más simple posible para ilustrar cómo funciona y también para daros una plantilla de entorno de desarrollo que os permita empezar a construir y desplegar vuestros propios módulos sin código fuente. ¡Allá vamos!
A continuación se muestra la aplicación de plantilla de ejemplo de Open Exchange que contiene dos clases:
dc.deployed.ObjectScript y dc.withsource.ObjectScript
Como se deduce del nombre, es un ejemplo de modo despligue sin código fuente. Se utiliza otra clase con código fuente para ilustrar la diferencia y la opción de combinar los modos despliegue y código fuente.
Así es como podéis probarlo:
Iniciad IRIS como:
docker run --rm --name iris-demo -d -p 29091:1972 -p 29092:52773 intersystemsdc/iris-community
y, a continuación, abrid el terminal IRIS:
docker exec -it iris-demo iris session iris
Después, instalad el módulo:
zpm "install deployed-oscript-template"
Se deberían instalar dos clases en el espacio de nombres. Comprobemos el código fuente. Haced la siguiente llamada:
Do ##class(dc.deployed.ObjectScript).Test()
Deberíais ver esto:
USER>Do ##class(dc.deployed.ObjectScript).Test() It is a deployed class without source code!
Y si llamáis a otro método para imprimir el código fuente de la clase:
k text do ##class(%Compiler.UDL.TextServices).GetTextAsString($namespace, "dc.deployed.ObjectScript", .text) w text
Sólo veréis el nombre de la clase y las firmas de los métodos:
Class dc.deployed.ObjectScript
{
ClassMethod Test() As %Status
{
}
}
Y si llamamos a otra clase con código fuente veréis:
USER>Do ##class(dc.withsource.ObjectScript).Test() This class installed with a source code!
USER>k text do ##class(%Compiler.UDL.TextServices).GetTextAsString($namespace, "dc.withsource.ObjectScript", .text) w text
Class dc.withsource.ObjectScript
{
ClassMethod Test() As %Status
{
set a=42
write "This class installed with a source code!",!
return a
}
}
Podéis aprovechar el repositorio para probar la función de modo de despliegue. A continuación se muestran los pasos de ejemplo para gestionarlo.
Clonar el repositorio
$ git clone https://github.com/intersystems-community/objectscript-docker-template.git
Abrid la carpeta en VSCode e iniciad docker en el terminal VSCode:
$ docker-compose up -d
Refrescad la conexión del VSCode para conectar con el contenedor IRIS. Realizad cambios en IRIS ObjectScript Classes y module.xml (o no lo hagáis) y luego cargad el código fuente en IRIS Terminal:
USER>zpm "load /home/irisowner/dev"
Cambiad el cliente IPM de la comunidad predeterminada al registro de prueba (está disponible todo el tiempo para realizar pruebas de IPM):
USER>zpm zpm:USER>repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42
y publicad el módulo en el registro de pruebas:
zpm:USER>publish deployed-oscript-template
Por supuesto, podéis cambiar el nombre del módulo en module.xml (así como los recursos de código que publicáis).
Comprobad si el módulo está publicado:
zpm:USER>find
Como se puede ver el módulo fue publicado con éxito.
Si deseáis probar que el módulo recién publicado se instala sin código fuente es fácil de hacer con otra instancia IRIS iniciada en el contenedor docker. Esto se puede realizar de la siguiente manera. Iniciad un contenedor con IRIS en el terminal:
docker run --rm --name iris-demo -d -p 29091:1972 -p 29092:52773 intersystemsdc/iris-community
Abrid el terminal IRIS:
docker exec -it iris-demo iris session iris
Iniciad la consola IPM:
USER>zpm
Cambiad al registry de IPM para pruebas (test):
repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42
Instalad vuestro módulo (cambiadlo si lo habéis publicado con otro nombre):
zpm:USER>install deployed-oscript-template
Probad el funcionamiento del módulo y el código fuente como hicimos anteriormente.
Y ya está.
¡Felices innovaciones y despliegues con IPM e InterSystems IRIS!